本帖最后由 Ganlv 于 2019-4-1 21:23 编辑
CrackMe 文件下载
包含 a.exe 程序,main.c 源代码,README.md 说明文件。
先不要源码哟,先尝试破解哦。
使用方法
- 解压到一个文件夹中。
- Shift + 右键在此处打开命令行(或者是 Powershell)。
- 执行
chcp 65001 把命令行改成 UTF-8 字节集。
- 执行
a.exe 。
- 使用 CE 愉快地玩耍吧。
玩法
这个小游戏包含多个关卡,关卡的目标是一样的,但是血量数据的存储方式是不一样的:
您现在的血量是 100,每按一次回车,血量都会减少,把血量改成大于 100 的数值则可过关。
程序逻辑执行顺序:
- 显示当前血量
- 判断是否大于 100
- 如果大于 100 则过关
- 否则等待回车
- 血量减少,并回到第 1 步。
进入关卡后,输入 q 再按回车即可返回主菜单。
包含关卡(1 ~ 9):
使用 CE 搜索内存,然后修改内存。数据在内存中存储的方式是不一样的,你需要找到不同的数据结构。
当然如果你使用 x64dbg 直接分析反汇编那就太简单了,毕竟这个 C 语言程序总共代码也没有多少,定位到关键代码一点都不麻烦。真正的游戏程序不会让你这么轻易找到关键代码的,你应该试试能不能根据内存变化找到关键代码。
- 关卡 1-3 简单地直接搜索即可。
- 关卡 4-6 需要用未知初始值和改变的数值模糊搜索,然后反汇编分析算法。
- 关卡 7-9 是我自己想的方法,看源码的话原理不是特别难以理解,但是的确很烦人,我自己都没有找到通用的方法来应对这种加密方法。
|