[QUOTE=鬼谷子c;1349402]文章一写就写多了,所以这里上传doc文档了,图片和文字来回复制容易搞乱版面。
[ATTACH]第二题分析过程[/ATTACH][/QUOTE]
不错,学习了,不过个人习惯了投机取巧,修改SO的12个字节,重新打包查看日志信息即可得到密码
题目二
修改libcrackme.so库12个字节(共三条ARM指令)执行自动从DDMS调试日志输出密码。
用IDA加载libcrackme.so
进入原生密码校验函数:Java_com_yaotong_crackme_MainActivity_securityCheck
由输入参数密码文本由R0提供给R5,跟踪到密码开始比对位置(从000012A8)开始如下(1),
而且密码直接比对明文字节,将(1)开始的三条ARM指令共十二字节修改为(2),
还原打包执行就即可从调试输入的日志消息中得到密码(tag为用户输入的密码,信息为需要的密码)
(1)
000012A8 00 30 D2 E5 LDRB R3,[R2]
000012AC 00 10 D0 E5 LDRB R1,[R0]
000012B0 01 00 53 E1 BL CMP R3,R1
(2)
000012A8 00 10 A0 E1 MOV R1,R0
000012AC 04 00 A0 E3 MOV R0,#4
000012B0 05 00 00 1A BL __android_log_print
如输入123456执行,奔溃前吐出密码为"aiyou,bucuoo"
01-23 14:04:35.497: I/123456(17615): aiyou,bucuoo