1625-5 王子昂 总结《2017年9月18日》 【连续第351天总结】
A. jeb2动态调试Android
B.
之前在国赛的时候有一个APKCRACK,当时逆的过程中发现是调用了一个jni方法,so逆出来发现是很复杂的多行处理,最后返回到DEX中的
由于不怎么熟悉so和jni,遂放弃
后来几天看到了WriteUp:
可以看到,程序在取得了用户输入的字符串后,会调用wick.show方法,这个方法会调用jni中的对应函数,该jni函数会开启反调试并给静态变量A、B赋值success和failed。随后会进入simple.check方法开启验证。
这个验证函数非常长,笔者也没看懂。Simple类中有两个字节数组,一个用于存储输入,把它命名为input;另一个数组初始为空,把它命名为empty。
使用jeb2的动态调试功能,把断点下到00000A7A函数的返回指令处,在手机中输入随意字符并点击确定,程序会断在返回指令处。
此时查看empty数组的值,发现疑似ASCII码的数字,转换过来就是flag
虽然模拟器+IDA勉强也可以远程调试,但是由于IDA只能处理so文件,所以整个流程并不完整
这次安卓真机终于到手了,正好看到jeb2对动态调试的能力很强,就拿上次没做完的、简单的CRACK入手吧
jeb2的Debug按钮很好找,只不过窗口里并没有像教程那样显示出来IP、端口和进程来Attch
搜了很久的jeb2的动态调试进程,除了i春秋有付费视频没看到内容以外,其他基本都是介绍静态反编译或是一笔带过动态调试的,没有一个有完整教