首页
社区
课程
招聘
[原创]某端游外挂网络验证的分析与破解思路
发表于: 2025-5-6 23:22 7117

[原创]某端游外挂网络验证的分析与破解思路

2025-5-6 23:22
7117

去年年底的时候,听说该游戏出现了一个挂号称可以无限刷爱心(游戏货币),于是从朋友A那里要来了样本,折腾半天干掉了网络验证部分,结果一顿分析完之后发现该功能的实现原理十分不优雅,放国内游戏厂商估计老早ban掉了...这里就把其网络验证部分的分析和破解思路分享出来吧,整个流程还是挺有意思的

国际惯例,DIE启动,可以看到加了个SE壳
图片描述

启动dump一下,丢IDA分析,看代码特征能看出来是易语言写的,还有经典的一堆VMProtect标记,大概是网络验证模块里的代码自带的,代码也没有任何被vm的地方,那就简单了
图片描述

首先要解决第一个问题,因为出了一些意外被作者抓到有人破解了他的大宝贝,所以有一个关键云端文件被清空了,现在直接打开会报一个错误
图片描述

HTTP Debugger抓包看一下,从云端获取了SSSSSPRO.json这个文件
图片描述

当时第一次破的时候忘记把文件内容存下来了,所以后面在这里折腾了好一会,去分析代码又太麻烦。这时突然就灵机一动,他既然有PRO,那会不会还有不带PRO的版本呢?

诶试了一下他还真有,格式是一模一样的
图片描述

然后又折腾好一会猜一下对应字段的意思

那么本地起个server简单模拟一下数据,然后将程序对应的url替换了就可以了

为了后面方便,我这里直接选用注入frida gadget的方案了,但又懒得写劫持注入,所以写了个loader.exe,CreateProcess启动外挂主程序后立刻把gadget.dll注入进去

hook.js

gadget.config

现在双击loader.exe启动,就不会再弹那个错误了,剩下的卡密验证部分,当然可以选择逆向找到验证点修改跳转,但那还是太吃操作了,有没有更简单的方法呢?有的兄弟有的

先定位到接口url
图片描述

然后用密探扫一下子域名
图片描述

fe7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4Q4x3X3g2Q4x3V1q4Q4x3X3g2U0L8$3#2Q4x3V1j5`.就是目标使用的网络验证的接口文档,里面还给了sign的计算方式和加解密算法,加入文档的QQ群也可以获取到其他语言的SDK,再结合抓包得到的数据其实就可以自己写一个server把他对接过来了
图片描述

但实际写的时候不知道哪里出了问题,一直报数据异常,但又懒的去调试了,所以这里又去换了条路。

9dcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4k6h3u0Q4x3X3g2Q4x3V1q4Q4x3X3g2U0L8$3#2Q4x3V1j5`.这个就是其网络验证后台登录地址,他是允许任何人去注册的,这不就省去我自己写server的麻烦了
图片描述

注册之后自己新建一个软件,然后生成配置,加密算法默认rc4,
图片描述

然后修改hook.js替换对应配置值就行了

给自己生成几个永久卡玩玩
图片描述

至此就破解完毕了
图片描述

整个流程下来难度其实不大,没有太多逆向的地方,主要是思维的发散了。还有那两个猜测的点,想不到的话就只能硬干了,如果能把server模拟出来当然是最好的。

{
    "SM": "d54bca47c7d6fa5247dd8f9cadd2ac5e1", // Software MD5
    "UM": "b27d69cf88e09e919328b0a2bada77c8"// Updater MD5
    "DB": 1131533037,                          // unknown
    "ZB": 1,                                   // unknown
    "MRDB": [                                  // 每日代币数据
        ...
    ],
    "clickPic": "...",                         // 点击图片跳转的链接
    "notice": "..."                            // 公告 
}
{
    "SM": "d54bca47c7d6fa5247dd8f9cadd2ac5e1", // Software MD5
    "UM": "b27d69cf88e09e919328b0a2bada77c8"// Updater MD5
    "DB": 1131533037,                          // unknown
    "ZB": 1,                                   // unknown
    "MRDB": [                                  // 每日代币数据
        ...
    ],
    "clickPic": "...",                         // 点击图片跳转的链接
    "notice": "..."                            // 公告 
}
from flask import Flask, jsonify, make_response
 
app = Flask(__name__)
 
@app.route('/pc/SSSSSPRO.json', methods=['GET'])
def init():
    d = jsonify({
        "SM": "8e8b5927c023c6c04689c94f3b96269b",
        "UM": "0974868e7f92234dfab0ccc9d37f2c28",
        "DB": 1131533037,
        "ZB": 1,
        "MRDB": [
             
        ],
        "clickPic": "",
        "notice": ""
    })
    res = make_response(d)
    res.status_code = 200
    return res
     
     
 
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8818, debug=False)
from flask import Flask, jsonify, make_response
 
app = Flask(__name__)
 
@app.route('/pc/SSSSSPRO.json', methods=['GET'])
def init():
    d = jsonify({
        "SM": "8e8b5927c023c6c04689c94f3b96269b",
        "UM": "0974868e7f92234dfab0ccc9d37f2c28",
        "DB": 1131533037,
        "ZB": 1,
        "MRDB": [
             
        ],
        "clickPic": "",
        "notice": ""
    })

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2025-5-7 09:53 被TubituX编辑 ,原因: 修复图片错误
收藏
免费 89
支持
分享
最新回复 (47)
雪    币: 3588
活跃值: (2116)
能力值: ( LV7,RANK:116 )
在线值:
发帖
回帖
粉丝
2

把逆向与web完美结合,大佬

最后于 2025-5-7 01:00 被moshuiD编辑 ,原因:
2025-5-7 00:57
0
雪    币: 20
活跃值: (1349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习了
2025-5-7 02:36
0
雪    币: 3727
活跃值: (6219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你这个思路真的很新颖,能这么发散性思维的人真的不多,太多人遇到这种,都只能不断转圈玩!给你发私信了,看下!
2025-5-7 03:58
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2025-5-7 07:37
0
雪    币: 3986
活跃值: (1874)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看看
2025-5-7 09:32
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
牛逼,学习学习
2025-5-7 10:25
0
雪    币: 0
活跃值: (984)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
其实你仔细看看vmp begin end这些,其实代码都未加密
2025-5-7 12:30
0
雪    币: 3365
活跃值: (3313)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
网络游侠 其实你仔细看看vmp begin end这些,其实代码都未加密
是这样的,这篇帖子主要还是分享一下从另一个角度去破解的思路
2025-5-7 12:37
0
雪    币: 7784
活跃值: (4648)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢分享
2025-5-7 13:27
0
雪    币: 3577
活跃值: (3235)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
真的很牛
2025-5-7 13:27
0
雪    币: 104
活跃值: (5701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
66666666
2025-5-7 14:15
0
雪    币: 342
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
66666
2025-5-7 15:59
0
雪    币: 7636
活跃值: (3664)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
牛逼 学习了
2025-5-7 17:45
0
雪    币: 347
活跃值: (690)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
66666
2025-5-7 23:15
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
学习学习
2025-5-8 01:06
0
雪    币: 3375
活跃值: (1676)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
感谢分享~~~~~~
2025-5-8 09:41
0
雪    币: 334
活跃值: (1259)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
来学习了。
2025-5-8 09:54
0
雪    币: 449
活跃值: (2632)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
就是劫持网络验证到自己的山寨服务器呗
2025-5-8 11:48
0
雪    币: 3365
活跃值: (3313)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
20
轻装前行 就是劫持网络验证到自己的山寨服务器呗

是直接用的对方使用的网络验证服务器,把软件配置秘钥之类的替换成自己的,不过好像也算老技术了哈哈

最后于 2025-5-8 13:05 被TubituX编辑 ,原因:
2025-5-8 13:05
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
路过,学习了
2025-5-8 13:12
0
雪    币: 0
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
thanks
2025-5-8 17:12
0
雪    币: 9670
活跃值: (4686)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
膜拜了,谢谢分享
2025-5-8 17:30
0
雪    币: 1130
活跃值: (855)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
study
2025-5-9 14:00
0
雪    币: 16
活跃值: (1535)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习
2025-5-9 16:17
0
游客
登录 | 注册 方可回帖
返回