使用IDA Pro调试Android So文件

前言

记录一下调试的整个过程,坑实在是太多了。

开始调试

首先,确保以下操作已完成:

  1. 程序的android:debuggable设置为true
  2. 关闭Android studio(如果打开的话jdb可能连接不上,应该是端口被占用了)

正式开始:

  1. 安装程序
    adb install xxx.apk
  2. 配置好android_server并启动,这里网上别的教程很多,就重复了。需要注意的是,我的IDA Pro里有两个版本的android_server,另一个名叫android_server64。如果你调试的是32位so,则启动android_server,并使用调试32位程序的IDA Pro来调试,否则可能会有问题,64位同理。
  3. 设置端口转发
    adb forward tcp:23946 tcp:23946
  4. 以调试模式启动APP
    adb shell am start -D -n [程序包名]/[启动activity]
    其中,程序的包名与启动activity都可以先用apktool解包,然后在AndroidManifest.xml文件里找到。在这里插入图片描述
  5. 启动IDA Pro,调试器选择 Remote ARM Linux/Android debugger在这里插入图片描述
  6. 在目录Debugger–>process options里填写hostname与port
  7. 在目录Debugger–>attach to process 里附加到要调试的进程中
  8. 点击 Debugger–>Debugger options,设置相关选项如下在这里插入图片描述
  9. 下一步网上的教程都是使用DDMS来进行的,但是这个工具已经被Google废弃,配置起来也麻烦,所以我们就不用它。
    首先我们在IDA上点击F9,让程序先跑起来
    然后使用这个命令查看要调试的程序的PIDadb jdwp
    在这里插入图片描述
    然后执行adb forward tcp:8700 jdwp:<pid>,映射到本地8700端口上
    最后执行jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700
    在这里插入图片描述
    此时你应该可以看到程序的waiting for debugger标签已经没有了,程序已经跑起来了。之后你可以在刚兴趣的函数上继续下断点,调试程序。

参考

CTF Wiki IDA 动态调试原生层程序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值