【实验目的】
1) 掌握利用查找字符串的方法下断点,找到关键跳转,更改跳转命令,实现软件破解。
【实验原理】
1) 利用软件登录时,提供的关键字,找到关键跳转下断点,更改跳转命令,改变程序流程。
【实验环境】
工具:OllyDBG
软件:C:\software\21.跳转破解\跳转.exe
【实验步骤】
一、了解软件验证机制
1.1 运行跳转.exe软件,在用户名和密码栏中输入任意数值,单击“登录”按钮。如图1所示

1.2 弹出关键字提示对话框,记录下关键字“密码不对,请重新输入”。 如图2所示

二、利用PEID查壳
2.1 进入软件目录(C:\software\21.跳转破解),选择目标软件,右键发送到PEID,进行查壳。如图3所示

2.2 PEID软件提示无壳。如图4所示

三、利用OllyDBG程序暴力破解软件
3.1 将跳转.exe载入OllyDBG程序,单击运行按钮(或快捷键F9)。如图5所示

3.2 单击反汇编窗口,按Ctrl+G快捷键,在弹出的对话框中输入“00401000”,单击“确定”按钮。然后右键菜单选择“中文搜索引擎”->”智能搜索”。 如图6所示

3.3 在弹出字符串界面,右键菜单选择”Find”(或按快捷键“Ctrl+f”),在弹出对话框中输入“密码不对,请重新输入”,进入关键字查找。如图7所示

3.4 双击“密码不对,请重新输入”处,程序自动跳转到反汇编窗口” 密码不对,请重新输入”对应的那一行。向上查找关键CALL(注意关键CALL和关键跳转是对应的),一般情况下为往上数第二个或第三个CALL,即为关键CALL,在关键CALL处下断点(快捷键F2)。图中向下的三角号表示向下跳转,我们要找的就是能跳过“密码不对,请重新输入”这行的向下跳转。如图8所示

3.5 向上查找到能跳过“密码不对,请重新输入”这行的关键跳,在关键跳转出下断点(即按F2)。如图9所示

3.6 单击工具栏中的“运行”按钮,软件登录界面输入帐号和密码(输入值为任意,因为要观察软件在输入错误的帐号和密码的情况下,这个关键跳转是否会实现),发现跳转未实现(红色代表实现跳转)。如图10所示

3.7 可见这个跳转未实现,就出现了“密码不对,请重新输入”提示,所以为关键跳转.。单击关键跳,右键菜单选择“汇编”(或按快捷键空格)。如图11所示

3.8 弹出编辑对话框。如图12所示

在编辑框中把“je”改成“jmp”(即把条件跳转改成无条件跳转,程序运行到“jmp”行时,直接跳过“密码错误,请重新输入”)的错误提示,然后单击“确定”按钮。如图13所示

3.9 NOP填充后,选择刚才的填充代码,右键菜单选择“复制到可执行文件”->”选择” 。如图14所示

3.10 在弹出的对话框中,右键菜单选择“保存到文件”。 如图15所示

3.11 弹出保存对话框,起名保存即可。如图16所示

3.12 双击刚才脱壳后的程序,任意输入帐号和密码,正常播放(播放一段时间后自动退出,原因不明,但破解的知识点讲道了)。如图17所示

[?]Q1.最后程序莫名崩溃原因不明。