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

来源:互联网 发布:怎么屏蔽网络监控 编辑:程序博客网 时间:2024/04/28 23:45

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脚本

0 0
原创粉丝点击