OllyDbg使用经验小结

类别:编程语言 点击:0 评论:0 推荐:

[原创作者:vical,转帖请保留完整]

上次在一Cracker BBS即兴写了一个多钟头,那知提交的时候它说俺验证码错,让俺的Crack界处女作付诸东流,F! 原先写的都忘了,这回就再写过一篇吧.

OD是win32下公认的骨灰级调试器,它虽工作在Ring3下功能没有Softice和trw强,但在方便\易用\智能之处却远超这两个Ring0调试器直逼IDA.如果能多利用它提供的特色功能,使用起来就会更轻松舒畅,俺用OD不是很长时间,就把那么一点点的使用经验写上来,错误总是不可避免的,只作个抛砖的作用,把大家的玉引出来.也算是对QQ群上常问OD怎么用的朋友作点交待了.
1.快速定位功能.
  在代码窗口按"*"号可定位到当前EIP所在的反汇编语句处,按"-"号可转到上一次聚焦的语句上,按"+"号转到下一个聚焦语句上,在跳转\CALL\RET语句处按回车可跳到目标代码处,前提是当时OD能计算得到跳转的目标地址.而"+"号和"-"号可以连续按.在堆栈窗口也是如此.不同的是此时"*"号跳到ESP所指堆栈位置.
2.命名
  在反汇编语句或内存窗口点选再按分号可输入名字,虽没IDA的结构处理功能但还是不能小看其作用,我习惯上给有多处调用或跳转的报错和注册成功代码段起名,给输入的用户名\序列号起名,这样做好再看反汇编结果,结构就清晰明白得多了.
3.显示相对地址
  在反汇编窗口\内存窗口\堆栈窗口显示地址的地方双击试试,会发现它显示"==>"号,上下的地方就显示相对于这一句的地址例如$+0F\$-4等,这在堆栈应用得比较多:定位到EBP,双击地址,此时就能很容易地看出局部参数的位置啦.再不怕local.1\local.2等难找难算的标号了.
4.附加功能
  此项功能可以躲开很多Anti-debug的软件,俺习惯上先运行目标软件,故意让它报错.再打开OD附加,用F12暂停,ALT+F9返回到用户模块,转到报错窗口按确定,会中断在OD中,一般上都是MessageBox报错的下一行.CTRL+A分析.再看它的跳转来源.如果在前面ALT+F9返回不了用户代码的话,可以在此时看堆栈找出调用结构,直接跳到用户模块也行.
5.条件中断
  如果碰到某一个CALL ebx之类语句所在段总是被调用,但又只想跟其中一个的话,可以在此句按Shift+F2写入ebx==0ff之类的条件表达式来下中断.此功能在MessageBox和TranslateMessage时特别有用,前者是判断显示信息的第一个字节,用后者时要先获得按纽的ID再用eax==ID下断.具体怎么使用自己试一试吧.

暂时先写这么多,想到什么再完善.

本文地址:http://com.8s8s.com/it/it28311.htm