实验材料:XP(x86)专业版SP3 虚拟机、对应的XP符号文件安装包、windbg(x86)、winmine
这个实验的思路是直接修改扫雷程序的指针,将指针指向Gameover函数,从而达到直接获胜的目的。
一、先打开windbg,点击Open Executable
二、选择winmine(扫雷)程序,点击打开
三、设置一下符号路径,输入
.sympath SRVc:\symbolshttps://msdl.microsoft.com/download/symbols,之后再输入!Sym noisy将windbg设置为输出更多的信息,最后输入
.reload /f重新加载符号,可以看到,由于微软的符号服务器被墙,下载不了缓存文件。
四、提取离线安装包中的符号,把对应的pdb文件复制到windbg需要的文件夹中。这个文件夹的位置可由.reload失败之后的输出信息中得到,如ntdll.pdb应当放到c:\symbols\ntdll.pdb\1751003260CA42598C0FB326585000ED2中
这样的文件有很多,这里我就只放了winmine.pdb和ntdll.pdb。
五、输入lm,可以看到winmine和ntdll已经被找到了。
六、输入g,让程序运行起来,再按下break中断一下程序。
七、输入x winmine!*over*,寻找那个让游戏结束的函数,x命令是检查符号的意思,可以看到函数的地址是0100347c。
八、输入~*,显示所有的线程,
再输入~0s,切换到0号线程。0号线程就是扫雷的线程。
九、输入r eip=0100347c ,r是修改寄存器的意思,eip是程序指针的意思。这段代码的意思就是将程序指针指向GameOver函数。
十、输入g,将窗口切换到扫雷程序,可以看到游戏已经弹出了破纪录对话框。
完结!
XPx86专业版SP3符号文件
下载地址:https://pan.baidu.com/s/1SNCw8lrCpM9PuPQxiHstKw 提取码:5rgp