使用IDA进行so库动态调试

对某APP进行抓包并使用IDA调试so库签名生成过程。顺便安利一下四哥的博客,学习Android逆向很好的资料。
Android逆向之旅之IDA调试so源码
蒸米大哥的乌云经典之作 安卓动态调试七种武器之孔雀翎 – Ida Pro

抓包搜索plaintext

encryptString为一个native方法,so库搜不到java_com.*函数,猜测为动态注册

native方法和对应的JNINativeMethod结构

以下为IDA调试so详细步骤
chmod 777 /data 否则下一步会报错

adb push android_server /data

chmod 777 android_server

./android_server

adb forward tcp:23946 tcp:23946

再开一个IDA Attach进程(双开IDA),注意如果真机不处于debug模式将显示不了进程,可用BDopener解决

上面一步可以按pid排序,一般是最大的

双击并Ctrl+F 搜索encryptStringApi

下断点

关键的几个地方

Hex View直接follow R0,可以很方便的看传入的参数和返回值。断在AES_Encrypt,R0=PlainText,即要加密的json数据

执行完base64_encode,加密结果CipherText放回R0,即加密后base64的数据


不用keypatch的插件也支持动态的时候在Hex View窗口修改数据(汇编指令),与keypatch的区别就在于前者能直接修改汇编指令,后者只能通过Hex View窗口修改对应的机器码