re1
apk
结构大致了解
直接看源码,和运行
apk
是找不到任何东西的,这时候就需要看
apk
的资源,而字符串
string.xml
一般都
在
value
下,直接找到
string.xml
就出来了
re2
异或后得出
flag
,
GUETCTF{L1fe_G03s_On
_
}
#include<stdio.h>
int main()
{
char str[] =
{0xB9,0xA8,0xB9,0xAF,0xB9,0xAD,0xBE,0x8C,0xBA,0xC4,0x92,0x96,0xAD,0xB6,0xC0,
0xDC,0x9D,0xB2,0xA3,0x85,0xB4,0xB6,0xb6,0x9a,0xe6};
for(int i=0;i<25;i++)
{
str[i] ^= i+1;
}
for(int i=0;i<25;i++)
{
str[i] ^= 0xff;
}
printf("%s",str);
return 0;
}
re3
打开
ida,shitf + f12
可以找到两组字符串,分别是
base64
的加密码表,和加密的密文,在网上可以找到
base64
的解码网站或者
c
,
python
的解码脚本,更改码表后再解码就能得到
flag
为
GUETCTF{I_L0ve_Gu3t}
re4
代码加了优化比较复杂,但是认真分析代码逻辑还是能看出是两个迷宫问题的整合,找到这两个迷宫数组:
![](https://img-blog.csdnimg.cn/bdfc26f7ca794c1e80f1fe9dec1254b6.png)
ida
分析可得,第一个迷宫,上下左右对应着
"QkbU",
每一步移动都将执行到撞墙为止(
0
是路,非
0
是
墙,
0xa4
是终点)
第二个迷宫,上下左右对应着
"+-*/",
而这里每一次移动只走一步,(
0
是路,
1
是墙,只能在数组中移
动,不能越界,
0xff
是终点)
两个迷宫走法之间用字符
^
连接
最终不难得出,
GUETCTF{kUQbk^+**++---}