天天看点

OD笔记

1、字串参考:注册失败提示的字串;             

2、函数参考:GetDlgItemText(对话框文本)、GetWindowText(窗口标题文字或文本控件内容),找到后设置条件断点 F9运行至断点处按Alt+F9回到程序领空,上面的语句即为Call函数;

3、内存访问断点、写入断点;

4、消息断点及 RUN 跟踪;

5、得到密码之前的多次循环可能为16进制转换为10进制, 得到密码方法多为由用户名经算法计算后的16进制转换为10进制;

6、nag窗口若有“确定”“取消”按钮,去除时需确定选择两个按钮后寄存器返回值有何不同,然后将调用语句改为寄存器赋值即可;

7、程序反调试功能,查找名称isdebuggerpresent、CheckRemoteDebuggerPresent,改变返回值去除反调试功能;

   CreateToolhelp32Snapshot创建系统正在运行程序名单,每次获取一个,使用loop实现获取全部名单,GetFileAttributesA获取档案属性,若档案不存在返回-1若存在则根据返回值结束程序;

8、SEH处理。程序单独运行时遇到异常会由操作系统将控制权交给预定的SEH来处理异常,OD调试时遇到异常则无法处理导致程序结束,Ctrl+F7、F8、F9可由OD将控制权交给预定SEH来处理异常;

9、SetUnhandledExceptionFilter,设定最终的“SEH”,OD将控制权交给SEH时可能无法 处理某些特殊异常,该种情况便会由最终“SEH”来处理;

10、注册失败无窗口提示且没有用GetWindowTextA等获取字符串,按“register”后暂停  程序,W查看窗口,找到Button并下断点,输入name&serial后鼠标移到“register” 便会断下,取消断点,M查看内存,“.text”代码段下断点,F9断下处即为验证码检验处;

11、repne   scas byte ptr es:[edi],检查输入长度典型结构;

12、Ctrl + ↑/↓一行一行滚动汇编窗口(数据与代码混合时,此功能非常有用)。

13、如果附加不成功,可以巧妙利用OllyDbg的即时调试器功能来调试。先看一个例子,运行A.exe,其会调用B.exe,此时用OllyDbg附加B.exe,OllyDbg会无响应。解决办法:在“Options/Just-in-time debugging”中设置OllyDbg为即时调试器,将B.exe的入口改成CC,即INT 3指令,同时记下原指令。运行A.exe,其调用B.exe,运行到INT 3指令会导致异常,OllyDbg会作为即时调试器启动并加载B.exe,此时再将INT 3指令恢复原指令,继续调试。

继续阅读