此题是安卓题,开始在java层看到这样的校验代码:
似乎password就是name的逆序,但是不对。。。卡了好一会,后来回头来看才发现猫腻所在。public class MainActivity extends AppCompiatActivity {中的AppCompiatActivity是自写类,并非系统中的AppCompatActivity。其主要代码如下:
password
name
public class MainActivity extends AppCompiatActivity {
AppCompiatActivity
AppCompatActivity
从以上代码可以看出,此app还有个native库,加载了oo000oo。输入通过native函数eq完成校验,最后以输入为密钥对flag进行AES解密。
oo000oo
eq
函数eq并没有注册导出,在JNI_OnLoad中手动注册。校验算法似乎是魔改的RC4加改了表的base64编码,没细看。直接将校验串解码,动态调试,用解码后的结果替换输入串,在偏移0x9F6处下断,从r11寄存器获取解密结果,结果为fu0kzHp2aqtZAuY6,输入app,正确显示。
JNI_OnLoad
0x9F6
r11
fu0kzHp2aqtZAuY6
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)