使用Inspeckage尝试hook其中的加密函数
环境:夜神模拟器
Inspeckage 2.3
某收件APP
获取关键参数
安装app后,抓包看到如下参数
在AK中搜索其中关键词fm和sign,搜索中发现sign过多,于是尝试搜索FM,搜索中发现如下class文件。
打开Java源代码,在其中的一个void类型的b函数中发现关键。
打开对应文件的sha256函数
基本可以确定加密算法为这个,对其中的三个参数加盐来sha256
paramString1对应了localObject5,也就是timestamp
paramString2对应了localObject4,也就是nonce
paramString3对应了localObject2,也是其中暂不得知道为何的参数
这几个参数,其中sign是不得知为什么参数,其他一个为uuid,一个为时间戳,于是我们尝试hook这个函数。
配置HOOK
在Inspeckage的界面中选着HOOK,点击找到左侧加载出来的函数方法
点击后如下,添加
在模拟器中做一个请求,此处仍然使用之前的登陆请求,hook到的参数和结果
其中result就是抓包到的请求sign参数,可以看到参数paramString3为一串拼接的字符串,其中密码为MD5加密,在hash选项中可以看到加密的原参数,和sha256用到的salt值
加密尝试
那么尝试使用在线加密,从hook到的结果得知,paramString3就是请求中的FM字段
和请求中携带的sign参数对比为相同参数
本以为会到此为止,但是当仔细查看hook的参数时发现,paramString3中的参数均是缺少标签对的,例如
<root>123</root><sign>123</sign>
他只显示
123</root>123</sign>
暂没查到原因。