首页
社区
课程
招聘
一道迷宫逆向题目 hgame week1
发表于: 2020-2-10 15:27 3499

一道迷宫逆向题目 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直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2020-2-10 19:35
1
雪    币: 399
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问一下,这里的v4,v5等都是什么?变量?函数?还是说只要拖进ida就都会变成这个?谢谢
2020-2-10 21:22
0
雪    币: 426
活跃值: (2901)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
4
koop 请问一下,这里的v4,v5等都是什么?变量?函数?还是说只要拖进ida就都会变成这个?谢谢
拖到ida看一下,理解整个思路v5就是一个一维指针,开始指向起始未知,后面就是移动的指针
2020-2-11 16:39
0
雪    币: 399
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
菜鸟m号 拖到ida看一下,理解整个思路v5就是一个一维指针,开始指向起始未知,后面就是移动的指针
谢谢,你的意思是说其实就是一个偏移的地址。
正常情况下不是这里就是编程时候用的函数名字?
2020-2-11 21:35
0
游客
登录 | 注册 方可回帖
返回