-
-
一道迷宫逆向题目 hgame week1
-
发表于:
2020-2-10 15:27
3499
-
程序附件在后面给了,拖到虚拟机给a+x权限之后运行起来看到的是这个:
这看似是一道迷宫的题目。但是地图不会那么的奇葩,需要dump出来。
拖到ida64在main函数F5一下,看到的判断就比较明确了:
看到了wasd可以确定就是一个迷宫题目,中间一个大while就是循环判断输入的字符,v5指向的应该就是起始位置,
v5 = &unk_6020C4;
然后分析上下左右键,d就是右移4个位置,s向“下”移动64个单位(实则是右移,因为v5是一维指针,后面注意一下就行)。另外的a和w一样的。
所以现在是吧地图给整出来。
在hex view打开找到迷宫起始位置20C4,前面分析过一次右移是4个单位,那就修改一下data格式,效果如下:
主函数已经给了墙和出口:
if ( v5 < &unk_602080 || v5 > &unk_60247C || *v5 & 1 )
goto LABEL_22;
LODWORD(v4) = v4 + 1;
}
if ( v5 == &unk_60243C )
{
sprintf(&v7, "hgame{%s}", input, v4);
puts("You win!");
printf("Flag is: ");
puts(&v7);
exit(0);
}
LABEL_22:
就是最低位置是1 就是墙壁,是0就是路。
然后地图就明确了:
一行16个单位,所以是hgame{ssssddddddsssssddwwdddssssdssdd}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课