Wemod-通过伪造登录服务器来达到破解的目的

前言:

看到了吾爱论坛大佬的破解思路,大概就是Wemod是使用Electron制作的,而且Electron程序基本上就相当于开源,我们可以通过npm的asar的命令来解析出软件的js代码

本篇文章的破解方法与吾爱大佬的方法还是有一些不一样的,吾爱大佬是通过直接修改按钮的可用性,而本篇文章的方法是直接给账户赋值“pro”订阅,本篇文章方法的优势就是一些新功能比如“游戏内页面”都可以使用,而吾爱大佬所破解的是没有这个选项的,包括一些提示之类的都可以隐藏掉,相当于从底层进行破解

提示:单机游戏使用修改器无可厚非,但联机游戏还是不要使用此类工具。

1.安装nodejs

因为需要用到npm,所以需要先安装nodejs(https://nodejs.org/en/)

这里就不介绍如何安装了,一路Next就好

2.安装asar

打开电脑的CMD,输入

1
npm install asar

就可以安装了

安装完毕后,在cmd中输入 asar 应该会看到如下提示

3.开始破解

解析asar文件

首先打开Wemod的安装目录,一般右键快捷方式“打开文件所在位置”就好

然后打开 app-..* 这个是版本号,可能不太一样,就比如我这个就是 app-8.2.0

最后打开resources文件夹

该文件夹中的 app.asar 就是封装好的程序代码,我们需要用上面安装的asar把它扒出来

在地址栏输入 cmd

在cmd中输入

1
asar e app.asar code

此时,就会多出一个code文件夹,我们点开这个文件夹

其中核心内容在 output/app-bundle.js 这个文件里面 , 在 index.js 中,可以把 devMode打开,方便调试(可选)

我们打开 output/app-bundle.js 这个文件

是一个这样的js文件,如果需要的话可以按 shift+alt+f 格式化一下(前提是装了格式化js文件的vscode插件,这里推荐 Prettier - Code formatter)

格式化后大概是这样的↓

通过调试控制台不难看出,登录请求都是通过 https://api.wemod.com/v3/account 来处理的

现在我们可以通过伪造一个登录服务器,来返回假的数据,来骗过程序,让程序以为我们是Pro用户

我的解决方法是通过PHP伪造登录服务器,PHP代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
header('Date:Fri, 15 Jul 2022 09:46:59 GMT');
header('Content-Type:application/json');
header('Transfer-Encoding:chunked');
header('Connection:keep-alive');
header('vary:Accept-Encoding');
header('Cache-Control:no-cache, private');
header('etag:W/"wkX7PA+DMYUPB/q1jCOP49A0ai8="');
header('x-ratelimit-limit:60');
header('x-ratelimit-remaining:59');
header("content-security-policy:frame-ancestors 'none'");
header('CF-Cache-Status:DYNAMIC');
header('Expect-CT:max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"');
header('Report-To:{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=QLhts7ENs6KL3SnBBkEM8ERrw%2BfR%2BHwMC39flJHfVCuJtacabj2OZXJ0V8coYuyV1jZuxThqkOqKW2NcUjQ8G1DnnBScGHVpeL9GHRo5dp8kTQBApoMyJfbWARfokuc%3D"}],"group":"cf-nel","max_age":604800}');
header('NEL:{"success_fraction":0,"report_to":"cf-nel","max_age":604800}');
header('Server:cloudflare');
header('CF-RAY:72b192fa1f9396c0-SJC');
//这里是一些返回头

$arr=[
"uuid" => "4b85a1fa-c08c-4876-bf5e-9aabb3f45500", //UUID,无需更改
"username" => "返回的用户名", //可以改成自己需要的
"email" => null,
"profileImage" => "返回的用户头像",
"checkoutState" => "latest",
"country" => "CN", //这是地区,通常不用更改
"flags" => 1,
"audience" => 1,
"subscription" => 'pro', //这里的pro就是PRO版本
"joinedAt" => "2022-07-12T05:14:24Z",
"gdpr" => [
"consentRequired" => false,
"consentGiven" => false
],
"boosts" => 0,
"boostedGames" => [],
"followedGames" => [],
"answeredPolls" => [
"25"
],
"releaseChannels" => [],
"experiments" => []
];

exit(json_encode($arr));

我们需要把这段代码部署到服务器上,就比如我把它部署到了 https://bingling.me/wemod/login/index.php 我们就需要记住 https://bingling.me/wemod/login/ 下面要用到

好的,现在我们返回刚刚的 app-bundle.js 文件,找到如下

这里的“v3/account”其实就是上面的 https://api.wemod.com/v3/account ,只不过前面省略掉了,我们现在把他改成刚刚我们部署的那个php文件的地址,我这里就改成 https://bingling.me/wemod/login/

如果没有格式化代码,找不到这一行,可以将 “return this.#t.get(“/v3/account”)” 全局替换为 “return this.#t.get(“https://***”)” (没有引号),应该只会替换一处,因为这个代码只出现了一次

最后,无论有没有格式化js文件,修改完毕后直接保存即可,然后在上面解析 app.asar 文件的 cmd 中输入

执行前记得先关闭Wemod

1
del app.asar && asar pack code app.asar

然后再打开Wemod,应该就会显示Pro了

游戏内修改也是可用的

最后

这个项目目前并不完善,比如php文件做伪造服务器,其实理论上html就可以实现,但我在这方面没有深入研究,如果有大佬知道也欢迎修改一下~

Wemod-通过伪造登录服务器来达到破解的目的

https://iling.cool/archives/Wemod.html

作者

芙樱竹

发布于

2022-07-15

更新于

2022-09-17

许可协议

评论

:D 一言句子获取中...