前言
本文中博主使用IDA Pro
简单分析并反编译了 Windows 扫雷 (winmine.exe),请注意:反编译不可能获取源代码!
Windows 扫雷是一款内置于 Windows XP 操作系统里的小游戏,博主小学的时候曾经玩过,不过就连初级都没有通关过(现在也一样 T_T)
正文
话不多说开始操作。首先打开 IDA 进入主界面并分析 winmine.exe。
修正数据
跳到data
段,将有很长的空白数据的位置合并为数组 (快捷键:小键盘*号)(字符串合并为字符串数组 Alt+A)
同时,需要对一些变量类型进行修复。比如说明明占用四个字节但是却显示为byte
的变量,就要修改为int
。
分析代码
处理完数据后,去start
函数找到main
函数并将声明写出来,别忘了去函数中修改声明。
接下来定位到WinMain
函数,分析主窗口的消息处理。跟进去将数值替换为WM_xxxx
的宏。然后分析代码,将能理解的代码改写为自然语言。
感觉分析的差不多之后,就可以按Ctrl+F5
导出C代码了。同时使用Resource Hacker
导出一下数据文件。
处理后续
进入VS开一个新项目,将资源文件复制进去编译,根据输出的错误处理资源文件。
将代码复制进去并把ida自带的defs.h
加入到项目中。
然后开始修代码