逆向某4399分析过程

1.抓包报⽂分析

1.1.charles抓包分析报⽂

登录和注册 发送验证码 都带有⼀个sign字段

在这里插入图片描述
其他参数都为固定参数 ⽐如请求头中的
在这里插入图片描述
只有这个sign每次都是变化的,那我们就开始分析这个sign

2.⽼规矩

1.先查apk是否加固 查询发现没加固

2.直接上jdax打开apk,能正常反编译

3.发现⽹络框架使⽤的okhttp

3.代码分析

1.因为使⽤的okhttp框架 那么⾃然直接搜索OKhttpClient 在哪被初始化 jadx直接搜索到
在这里插入图片描述
看名字猜测应该是⽹络核⼼⽗类,接着按x找到相关引⽤类 找到
在这里插入图片描述
看名字就猜到了http相关的⼯具类,接着继续找关键字sign ,因为⽹络相关的类都在framework包下的 helper⼦⽬录中所有随便翻翻找到⼀个
在这里插入图片描述
打开⼀看找到app相关的native⽅法都在这类中定义 按x找到相关引⽤的类中 有⼀个
在这里插入图片描述
看⽅法名就猜到了应该是计算sign的⽅法,打开看果然是
在这里插入图片描述
计算⽅法为:

1.调⽤buildSignRequestParams(str,map)⽅法将请求参数赋值给hashMap,并将hashMap中的值按照 key进⾏排序,重新赋值给map

2.遍历排序后的hashmap的取出value进⾏拼接传递给buildSignValue()⽅法,调⽤native⽅法 ⽤frida Hook这两个⽅法调⽤也证明了这两点:
在这里插入图片描述
.接下来开始分析native⽅法 getServerApi() 找到使⽤的so 包为libNativeHelper.so
在这里插入图片描述
扔到ida看导出函数发现是jni动态注册没找到getServerApi()这个⽅法,接下来使⽤unidbg进⾏分析 call_jni_onload 后找到 偏移地址0x12795

在这里插入图片描述
在ida中G 跳转到偏移地址
在这里插入图片描述
在这里插入图片描述
查看sub_4DF0函数F5⽣成伪代码
在这里插入图片描述
阅读代码修改原有的字段名称。祭出⼤杀器unidbg Hookz
在这里插入图片描述
多次调⽤⽅法发现⼊参为⼀串固定字符串值,先暂定它为加密因⼦吧! hook伪代码中的

strcat(参数1,参数2);

参数1为之前调⽤java 层 native⽅法中请求参数排序后的value 字符串,参数2位固定的加密因⼦ 将两个字 符串拼接后⽣成新的待加密串。

接着分析 sub_4538(&v20)函数

在这里插入图片描述
这个4个常量 在结合sign的⻓度为32 很明显的可以猜到使⽤的MD5加密,具体在往下看。 分析sub_4564()函数;
在这里插入图片描述
hook函数sub45F4函数 得到的⼊参 为 md5标识和待加密串 接着点进去查看这个函数具体实现
在这里插入图片描述
在这里插入图片描述
最终hook这两个函数都没发现⽣成具体的sign值 加密串也没有最终被修改 于是随⼿拿之前得到的加密串去做个MD5发现直接就跟sign⼀样 所以⼤概得出这个sign算法就是标准的 MD5

在这里插入图片描述
联系作者Q 1452142503

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值