利用IDA对dex文件进行动态调试过程

0x01.调试的过程。

1、首先AndroidManifest.xml里面Android:debuggable="true"。

2、将classes.dex拖入IDA中。

3、选择Debugger->Debugger options->Set specific options,在Package Name和Activity中填入主Activity的包名和类名。
4、选择Debugger->Process options,将Port改为8700。
5、下断点,在相应需要调试的函数的位置下断点。
 6、手机端开启android_server
具体方法,
C:\>adb shell push android_server /data/local/tmp/ (android_server需到IDA安装目录./dbgsrv下拷贝
C:\>adb shell
#su //获取root权限
#chmod /data/local/tmp/android_server //给android_server添加可执行权限
#/data/local/tmp/android_server //启动android_server
7、端口转发
C:\>adb forward tcp:23946 tcp:23946 //把手机上的端口转发到pc上
8、打开要调试的Activity
C:\>adb shell am start -D -a 包名/入口 //以调试的方式期待调试的程序
9、选择Debugger->attach to process,attch到应用,选择包名单击即可。  接下来,出现的界面全部Cancel。程序运行到断点处。

0x02.查看和跟踪流程内存值.

F9运行

F8单步调试

F7进入函数


1.debugger -> debugger windows -> locals
查看变量的值

0x03.遇到的问题(类型转换的问题)

1.遇到IDA寄存器中的值bad type  
使用 IDA 调试 APK 时经常遇到变量无法识别的情况,需要在WatchView里面手动加入类型转换,如下图

然后在弹出的窗口中自己为变量添加一个类型,类似这样:
(Object*)v0
(String)v0
( char *)v0
( int )v0
(int*)v0

0x04.修改某个寄存器的值

修改内存中的程序和值

修改程序一般都是IDA的修改方式

定位地址,edit修改对应的值后apply进行修改。


修改内存中的值,在lcoals中直接修改即可


0x05 dump内存中的dex脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值