上一个内容:13.优化界面化的游戏辅助
Ollydbg是一个调试工具,它可以一步一步的运行一个程序并且还能很直观的看到被调试程序的寄存器状态、栈状态。Ollydbg需要以管理员方式运行!
下图附加程序是调试一个正在运行的进程:
点击了附加之后发现没有我们想要的进程:
这时把Ollydbg关了然后鼠标放它的在快捷方式上右击选择属性:
然后在它的目标上写 -p 被调试的进程pid,然后点应用再点确定,然后再打开Ollydbg
再次打开Ollydbg之后它就默认附加到pid位26020的进程上了,在打开附加窗口也可以看到,如果这样还没有后面在写其它方式
然后重新打开的Ollydbg是如下图的样子全是空的:
点一下暂停:
点了暂停之后就有进程的代码了
然后再ctrl 加 g输入减伤害的指令地址就可以看到之前做hook的代码了
这时双击它可以打断点
打断点之后点调试-》运行,上面的操作让游戏进程暂停了,暂停之后游戏没法点处于一个卡死状态,需要再Olldbg点一下运行,然后再让怪物打一下,如下图右下角显示的是暂停
点击运行
点了运行之后如下图右下角显示的是运行,这时游戏就可以继续操作了
然后让怪物打一下就会进入断点(之前分析的0041FDB2位置是hp-伤害操作,只要怪物一攻击我们就会执行到0x41FDB2位置,然后我们在这打了断点它处理器执行到0041FDB2位置时就会断点住),可以看到当前寄存器的值,当前栈的值,下图红框部分
然后Ollydbg的快捷键
如果Ollydbg打开之后如下图的样子:
通过查看菜单可以找回需要的窗口,常用的就cpu、内存、调用堆栈
然后下图中红框位置的代码是典型的this.函数(1,2);这样的成员函数调用,ECX寄存器用来存储this,它上面的两个push是函数的参数,两个push表示此函数有两个参数。
条件断点:鼠标放到要打断点的指令上然后右击就可以看到下图的菜单了
使用方式:下图中的条件是判断esi是不是人物的this(esi == 0x4CEF08)(0x4CEF08是之前分析出的人物this,也就是人物结构首地址),效果就是只有当人物攻击怪物时才会进入断点
条件断点是紫色