说明
Appuse是Android渗透测试虚拟机环境,其中模拟器中有HackMeNative供使用者进行攻击使用,比较简单,记录一下crack过程。
0x01 HackMeNative App
1、界面
2、操作
输入字符串,点击按钮判断输入的字符是否正确
0x02 Java层逻辑分析
1、逻辑分析
java层逻辑简单,加载 libnative.so中的check方法进行字符串验证,在natvie层找到secret字符串即完成了crackme。
0x03 Native层逻辑分析
1、方法分析
使用ida分析libnative.so
v7 = checkSecret(v5, v6);
根据伪代码的提示,v5是输入的字符串,v6是secret字符串
2、获取v6对于的secret字符串
gdb调试
(1)启动gdbsever
(2)gdb client连接
adb forward tcp:5050 tcp:5050
(gdb) target remote :5050
(gdb) info sharedlibrary
libnative.so内存地址是 0xa52b5c3c
使用radare2可以看so的基地址偏移量
checkSecret ida 查看的地址是 0x00000ca8
所以checkSecret运行时的内存地址是 0xa52b5c3c - 0x00000c3c + 0x00000ca8 = 0xa52b5ca8
下断点,输入字符串
查看寄存器
(gdb) x/s 0xa649ad80
0xa649ad80: "11111"
(gdb) x/s 0x9b3753e0
0x9b3753e0: "0123456789"
0xa649ad80 是对应的v5 即输入字符串
0x9b3753e0 是对应的v6 即Secret字符串
0x04以上
本例主要是记录gdb动态调试native层so运行时如何获取secret字符串,无反调试,比较基础和简单,大佬勿喷
ps:有同学私信我要apk,请附件下载吧
最后于 2019-11-18 21:37
被neilwu编辑
,原因: