1. 首先,先选择打开Acid burn.exe,如图1所示
图1
2. 点击运行,或按F9,会出现程序的初始界面,如图2所示
图2
3. 点击工具栏中的K,进入如下界面,可以查看调用了哪些程序,如图3所示
图3
4. 图3中最后一行即为所调用的程序
5. 根据图4,,我们可以判断出,程序的入口地址为0042F784-0042F79C
图4
6. 我们在0042F784处设置一个断点(鼠标选中后按F2)如图5
图5
7. 重新运行程序(直接点击运行按钮或鼠标选中后按F9),如图6所示
图6
8. 鼠标右击0042F797,二进制 - 用NOP填充,如图7所示
图7
9. 填充成功后如图8所示
图8
10. 重新载入后,可以看到该条指令被恢复了,如图9所示
图9
11. 点击RETN,在栈窗口中可以看到返回的地址00425643,如图10所示
图10
12. 我们跳转到该地址,找到call指令进行NOP填充,在其上一条地址处设置断点,如图11
图11
13. 对call指令再次进行NOP填充,如图12所示
图12
14. 重新运行,我们可以看到程序的界面会自动弹出,如图13所示
图13
15. 进入输入密码后,发现依然无法登录
16. 我们通过搜索关键字来对指令进行定位,如图14,我们可以寻找“Sorry,The serial is incorect!”
图14
17. 通过插件中的中文搜索引擎-智能搜索进行搜索,如图15
图15
18. 右击选择find,并在弹出的框中搜索Sorry,如图16、17、18所示
图16
图17
图18
19. 点击该条语句,回到原来的窗口,跳转到如图19所示的位置,向上寻找到PUSH EBP,如图20所示的位置
图19
图20
20. 在PUSH EBP的位置设置断点,再次尝试登陆程序会发现,“Sorry,The serial is incorect!”的窗口已经不出现了
21. 因为没有成功登录,所以还需要查找另一个Sorry,跳转到原先的地址,找到断点,执行单步步过操作
22. 到 jnz的位置后,我们将寄存器窗口中z 后的0 改为1,如图21,就可以出现如图22所示的弹窗
图21
图22
23. 在 Serial界面中我们也采取相同的操作,同样会得到如图22所示的弹窗。