如何使用ida在apk执行前动态调试其so中的函数
1个回答
推荐于2016-10-13 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517165
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
安卓手机用ida在apk执行前动态调试其so中的函数
方法1
1、解包对方APK,插入一个:对应SMALI: android.os.SystemClock.sleep(20000);const-wide/16 v0, 0x2710 #20秒invoke-static {v0, v(X-1)}, Landroid/os/SystemClock;->sleep(J)V这里(X-1)对应.local X。
2
另外,有的包在你要调试的那个SO里面有签名保护,反正你重新打了包之后会导致程序运行崩溃,这个相比JAVA修改困难些,建议你用那个签名漏洞来打包。事实上我调试那个SO也遇到过这样,然后打了个签名漏洞的包嵌入的延时函数就可以了。
方法2
1) am start -D -n 包名/类名;
2) IDA pro attach 进程, 设置新线程,加载so时断点,continue;
3) 打开ddms, 查看调试端口, jdb attach port;
4) 这个时候应该已经断在新线程,或者加载so处了,在你感兴趣的so处停下来;
5) 另外用ida 打开so,查看你感兴趣的函数偏移, 加上你感兴趣的so的基地址,打上断点,continue, 就大功告成了。
注意事项
windows下ida6.1不行,linux ida 6.4可以,不知是ida的问题还是windows的问题,你可以在linux下用wine测一下。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细
方法1
1、解包对方APK,插入一个:对应SMALI: android.os.SystemClock.sleep(20000);const-wide/16 v0, 0x2710 #20秒invoke-static {v0, v(X-1)}, Landroid/os/SystemClock;->sleep(J)V这里(X-1)对应.local X。
2
另外,有的包在你要调试的那个SO里面有签名保护,反正你重新打了包之后会导致程序运行崩溃,这个相比JAVA修改困难些,建议你用那个签名漏洞来打包。事实上我调试那个SO也遇到过这样,然后打了个签名漏洞的包嵌入的延时函数就可以了。
方法2
1) am start -D -n 包名/类名;
2) IDA pro attach 进程, 设置新线程,加载so时断点,continue;
3) 打开ddms, 查看调试端口, jdb attach port;
4) 这个时候应该已经断在新线程,或者加载so处了,在你感兴趣的so处停下来;
5) 另外用ida 打开so,查看你感兴趣的函数偏移, 加上你感兴趣的so的基地址,打上断点,continue, 就大功告成了。
注意事项
windows下ida6.1不行,linux ida 6.4可以,不知是ida的问题还是windows的问题,你可以在linux下用wine测一下。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询