一、前置准备
1、工具:dnSpy
2、需要修改的文件:
├─Emby.Server.Implementations.dll
├─Emby.Web.dll
├─MediaBrowser.Model.dll
└─dashboard-ui
├─embypremiere
│ └─embypremiere.js
└─modules
└─emby-apiclient
└─connectionmanager.js
二、修改文件
1. Emby.Server.Implementations.dll
打开dnSpy -> 文件 ->全部关闭。将Emby.Server.Implementations.dll 拖拽进去开始编辑。
1.1 修改第一处链接:


右键 ->编辑字段


改为 "https://yourdomain.com/4670/registration/validate.php"
1.2 修改第二处链接:




此处链接有些莫名其妙的要求,经测试:改为"https://yourdomain.com/admin/service/registration/validate.php" 时 服务器启动报错(只测试了windows平台),所以此处改为:"https://yourdomain.com/4670/registration/validate.php",测试可用。
修改完成后点击:文件 -> 保存模块
2. Emby.Web.dll
此文件负责 crack网页客户端

打开刚才保存的Emby.Web.dashboard_ui.modules.emby_apiclient.connectionmanager.js文件。
查找位置,并将认证域名改为自己的,然后保存。

返回dnSpy,将原来的Emby.Web.dashboard_ui.modules.emby_apiclient.connectionmanager.js删掉

右键 ->创建文件资源,将刚才修改过的Emby.Web.dashboard_ui.modules.emby_apiclient.connectionmanager.js 放进来。然后保存模块。

3. MediaBrowser.Model.dll
此文件负责显示激活页面,不做这步也能使用。
将dnSpy 从IL恢复到C#



然后保存模块。
4. embypremiere.js
找到如下链接并替换

5. connectionmanager.js
找到如下链接并替换

三、替换文件
关闭服务器,将上述文件全部替换到原文件位置。
四、搭建伪认证站点
4.1
即保证访问如下认证链接时返回对应的json字符串即可,并且注意跨域问题:
https://yourdomain.com/4670/registration/validate.php
{
"featId": "MBSupporter",
"registered": "true",
"expDate": "2099-01-01",
"key": ""
}
https://yourdomain.com/admin/service/registration/validateDevice.php
{
"cacheExpirationDays": "365",
"resultCode": "GOOD",
"message": "Device Valid",
"isPremiere": "true"
}
https://yourdomain.com/admin/service/registration/getStatus.php
{
"deviceStatus": "1",
"planType": "Lifetime",
"subscriptions": {
"isValid": "1",
"accessDevice": "100"
}
}
4.2 nginx.conf 参考(nginx_v1.24.0):
在 /etc/nginx/conf.d/yourdomain.com 目录下,按照URL对应路径放置php文件。
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
gzip on;
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /SSL/yourdomain.com/yourdomain.com.crt; # Specify the certificate location
ssl_certificate_key /SSL/yourdomain.com/yourdomain.com.key; # Absolute path to the certificate key
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # SSL protocols to use
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # SSL ciphers to use
ssl_prefer_server_ciphers on;
root /etc/nginx/conf.d/yourdomain.com; # Specify the root directory of your PHP files
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
location /admin/service/registration/validateDevice.php {
default_type application/json;
try_files $uri =404;
}
location /admin/service/registration/getStatus.php {
default_type application/json;
try_files $uri =404;
}
location /4670/registration/validate.php{
default_type application/json;
try_files $uri =404;
}
location /admin/service/appstore/register.php {
default_type application/json;
try_files $uri =404;
}
location /emby/Plugins/SecurityInfo.php {
default_type application/json;
try_files $uri =404;
}
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Methods *;
# add_header Access-Control-Allow-Credentials true;
access_log /var/log/nginx/mysite/yourdomain.com.log;
error_log /var/log/nginx/mysite/yourdomain.com.error.log error;
}
Comments NOTHING