0ctf simpleapk writeup

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 13:27   25   0


Java层分析

Init中生成flag.txt


按键处理中,将用户输入与flag.txt中内容比较。


直接在手机上找到了flag.txt文件,得到内容如下:

0ctf{Too_Simple_Sometimes_Naive!!!}

提交,发现不对。


So分析:

定位到init函数


猜测应该是so库对read函数进行了hook,导致java层读取的数据并不是文件中真正的内容。

另外checksigcheckstracecheckptrace看这名字都知道不怀好意,checksig应该是对签名做判断,checkstracecheckptrace应该是反调试的。

不过分析发现checkstrace实际是调用checkptrace。而checkptrace函数的代码肉眼看不出采用了什么反调试技术,只好上调试器看看。

结果调试发现checkptrace中间接调用调用的居然是read函数,所以基本猜测程序就是用checkptracehookread。往下看,发现一个明显的异或操作,对read读入的内容进行异或。


直接在调试器中获取到异或的值,写了个程序解了一下:

charflag[]="0ctf{Too_Simple_Sometimes_Naive!!!}";
charkey[]={0x00,0x00,0x00,0x00,0x00,0x1D,0x1B,0x48,0x2C,0x0C,0x24,0x02,0x02,0x09,0x3A,0x0B,
0x3B,0x0E,0x03,0x3A,0x39,0x0C,0x08,0x11,0x00,0x00,0x1A,0x09,0x0C,0x29,0x20,0x58,
0x44,0x00,0x00};
for(inti = 0; i < strlen(flag); i++)
{
<span style="white-space:pre"> </span>flag[i]^=key[i];
}
printf("%s\n",flag);

flag为:0ctf{It's_More_Than_Meets_The_Eye!}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP