前言
继续跟着龙哥的unidbg学习:SO逆向入门实战教程七:main_unidbg 重定向_白龙~的博客-优快云博客
还是那句,我会借鉴龙哥的文章,以一个初学者的角度,加上自己的理解,把内容丰富一下,尽量做到不在龙哥的基础上画蛇添足。感谢观看的朋友。
分析
首先,抓个包

里面这个mtgsig就是该app很经典的加密参数了,siua参数后续有时间就分析,没有就算了。本篇文章的重点是mtgsig.
1.静态分析
jadx分析,一搜:

发现其实并不多。
就拿这几个类进行hook,看看哪些方法被调用了就行了,没花多久时间,就找到这里:

com.xxxxx.plugin.sign.core.CandyPreprocessor.makeHeader(Uri$Builder) String
再跟一下:



这个main就是我们要的部位了。我们知道,第一个int参数,其实都写死了,就是203

第二个是一个对象数组
hook下这两个方法,main的地方参数中间有个byte[]没有打印出来

2.frida动态调试


所以这个byte[]就是个 请求方式 url的path 子路径
好了,入参大概都知道了
ida调试
调试之前,得找找他加载的是哪个so文件

这静态看代码,看了半天,愣是没看出来哪里用了system.loadlibrary。
用这个grep找到的是这个so,其实并不是

这里继续用yang神的hook_RegisterNative.js,一顿输出,直接找到这个so:

很nice。
卧槽,跑完直接把我手机干关机了。有点6
接下来打开ida看看,导出表都不用看了

方法也看不到啊,上面用hook_RegisterNative已经hook到位置了,直接定位过去就行

结果就是解析异常了。
unidbg调试
那直接unidbg调试吧
1.搭架子

跑起来,好像没啥问题 ,main也有了。
2.调用
那么直接调用吧,首先把之前hook到的数据,传递进去
上面需要的都有hook了,

本文详细介绍了如何使用unidbg和Frida进行Android应用程序的SO逆向工程,包括静态分析、动态调试、ida调试和unidbg模拟调用。作者通过hook特定方法,跟踪参数,解决空指针和文件读取异常问题,最终成功获取加密参数。
最低0.47元/天 解锁文章
4071

被折叠的 条评论
为什么被折叠?



