本文为2016年京津冀挑战赛中sysndhy的writeup。
Writeup
首先点我下载题目。直接使用jeb反编译,关键代码如下:


Base64.encode(input.getBytes())是对输入进行base64编码。
IDA反汇编so,发现check进行了加密处理。so中没有JNI_Onload,故只可能在init.array中解密check。



将init_array的code段还原成ARM指令:光标放在unk_4xxx上,按c进行还原。


init_array中解密check且解密后没有对check重加密,故动态调试时不设置断点,直接运行程序,此时内存中check已被还原,可以看到还原后的check。



最后给出计算输入的程序:
|
|
答案:decryptpass=Txmg。