博文記錄
破解相关 2019-06-08 15:49:45 3009 3

6月1日前夕,就收到了王者荣耀辅助的透视脚本,本没心思去看。节日当天闲来无事,就尝试配置了一下,经过测试发现很稳定,后续使用是需要付费的。

这款辅助是通过GG修改器读取内存数据,并将其传送给令一客户端将对手位置渲染出来(采用浮动层),并非在修改原游戏内存,实现全图透视。毕竟修改内存会引起各种风险问题。

使用效果截图

 

毕竟因为是付费的, 一天5元钱,也不便宜,想着尝试破解一番,研究了许久,最终还是搞定了。

在这里简单记录下过程。

正文

辅助软件主程序

主要的渲染绘图主程序,也就是绘制对方视野的那个应用时付费入口。需要通过购买卡密激活,那就从这里入手。

测试发现卡密是需要输入完整16位的,客户端会验证长度,提交16位长度的任意卡密,通过抓包软件可正常看到具体内容。

抓包查看

安卓抓包软件使用的是PacketCapture,利用VPN原理过滤数据,实现抓包,优点是不需要借助其他设备,缺点是并不能修改响应结果。折腾最终,还是放弃。

最终换上FD在windows上运行拦截抓包。

这里可以清楚的看到请求包和返回包,HTTP并没有加密。里面参数存在IMEI应该会绑定设备,这个不去研究。

一个daili(代理)ID,是上下级分销关系,可忽略。

sign接口是注册你的卡密,也就是激活并销毁,之后这个卡密也就废掉了。

login接口是通过注册接口返回的数据一系列操作得到的password,拿去验证。

通过FD软件抓包

此时,我们换上FD软件。

菜单栏选择以下位置,允许监听局域网其他设备。

Tools - fiddler options

 

手机端和PC链接同一局域网,且WIFI设置里代理选项设置为PC的ID,及FD的端口(8888)。

配置完毕后,尝试手机访问网页,正常的话FD软件会有包体流动。

 

此时开启返回包拦截,即以下菜单。

Rules - Automatic Breakpoints - After Responses (勾选)

 

此时打开手机的辅助软件,如果已经打开,先关闭后再重新打开。

抓包提示:

为避免包混淆,建议开启前将FD包列表清空,若已开启拦截响应包,则点击GO放行,再清空。保证手机没有其他软件发送数据包,可先关闭。

进入辅助软件后,默认会有一个验证包发送,是软件自身发送的,不是点击激活按钮发送的。

通过拦截到的数据包,修改响应结果来实现破解。

点击左侧的Login包,通过右侧Inspectors查看细则。

尝试修改到期时间,提交完成(Run to Completion),客户端提示验证失败。

看来并不能简单的通过修改到期时间实现,此时就像知道这里面到底是怎么一个验证逻辑。

反编译APK解包

一边挂着扫描器,看这个服务器有没有漏洞,若拿到服务器也便可全然知道。

一边把APK提取出来,通过反编译查看里面的逻辑。

使用apktool.bat实现,解包

apktool.bat d wzzy2.apk

解包之后,在资源里寻找我们刚才抓包的网址HOST,或者特殊关键字。

我通过NOTEPAD++搜索HOST找到了他的逻辑校验过程。

主要代码在main.lua里面

可以看出来这个apk主要封装的lua脚本,这个资源目录下还有各个角色的头像,以及未识别到的通过红色背景代替。

md5.lua是一个通用的lua校验包,就不多看了。

Github地址:https://github.com/kikito/md5.lua

LUA脚本反编译解包

打开main.lua,发现还是加密的。

又得折腾许久,尝试过各种解密工具没有成功。最后通过lua反编译工具 unluac 成功解密。

unluac

下载地址:https://sourceforge.net/projects/unluac/files/latest/download

一样,也需要JAVA环境。

把main.lua移动和下载到的unluac_2015_06_13..jar放到同一目录。

通过命令行执行,

java -jar unluac_2015_06_13.jar main.lua > 1.lua

 

分析登录逻辑

打开生成的文件 1.lua

我们迅速找到登录验证的位置。

简单解析下逻辑,大概有这么几步

  1. 进入登录验证逻辑
  2. 回调HTTP响应包
  3. 通过,打散响应字符串
  4. 打散形成的数组必须为5个以上的成员
  5. 构建加密校验HASH(重要)
  6. 第一个参数必须大于0,(回马一枪,我测试时,在这里绊了很久)

这里我们不再逐步测试,直接用第五步的逻辑过程进行剖析,进行验证。

md5.sumhexa(riqi[1] .. riqi[2] .. riqi[3] .. "cnds…… aoxi" .. os.date("%d%H"))

这里代码逻辑是,将数组成员1,2,3,拼接起来,再拼接固定字符 "cnds…… aoxi", 再拼接时间字符,如0615 (X月6号,15时)。

最终将拼接的字符串MD5校验下,获取32位的小写字符。

此时,我们再尝试刚才FD的抓包步骤,将数据包清空,重新打开软件,进行抓包。

我们复制一整串字符,到以下JS脚本中,进行运行验证。

生成校验hash

注意复制的响应包体的第一个成员,即图中的82305,所在的位置一定要是大于0的正数。且时间第三个成员时间大于当前时间,可修改为2099年。其他参数可不变。

function strpad(str,length){
    return (str/Math.pow(10,length)).toFixed(length).substr(2);
}
var response ='82305,99xxxxxxxx6,2019/6/13 22:28:41,598exxxxxxxxxxxxxx0c,授权到期2019/6/13 22:28:41必须在权限设置里把王者荣耀读取应用列表的权限关掉.注意误操作引起GG图标出现加速功能必须马上关闭游戏.否则必封号!,86xxxxx3,30,32,0,0,';
var data = response.split(',');
data[0]+data[1]+data[2]+"cnxxxxxxxxxxxxxoxi"+strpad(new Date().getDate(),2)+strpad(new Date().getHours(),2)

我们把最终的字符串复制出来,进行MD5加密

得到最终的校验MD5为:94a82489a532419a0fbbdacbf1ec178e

 

再次尝试抓包修改

我们将其替换到响应文本中的第4个数组成员。然后将整段替换好的响应文本粘贴到FD中,提交响应。

 

顺便点击GO,放行抓包,且关闭修改响应包选项。 

Rules - Automatic Breakpoints - Disabled(勾选)

 

破解成功

此时回到手机,查看辅助软件,已经是激活成功。点击开启辅助便可进入游戏配置GG修改器实现透视。

 

此时修改到期时间破解也就结束了,只不过不方便的是,辅助不能关闭,关闭就要重新抓包验证。可奈何手机没找到按照规则自动抓包拦截的软件。

若有,就方便许多。简单记录,以供他人日后参考,关键部分已经打码。

 

(完)

 

romejiang

2020-06-09 01:17

看着你破解过程很过瘾,不知道这个透视辅助还能用吗?给个链接或者代理QQ可以吗?

flashjim

2020-09-01 22:29

httpcanary这个软件

王从安

2021-04-11 13:56

都反编译成功了,何不直接修改代码,再编译回去?

發表評論
StudioEIM - 冒险者讲习所
0:00