NKgame reverse
实验步骤
- 逆向分析game.exe二进制代码的主要逻辑结构和重要数据。
1)查找主要函数和流程:使用反汇编工具打开game.exe,查找程序的入口点,然后分析主要函数和流程。
先扔DIE——
扔IDA x32里——
分析game.exe程序流程——
整个程序共分为了4个关卡,四个关卡对应四个地图,玩家需要操控主角通过这四个关卡,然后会回到最开始的关卡,在这个关卡的地图的下方的海边找到最后的NPC并与之对话就可以得到最后的flag。
2)理解关卡切换条件:找到关卡切换的条件判断语句。
对于这四个关卡,每个关卡的通关条件是要击杀足够多的怪物,只有击杀的怪物数量足够后,才能进入下一个关卡。
3)识别主角和怪物的关键数据:查找和理解主角和怪物的血量、移速、攻击范围、攻击力等关键数据的使用方式。
- 修改game.exe二进制代码, 在实验报告中说明代码修改的具体过程。
1)打开游戏进行体验。体验后发现,角色死亡后,屏幕上显示“died”,因此在字符串中搜索,来找到游戏人物死亡判定的代码
跳转到程序代码中,将jb改成jmp,就实现了不死
2)继续闯关,进入下一关时却给出如下提示:You need to kill enough monsters!
再次利用ida pro搜索字符串You need to kill enough monsters!
跳转到程序代码中,将jz改成jmp,就可以直接开始下一关。
3)继续游戏——
二、实验结果
运行游戏,未再出现相关失败提示,最后通关并得到flag:
(第一次不小心跳过flag了,在flag这里下个断点)
flag{a2fdkd80xo}