一、前言
上节课已经分析出了关键函数,这里只要在关键函数下断,然后,动态调试就可以获取想要获取的数据
二、IDA动态调试步骤
1、将IDA目录dbgsrv文件夹下的android_server复制到真机
adb push ....as /data/local/tmp
2、执行android_server
adb shell进入手机操作模式
cd /data/local/tmp 进入到as所在的位置
chmod 777 as 给as可执行权限
./as 执行
3、转发端口
adb forward tcp:23946 tcp:23946
4、启动IDA附加进程
Debugger--attach--Remote ARM Linux/Android debugger
5、设置本地IP及上面设置的端口号23946,点击ok
6、选择要调试的进程名字
7、点击运行,让程序跑起来
8、从Modules模块,选择要分析的so文件及getSign函数
9、函数名都变成了unk开头的,所以需要结合静态分析,记住偏移地址
10、所以我们需要在B3556A56处下断,这就是我们分析出的函数地址
11、在数据窗口查看R0寄存器,右击数据窗口,选择Synchronize--R0
0093CB6721DAF15D31CFBC9BBE3A2B79 1634609878317
0093CB6721DAF15D31CFBC9BBE3A2B79 1634621200870
12、查看R1寄存器2D,十进制是45,正好是上面取出来的位数
13、查看数据窗口中R2的数据,按F8单步执行,里面的数值发生了变化
14、将上面的数据进行md5运算,正好是执行后得到的数据
45 E9 08 4E 5B D8 5B 94 B5 C5 98 13
3E 90 09 1F
寄存器
SP:栈寄存器
LR:保存函数返回地址
PC:当前运行到的地址
R0-R3:用来放函数的参数,执行完后,R0存放返回值
R4-R7:用来放函数的局部变量