原理概述

Emby 的 Premiere 功能验证,本质上是其客户端(前端JS)与服务端(C#程序集)向官方域名 mb3admin.com 发起请求,验证许可证状态。 破解的核心思路就是“狸猫换太子”: 简单来说,本文的原理是通过建立一个伪站点来代替官方服务器进行中间人替换,返回所需的请求数据,这可以通过修改几个关键文件来实现,从而绕过Emby的验证机制。

示例请求数据:

首先需要建立一个伪站来代替请求。 将Emby中所有指向 mb3admin.com 的请求地址,替换为你的伪站地址(如 yubanmei.com)

  1. 设备验证:

    • URL: https://mb3admin.com/admin/service/registration/validateDevice
    • 返回:
      {"cacheExpirationDays": 365, "message": "Device Valid", "resultCode": "GOOD"}
      
  2. 设备状态:

    • URL: https://mb3admin.com/admin/service/registration/getStatus
    • 返回:
      {"deviceStatus":"0", "planType":"Lifetime", "subscriptions":{}}
      
  3. 验证信息:

    • URL: https://mb3admin.com/admin/service/registration/validate
    • 返回:
      {"featId":"MBSupporter", "registered": true, "expDate":"2099-01-01", "key": 112}
      

导出和修改必要的文件:

从Emby服务器中导出以下文件,并修改其中的请求地址:

文件路径 作用 修改目标
/system/Emby.Server.Implementations.dll 核心服务组件,包含验证URL常量 修改 PluginSecurityManager.MBValidateUrl 字段
/system/MediaBrowser.Model.dll 数据模型,包含用户权限属性 修改 PluginSecurityInfo.get_isMBSupporter() 方法,直接返回 true
/system/Emby.Web.dll Web端核心库 替换嵌入资源 connectionmanager.js
/system/dashboard-ui/embypremiere/embypremiere.js 前端 Premiere 页面逻辑 替换其中的 mb3admin.com 字符串
/system/dashboard-ui/modules/emby-apiclient/connectionmanager.js 前端 API 连接组件 替换其中的 mb3admin.com 字符串

修改目标请求地址

  1. 下载使用 dnSpy 修改 DLL

    • 下载并安装 dnSpy
  2. 修改JavaScript文件:

    • embypremiere.jsconnectionmanager.js中,找到请求地址mb3admin.com并将其替换为你自己的伪站点地址(如:yubanmei.com)。
  3. 使用dnSpy修改DLL文件:

    • 下载并安装dnSpy

    修改Emby.Web.dll:

    • 打开Emby.Web.dll,在Emby.Web.dashboard_ui.modules.emby_apiclient.connectionmanager.js资源中右键点击,选择“保存”并将文件保存到本地,然后右键删除文件。
    • 然后打开Emby.Web.dashboard_ui.modules.emby_apiclient.connectionmanager.js找到请求地址mb3admin.com并将其替换为你自己的伪站点地址后保存。
    • 再次到资源中随便选中一个文件右键,创建文件资源,然后选择修改后的文件添加回去。

    修改MediaBrowser.Model.dll:

    • MediaBrowser.Model.dll中,找到PluginSecurityInfo类的get_isMBSupporter()方法,直接将return语句修改为return true;

    修改Emby.Server.Implementations.dll:

    • Emby.Server.Implementations.dll中,找到PluginSecurityManager,修改MBValidateUrl字段,将其指向你自己的请求地址。
    • 然后将dnSpy右上角的c#改为TL,然后ctrl+f进行查找mb3admin.com会有两个结果,我们选择第二个修改为自己的伪站点地址,大概再1407行。
  4. 替换文件并重启服务:

    • 完成所有修改后,我们保存编译,然后将更新后的文件替换回Emby服务器,或使用Docker volumes进行替换。
    • 在Emby后台找到Emby Premiere选项,输入任意字符,即可解锁小金标。

Docker配置示例

如果你使用Docker部署Emby,以下是一个配置示例:

version: '2.1'
services:
  emby:
    image: emby/embyserver:4.8.1.0
    container_name: emby
    volumes:
      - ./config:/config
      - ./system/embypremiere.js:/system/dashboard-ui/embypremiere/embypremiere.js
      - ./system/connectionmanager.js:/system/dashboard-ui/modules/emby-apiclient/connectionmanager.js
      - ./system/Emby.Server.Implementations.dll:/system/Emby.Server.Implementations.dll
      - ./system/MediaBrowser.Model.dll:/system/MediaBrowser.Model.dll
      - ./system/Emby.Web.dll:/system/Emby.Web.dll
    ports:
      - 8096:8096
    environment:
      - TZ=Asia/Shanghai

这样,你就可以通过伪站点和自定义请求数据绕过Emby的激活和验证机制,获得所需的功能。如果有任何疑问或需要进一步的帮助,请随时联系我!