0x0 背景

风灵月影宗弟子翻找宗主秘籍时再次看到了WeMod,之前有稍微了解过是尝试做统一整合的修改器平台。不过风大自己也有修改器管理程序就没太在意WeMod。这次看到WeMod有游戏内Overlay,倒是很吸引人。但可惜是付费功能,本想着不贵的话就入手了,但发现WeMod是订阅制,且年费高达70美金。偶尔才有时间玩游戏,为了这个功能未免有些太贵,尝试白嫖一下。

0x1 修改

安装完成后尝试抓包看下是否能够从MitM入手,发现抓不到有用的连接。打开安装目录发现是熟悉的Electron应用。

app-VER\resources下可以看到app.asar文件,其为压缩后的Electron资源文件。使用Nodeasar即可解压。

安装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等不经过服务器的付费功能。

最后修改:2022 年 05 月 10 日
如果觉得我的文章对你有用,请随意赞赏