0x0 背景
风灵月影宗弟子翻找宗主秘籍时再次看到了WeMod,之前有稍微了解过是尝试做统一整合的修改器平台。不过风大自己也有修改器管理程序就没太在意WeMod。这次看到WeMod有游戏内Overlay,倒是很吸引人。但可惜是付费功能,本想着不贵的话就入手了,但发现WeMod是订阅制,且年费高达70美金。偶尔才有时间玩游戏,为了这个功能未免有些太贵,尝试白嫖一下。
0x1 修改
安装完成后尝试抓包看下是否能够从MitM入手,发现抓不到有用的连接。打开安装目录发现是熟悉的Electron
应用。
app-VER\resources
下可以看到app.asar
文件,其为压缩后的Electron
资源文件。使用Node
包asar
即可解压。
安装asar
:
npm install -g asar
解压到app
文件夹:
asar extract app.asar ./app
开启抓包及应用调试
之前在实现PC端QQ当前子频道消息防撤回有提到过如何调试Electron
应用,这里同理。解压asar
后打开App
入口index.js
搜索关键词commandLine
可以看到bootstrap()
方法:
function bootstrap() {
B.commandLine.appendSwitch("no-proxy-server"); // 设置应用不走代理
if (C.devMode) {
B.commandLine.appendSwitch("ignore-certificate-errors", "true");
if (B.commandLine.hasSwitch("electron-reload")) {
n(320)(`${__dirname}\\output`, { electron: process.execPath });
}
if (B.commandLine.hasSwitch("wemod-temp")) {
C.windowOptions.webPreferences.partition = "temp";
}
}
可以看到此方法里有设置应用不走代理,可以顺手注释掉。在其后添加一行开关方便我们进行调试:
B.commandLine.appendSwitch('remote-debugging-port', '8315');
重新打包资源
asar pack .\app\ app.asar
定位
打包替换资源后启动应用,可以发现能够正常抓包了,且数据并未加密。找到/v3/account
调用,可以看到返回值如下:
{
"uuid": "xxx",
"username": "xxx",
"email": null,
"profileImage": "/avatars/default/xxx/{size}.png",
"checkoutState": "mixed",
"country": "xx",
"flags": 0,
"audience": 1,
"subscription": null,
"joinedAt": "2022-xx-xxTxx:xx:xxZ",
"boosts": 0,
"boostedGames": {},
"followedGames": {},
"answeredPolls": [
"25"
],
"releaseChannels": []
}
这其中有个subscription
字段很明显值得调查下。(但我眼瞎了当时没发现这个字段,进而在代码中搜索pro
来逐渐定位到此字段)
在output/app-bundle.js
中搜索此字段可以发现确实为我们需要着手的目标。代码中有许多处对subscription
进行判断,那么只需要在赋值时修改此字段,那么就可以一劳永逸啦。搜寻中可以找到getUserAccount()
方法,只需修改这里即可。
商业软件,详细过程略
尝试可以使用Overlay
等不经过服务器的付费功能。