对某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窗口修改对应的机器码