Android技术知识安全与逆向

【逆向安全】- so动态调试之寻找某应用签名密钥

2020-12-17  本文已影响0人  拔萝卜占坑

背景

公司某同事,想通过python脚本自动调用某应用接口,以达到自己的目的(你懂得)。但是通过抓包发现,几乎所有接口里面都两个公共字段"timestamp"和"sign"。timestamp是时间戳很好得到,但是"sign"却不停在变化,猜测后端会根据"sign"字段值,对数据做校验。于是开启了对该App逆向路程。

内容

逆向工具

原生层逆向

so逆向

用ida打开so文件,入下图:


截屏2020-12-17 下午3.47.26.png

该apk调用的是getApiSign这个jni方法,返回的"sign"值。

转成C语音后,就是这样,如果能够看懂,当然可以直接找出计算"sign"值算法,如果看不懂,那么可以使用so动态调试,查看相应的变量值。

注意:这里要用32的ida,64位不支持转换且动态调试会报错。

so动态调试

so动态调试,需要root手机一台。

截屏2020-12-17 下午5.03.49.png 截屏2020-12-17 下午5.04.18.png
  1. 使用Ctrl+S找到需要调试so的基地址:EF606000


    截屏2020-12-17 下午5.07.25.png
  2. 然后通过另外一个IDA打开so文件(可以用64位的打开so),查看函数的相对地址:1794

    截屏2020-12-17 下午5.10.50.png

那么得到了函数的绝对地址就是:EF607794,使用G键快速跳转到这个绝对地址:

截屏2020-12-17 下午5.15.11.png

点击左边蓝点,下断点,点击运行,然后在应用点击,调用getApiSign JNI方法。


截屏2020-12-17 下午5.20.30.png

触发getApiSign JNI方法调用后名,程序执行到图中红框地方,按F8进行单步调试,F9运行,通过R0寄存器找到算法使用的密钥。

拿得密钥后,就可以用其它语言实现。整个破解过程就到这里。

上一篇 下一篇

猜你喜欢

热点阅读