-
各种动态调试server含义(dbgsrv目录下)
File name Target system Debugged programs android_server RM Android 32-bit ELF files android_server64 AArch64 Android 64-bit ELF files 64-bit ELF files android_x64_server 86 Android 32-bit 32-bit ELF files 32-bit ELF files android_x86_server x86 Android 64-bit 64-bit ELF files armlinux_server ARM Linux 32-bit ELF files linux_server Linux 32-bit 32-bit ELF files linux_server64 Linux 64-bit 64-bit ELF files mac_server Mac OS X 32-bit Mach-O files mac_server64 Mac OS X 64-bit Mach-O files win32_remote.exe MS Windows 32-bit 32-bit PE files win64_remote64.exe MS Windows 64-bit 64-bit PE files
#搜索函数
crtl+f
#将汇编代码转为c代码
F5(32位可以,64位不可以)
#跳转到目标地址
g
#调试将DCB转换为汇编代码
p
#Thumb16位和ARM32位切换
alt+g
#跳转到segment(段)
ctrl+s
#调试
F9 运行/跳到下个断点 F8单步调试 F2下断点 F7进入断点 F4到鼠标所指的地方
#修改入参
点击入参,按y键(比如JNI第一个参数是JNIEnv*)
# 路径视图切换到文本视图(IDA View-A)
空格
-
当前指令是ARM还是Thumb
点击当前指令,然后切换到Hex视图,查看当前指令占几个字节,两个字节表示Thumb,四个字节表示ARM
1.push
IDA 目录的android_server到手机的/data/local/tmp(调试arm使用真机最好)
2.启动服务端
chmod 777 android_server
./android_server //默认端口在23946
./android_server -p23947 //改变端口在23947
3.端口转发(IDA默认端口23946)
adb forward tcp:23946 tcp:23946
4.IDA调试端口设置
Debugger ----> Process Option ----> HostName:localhost Port:23946
5.以调试方式启动apk
adb shell am start -D -n package/.activitiyname
6.IDA挂接
Debugger ----> Attach to Process
7.jdb connect(需要先打开monitor,类似于java的调试)
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700