1、申 请 I D:d0gkiller87
2、个人邮箱:vung.sung@gmail.com
3、原创技术文章:
分分钟解锁 StreamLabs OBS 付费功能 (Prime) 1. 介绍:StreamLabs OBS 是个国外非常有名的直播软件,支持利用显卡高效进行游戏录制,且支持多个直播平台 (油管,Twitch,Facebook) 等。但若想同时在多个平台直播,需要先购买付费版 Prime 会员。
2. 缘由:
我国外一个好哥们突然跟我说他最近想搞直播,试了好几个最後决定用上面这款软件。然而这软件有些 Bug,他怕付费买了会员後不好用,希望能先测试一下。
找了下互联网好像没有现成的 pojie 版。不过看见哥们有难,身为好哥们当然立马答应帮忙 (*/ω\*)
3. 分析:
看见 OBS (Open Broadcaster Software) 这个 O(pen) 字样,就知道是个开源软件。果然马上在 GitHub 上找到了 官方Repo,还附上了编译打包方式。
既然源码都有了,那也不用多折腾了。第一个想法就是把那些判断 isPrime 的变数於源码修改掉,然後重新编译打包。
用 GitHub 内建的代码搜索功能搜下关键字 "prime":
发现搜到一堆资源/多国语言文件,往後翻了几页终於发现了特别的关键字 "isPrime",并且从档名後辍 (.ts) 看,主要的程序逻辑是用 TypeScript 写的。趁机赶紧升级下咱们的关键字,改成搜索 isPrime 过滤掉无用资讯。
太好了,果然马上搜到。第二个文件看起来是我们要的,储存了 isPrime 的 field 函数 (get, set),以及 isPrime 变数本身。
现在目的只有一个:无论透过任何方式,只要把相关属性都改成 true 就行了。
4.破解:
立马把 repo Clone 下本地。但在修改前,先试试能不能编译成功,照着上面的官方指示,於目录执行指令:
[Bash shell] 纯文本查看 复制代码 yarn install # 环境配置
yarn compile # 编译
yarn start # 启动程序
跑了半小时,终於打开了。按了下 F12 还跳出了开发者工具。
等等,既然有了 F12,试试直接动态修改:
果然成功了,设置里的付费功能都解锁了。
赶紧叫国外哥们试试,结果发现他按了 F12 啥事都没发生。我还以为是他操作错了,自己下载了稳定版安装包试试,结果还真不行。
调查了一番,发现这个软件是用 Electron 写的,只有开发者版本 (前面 GitHub 的 master 分支载下来的就是) 预设启用了 F12,Production (发布) 版本是不启用调试功能的。
整理一下,现在的解锁通道有:
1) 直接修改源码文件,重新打包成发布版本。(麻烦,档案大,要手动更新)
2) 於调试版本开 F12 注入解锁代码。(普通用户没这个版本)
3) 於发布版本,用特殊方式注入解锁代码。 (最快) (XSS? 强制启用调试功能?)
搜了一下,发现 Electron 支持透过 Chrome 远程调适,只要在 argv 传入参数 --remote-debugging-port=xxxx,程序就会於指定埠号监听远程调适。
分析代码的同时,还发现程序会检测多个和调试有关的环境变数如:SLOBS_PRODUCTION_DEBUG=1、NODE_ENV=xxx,然而试了一下发现对我们的任务没啥帮助。
又再搜了一下,发现竟然有高人写了 Electron 注入工具,原理就是利用上面的 remote-debugging-port,目的就是启用 F12。这样我们就可以透过方法 (3) 制作一个 Loader (启动器) 了。
把注入工具 Clone 下来,修改一下代码,在启用 F12 的代码处再附加我们的解锁代码:
[JavaScript] 纯文本查看 复制代码 try {
let sv = servicesManager.instances.UserService;
sv.isPrime = sv.state.isPrime = true;
sv.SET_PRIME = ()=>{};
} catch(e){};
用 PyInstaller 打包成 .exe,
[Bash shell] 纯文本查看 复制代码 pyinstaller __main__.py -F --noupx -n OBSLoader -w # --icon StreamlabsOBS.ico
启动器制作完成!扔到安装目录下运行看看:
成功! 顺便还启用了 F12。
编译好的启动器: 载点 (密码: 52pojie) |