• 标 题:对于用ollydbg的一点补充 (2千字)
  • 作 者:bjstan
  • 时 间:2002-4-18 16:27:05
  • 链 接:http://bbs.pediy.com

没有具体的破解,不过是些个人经验

ollydbg1.06集调试和文件修改于一身,其中的直接显示字符串的功能是不必说,还有针对cpu窗口中的5个窗格的右健菜单,功能非常强大。

修改文件,选view,file,打开文件后,选disassemble,马上可以看到
反汇编后的命令(32位的hiew?),选中一行后按空格键,直接修改命令,不必记住机器码,改后选右键菜单的save,可以保存到文件。如果先analyze
后,可以通过ctrl+G,写虚拟地址,直接找到行,不必再转成文件偏移地址,改后直接选copy to exeutive file,注意,必须让光标停在你改的行上,否则不能修改,如果改错了,选undo selection。

在调试中,animate step over/in 这两个命令非常方便,尤其我觉得在对付nag程序的时候,几乎不必设断,比如,先analyze程序,然后选animate
step over或in,程序开始运行,光标在命令行上滑过(要的就是这种效果),然后nag出现,仔细看看反汇编窗格,是不是光标停在一个call上,它到底call什么我们不关心,反正call出了nag对话框,然后往上看看,极有可能有个jz,jnz,直接改了跳过即可(一般程序而言)

然后有两个命令是非常好的东西,hit trace和run trace,hit trace可以用来查看在你选定的命令范围内命令被执行与否,执行了前面就有个红竖线,而run trace可以为你设定的命令范围作一个运行的profile,有了它,你就可以完全掌握程序的跳转,在爆破的时候不用为了一个个跳转反复的找。

其次,ollydbg的拷贝功能非常好,在任意行一都可以拷贝到剪贴扳,或拷贝到文件,甚至在上面说的由run trace做出来的profile,你都可以copy the whole table,留下来细细研究。

在调试中寄存器的值都能用10进制16进制看到的,方法是只要选中如eax,ebx然后按回车,省得你老是?这?那的敲命令,如果要r fl z,只要双击0状态标志Z后面的值就可以了,非常方便

值的一提的是follow命令,在反汇编中选中一条命令,如果其中有用到内存中的地址,那么follow in dump有两个选项,一个是selection一个是address,sellection到命令所在的虚拟地址,address到其中用到的内存地址,这样可以非常方便的看到到底有些什么东西,不用反复用d命令。
在dump区,可以选中某个位置,选breakpoint/memory access或memory write,不过遗憾的是只能设置一个,要想再设,必须清掉上面的一个。

ollydbg的条件断点可以按寄存器,存储器,消息(必须是消息的数字,如wm_command就是111)等等设断,非常强大,一旦设了之后记录到文件中,下次restart程序还能用,不用拿笔记,很方便。

另外,watch功能可以选条件,某个寄存器等表达式来监视,跟平时调试程序时用到的东西差不多,对于制作注册机有时必不可少的要监视某个表达式值的变化是非常有用的。

ok!
就这些了