首页
论坛
课程
招聘
[逆向分析] [原创]游戏协议大道-练气篇
2021-2-17 00:39 4423

[逆向分析] [原创]游戏协议大道-练气篇

2021-2-17 00:39
4423

"仙与魔,只在一念之间."

00.前言

最近玩一款修仙游戏,达到神力境界后提升需要周期太长。实在太闲了,就对该游戏协议进行分析。

01.抓包

该游戏提供了三个登录方式,本文使用账密登录。

 

祭出Fiddler抓取登录请求,经过多次测试,初步发现参数:key 随帐号以及密码变动。

02.分析

使用法宝JEB加载apk,定位key、userpwd值的生成.
通过搜索登录URL的字符串"sdkLogin",找到如下方法:

2.1、userpwd的生成

通过该段代码并印证得知,密码的密文通过des加密,密钥为:leiting

1
2
3
4
5
6
7
8
9
10
11
12
public void doSdkLogin(String arg3, String arg4) {
    UserBean v0 = new UserBean();
    v0.setUsername(arg3.trim());
    String v3 = DesUtil.encrypt(arg4.trim(), "leiting");
    if(TextUtils.isEmpty(v3)) {
        this.loginFailNotify(String.valueOf(-3), ResUtil.getString(this.mActivity, "lt_encrypt_fail_msg"), false);
        return;
    }
 
    v0.setUserpwd(v3);
    this.doSdkLogin(v0, false);
}

2.2、key的生成

静态分析发现,最终登录是调用handleLogin函数.

1
this.handleLogin(this.setUserBean(arg3, arg4), arg4, 0);

而参数的生成都在setUserBean函数,key也在其中.

key的生成如下

1
2
3
4
5
6
7
8
9
arg4.setKey(CookieUtil.encryptMsgMd5(arg4.getUsername() + "|" + arg4.getUserpwd() + "|" + arg4.getGame(), "leiting"))
public static String encryptMsgMd5(String arg3, String arg4) {
        try {
            return MD5Util.getMd5("(" + arg3 + "%" + arg4 + "%" + "20210216" + ")");
        }
        catch(Exception unused_ex) {
            return "";
        }
    }

通过代码并印证得知key为一个md5字符串,拼接的明文则如下:
(13888888888|83578346c5474f1a7aa78c83e43aa46a|xian%leiting%20210216)

最后正确帐号的请求如下:

03.最后

通过后面的抓包发现,本篇所写的登录分析只是为了获取对应帐号绑定的的sid.
而sid才是游戏真正的帐号,且其通过另一套协议来实现游戏数据的交互等等.
后续分析请等待下一篇章的到来,谢谢观看.

End.


看雪学院推出的专业资质证书《看雪安卓应用安全能力认证 v1.0》(中级和高级)!

收藏
点赞3
打赏
分享
最新回复 (8)
雪    币: 432
活跃值: 活跃值 (663)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
萌克力 活跃值 2021-2-17 02:06
2
0
15万以上就是五年啊...
雪    币: 6777
活跃值: 活跃值 (4736)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
wmsuper 活跃值 3 2021-2-17 10:35
3
0
支持
雪    币: 682
活跃值: 活跃值 (2302)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
supperlitt 活跃值 2021-2-18 08:54
4
1
求楼主,快快让我等筑基。。
雪    币: 89
活跃值: 活跃值 (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
缓风 活跃值 2021-2-18 10:54
5
0
懂了,是雷霆互娱旗下的修仙游戏
雪    币: 0
活跃值: 活跃值 (255)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookzo 活跃值 2021-2-18 13:25
6
0
key是用来防止暴力破解的吗
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-2-18 14:18
7
0
支持楼主
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-2-18 14:18
8
0
支持楼主
雪    币: 516
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
ST0n5 活跃值 2021-2-22 11:04
9
0
sid和用户名密码有关,sid就没有利用余地了
游客
登录 | 注册 方可回帖
返回