1. 介绍:
StreamLabs OBS 是个国外非常有名的直播软件,支持利用显卡高效进行游戏录制,且支持多个直播平台 (油管,Twitch,Facebook) 等。
但若想在多个平台直播,需要先购买付费版 Prime 会员。
obs_osu.png
2. 缘由:
我国外一个好哥们突然跟我说他最近想搞直播,试了几个最後决定用这款软件。
然而这软件有些 Bug,他怕付费买了会员後不好用,希望能先测试一下。
20200827.png
找了下互联网好像没先人动过这个软件。看来只能自己处理了 (*/ω\*)
202008272.png
3. 分析:
软件名称是 OBS (Open Broadcaster Software),看见这个 O(pen) 字样就知道是个开源软件。
果然马上在 GitHub 上找到了官方 Repo (stream-labs/streamlabs-obs),还附上了编译及打包方式。
obs_git_5.png
源码都有了,那也不用瞎折腾了。第一个想法就是把那些判断是否为 prime 的变数於源码修改掉,然後重新编译打包。
直接用 GitHub 内建的代码搜索功能搜下关键字 "prime",
发现搜到一堆资源/多国语言文件。往後翻了几页终於发现了特别的关键字: "isPrime"
obs_git_1.png
并且从档名後辍 (.ts) 看,主要的程序逻辑是用 TypeScript 语言写的。
趁机升级下咱们的关键字,改为搜索 "isPrime" 过滤掉无用资讯。
obs_git_2.png
太好了,果然马上搜到,看来咱们要的就是这个文件 (app/services/user/index.ts)。储存了 isPrime 的栏位函数 (get, set),以及 isPrime 变数本身。
现在目的只有一个:透过任何方式,把相关属性都改成 true 就行了。
4. 解锁:
立马把 repo clone 下本地。
修改前,先来试试能不能编译成功。照着上面的官方文档,於目录下执行指令:
[Bash shell] 纯文本查看 复制代码
yarn install # 依赖安装yarn compile # 编译yarn start # 启动程序
跑了半小时,終於編譯好並打开了。按下 F12 还能跳出开发者工具。
obs_f12.png
等等... 既然有了 F12,试试直接动态修改:obs_f12_2.png
果然生效了,设置里的付费功能都解锁了。
obs_settings.png
赶紧叫国外哥们照着做一遍,卻发现他按了 F12 没有反应。原本还以为是他操作错了,自己下载了稳定版安装包试了下,结果还真不行。
调查了一番,发现这个软件是用 Electron 写的,只有开发版本 (自己编译的就是) 预设启用了 F12 等调试功能,Production (发布) 版本默认则是不启用的。
整理一下,现在的解锁方向有:
1) 直接修改源码文件,重新打包成发布版本。(麻烦,档案大,要手动更新)
2) 於开发版本,手动打开 F12 注入解锁代码。(普通用户没这个版本,每次重启软件要重新输入)
3) 於发布版本,用特殊方式注入解锁代码。(快速方便) (XSS? 强制启用调试功能?)
搜了一下,发现 Electron 支持透过 Chrome 远程调适,只要於程序发布版 argv 传入参数 --remote-debugging-port=xxxx,程序就会於指定埠号监听远程调适服务。
又再搜了一下,发现 GitHub 上竟然有高人写了 Electron 注入工具 (tintinweb/electron-inject),原理就是利用上面的 remote-debugging-port,目的是注入代码启用 F12。
elctron_injector.png
这样我们就可以透过方法 (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
启动器制作完成!扔到安装目录下运行看看:
OBSLoader.gif
成功!还顺便启用了 F12!
编译好的加载器: https://115.com/s/sw38iqf3nty (访问码:g121;压缩包密码: 52pojie)
更新:
留意上图 Sublime 红色警告标示处,结尾 """ 处换了个行 JavaScript 就不给过了,上个发布版本不小心多了一行,测试时打开才猛然发现失效,已修复。
小白第一次发文,从帐号白嫖帖 (会员申请) 那搬来的。
排版很差、没国内云盘号,望各位师傅不吝指教。