[JAVA] 《攻防世界reverse练习区gametime》学习

4072 0
小菜鸟一枚 2021-6-25 21:04:07 | 显示全部楼层 |阅读模式
0x1下载cm
  2.通过cm名字可知道是一个小游戏,打开后有提示,要求输入对应的按键,否则程序退出
  3.手速太慢的小菜鸟这游戏玩不通关,只能想办法开挂了。
0x2调试分析
  1.“工欲善其事必先利其器”,先去某论坛下载工具stduy pe,一会用来去除重定位表,方便调试。
  2.把程序拖进stduy pe,如图所示:
  3.发现程序没壳,32位程序,点一下密码学检测,没发现什么,我的电脑是win7,为了一会调试方便,直接点固定基址,然后将保存出来。
  4.因为是32位程序,所以选择OD进行调试,直接Shift+F9跑起来,这肯定是失败的,看一下失败提示的字符串,如下图所示:
  5.接下来试试能不能爆破,通过OD搜索字符串,找到关键跳两处:
  1. 004014DB  |. /75 26         jnz short 2.00401503                     ;  第一处
  2. 004014DD  |. |FF75 10       push [arg.3]
  3. 004014E0  |. |FF75 14       push [arg.4]
  4. 004014E3  |. |68 707A4100   push 2.00417A70                          ;  key is %s (%s)\r
  5. 004014E8  |. |E8 86050000   call 2.00401A73
  6. 004014ED  |. |E8 31FFFFFF   call 2.00401423
  7. 004014F2  |. |68 807A4100   push 2.00417A80                          ;  \rUDDER FAILURE! http://imgur.com/4Ajx21P \n
复制代码
  1. 00401563  |. /75 21         jnz short 2.00401586                     ;  第二处
  2. 00401565  |. |FF75 0C       push [arg.2]
  3. 00401568  |. |FF75 10       push [arg.3]
  4. 0040156B  |. |68 707A4100   push 2.00417A70                          ;  key is %s (%s)\r
  5. 00401570  |. |E8 FE040000   call 2.00401A73
  6. 00401575  |. |68 D07A4100   push 2.00417AD0                          ;  UDDER FAILURE! http://imgur.com/4Ajx21P \n
复制代码

  6.通过字符串搜索,找到有两个跳向失败的地方,发现游戏运行时,一定会暂停在这两个地方,改变寄存器z标志,就能让它跳走,程序继续执行。
  7.那么会不会运行结束后flag自己出来呢?将这两处改为jmp,复制到可执行文件保存出去。
  8.运行程序,得到flag:no5c30416d6cf52638460377995c6a8cf5,如果所示:
0x3总结
  1.以结果为导向,分析为什么会失败,找到失败的原因进行解决。
  2.在没有思路不知道下什么断点的时候,不妨试试爆破,也许会有惊喜。
  3.善用工具,固定基址,寻找程序弱点。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行