在本地手机/电脑上已测试通过。此方案通杀iOS/MacOS/Linux/Android 全平台,只要你找得到apploader加载我的代码就可以bypass,因为用的原理是js原生api拦截。
我发现网上这些搞Emby Server / Client 破解的一个个都只会dllspy然后提取资源 替换网址 然后mitm或者自己搭建一个api接口。
而且大部分还是误人子弟,瞎改。进而还衍生出所谓的B站大佬发点修改后的Emby Apk 言语之际居然比我还狂-----如果改改html也是大佬的话。
原理: 利用html初始化后的事件进行jsvm层的api劫持。
2024.03.08 全平台通杀代码无需反编译 by QiuChenly
/Applications/EmbyServer.app/Contents/Resources/dashboard-ui/apploader.js
function onDone(): 函数开头加入以下拦截代码
// 重写全局的 fetch 函数
//powered by QiuChenly use node module hook
(window.fetch1 = window.fetch),
(window.fetch = (url, options) => {
console.log("加载的URL是:", url);
//如果url 包含 https://mb3admin.com/admin/service/registration/validateDevice 则直接返回
if (
url ===
"https://mb3admin.com/admin/service/registration/getStatus"[color=#d4d4d4] ||
url.includes(
"https://mb3admin.com/admin/service/registration/validateDevice"[/color]
)
) {
return new Promise((resolve, reject) => {
resolve({
status: 200,
headers: {
get: () => "application/json",
},
json: () => {
return {
cacheExpirationDays: 999,
resultCode: "GOOD",
message: "Device Valid",
// 上半部分是分开的
deviceStatus: 0,
planType: "超级会员",
subscriptions: [
{
autoRenew: true,
store: "秋城落叶",
feature: "all",
planType: "超级会员",
expDate: "直到2099年12月31日以后",
},
],
};
},
});
});
}
return window.fetch1(url, options);
});
示例App获取地址: https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.14.0/embyserver-osx-x64-4.7.14.0.zip
https://mb3admin.com/admin/service/registration/validateDevice?xxxx 后面是随机生成的不可逆的hash数据,所以我没打码。
还真搜索到了,这么容易就破解了吗?我不信。
答案只有一个,这个js文件无论内容是什么都不重要,重要是的这个文件存在就可以了,只要app拦截页面访问请求,在代码中构造一个内嵌的js文件,就可以做到这种效果。那么是哪个文件呢?
当然是我们最爱的暴力搜索辣!
终于搜索到了。
这个文件是Emby.Web.dll,是C#动态库,那么我们有请windows和dnSpy上场!
在弹出的窗口中选择自己保存的同名文件即可。
至此,破解完毕,只需要修改一个js文件和一个dll文件中的js资源文件即可。