文章插图
同时也来抓包:
文章插图
把v52的值放到在线MD5网站中加密看看:
文章插图
和抓包得到的结果是一样的 , 那就证明hook点找对了 , 那么v49就是base64编码之前的值 , v49是什么呢 , 仔细一看 , 里面也有deviceID , 再来分割一下:
文章插图
第一行通过两次hook , 发现他是固定不变的 , 第二行是改变的 , 32位 , 看起来又是个md5 , 第六行是包名 , 返回伪c代码 , 再来分析看看 , 在前面又看到了MD5加密的地方:
文章插图
那来hook这个函数 , 看看入参:
文章插图
打印的入参数据为:
文章插图
S是一个时间戳 , 拿到MD5加密网站上验证一下 , 正好和v49中包含的字符串相同:
文章插图
至此 , 逆向就完成了 , 来总结一下x-app-token的获取过程 , 先是带有把时间戳进行md5 , 按下图顺序拼接:
文章插图
然后把拼好的字符串进行base64编码 , 最后把编码结果进行MD5 , 得到x-app-token的开头部分 , 组成如下:
文章插图
接下来写个脚本来请求数据
请求
代码如下:
文章插图
运行 , 成功拿到数据:
文章插图
总结
今天主要介绍了 native 层 hook 的方法 , 虽然 so 文件中的伪c代码要有一定的基础才能看懂 , 但是先不要怕 , 分析的过程中可以先大胆假设 , 有 frida 非常强大的 hook 功能 , 就能一步步验证之前的假设 。这两次都是静态分析方法 , 下次我们再来介绍一下动态调试的方法 。
最后 , 以上内容仅供学习交流 , 希望对你有帮助 , 那么我们下回见 , peace!
推荐阅读
- |卖出一块和田玉,真的能够吃三年吗?这种说法有点夸张
- QQ终于也能“修改”账号了,但和你想的有点不一样
- 金毛出门从不空手而归,这次它又把谁家的猪带回来了 金毛狗笼子
- 金银花泡水有点苦是正常吗 金银花泡水放多少根最合适
- 男人撒尿有点疼
- 最强JDK15 安装与讲解,有点想升级,终于要废弃偏向锁了
- 骁字取名好不好 骁字的寓意
- 如何按照条件向Spring容器中注册bean?这次我懂了
- HashMap这次是真的懂了,扰动函数、负载因子、扩容拆分全搞定
- 喝完茶有点晕怎么回事,交个如茶的朋友