ps:做的晚了 最后十分钟才开始 就下载下来这么一道题 难受
ida载入发现有UPX壳
file一下可以知道是windows下可执行文件
直接加上后缀.exe ESP定律脱壳
之后载入ida
shift + f12看到有成功提示 双击进入
双击引用 F5 可以看到关键代码就在main()
int __cdecl main(int argc, const char **argv, const char **envp)
{
const char *v3; // eax
int v5; // [esp+14h] [ebp-2Ch]
char v6; // [esp+1Ah] [ebp-26h]
char my_str; // [esp+29h] [ebp-17h]
int v8; // [esp+38h] [ebp-8h]
int *v9; // [esp+3Ch] [ebp-4h]
sub_402400();
v5 = 0;
v9 = &v5;
sub_40198E();
gets(&my_str);
if ( strlen(&my_str) != 15 ) // 长度必须等于15
{
printf("Nah... ur a fake reverser!");
exit(0);
}
v8 = sub_401500((int)&my_str, 15); //对我们的输入my_str进行变换
sub_40166E(v8, v9, (int)&v6); //还是一系列操作
v3 = sub_401794(&v6); //这个是base64加密
if ( !strncmp(v3, "aWNuZXJyc2VhZXRydmVl", 0x14u) )//判断变换后的my_str是否等于这个串 相等则输入正确
{
puts("well done bro!");
printf("ur really know something about tree!");
}
else
{
printf("Nah.. ur an idiot!");
}
return 0;
}
将aWNuZXJyc2VhZXRydmVl 直接base64解密得到
icnerrseaetrvee
看到这个之后
脑洞一开 直接输入长度为15的串进行尝试 在最后比较处下断点
发现没啥变化 401500,40166e这两个函数处理最后只是变了顺序
那大致找到对应关系即可
---> hello , reverser!
---> do you know something about tree?
---> try to input something , I dare you : )
提示与 reverser tree有关
直接猜到icanreversetree
输入正确