本文为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
。