4.OD-调试示例1

使用TraceMe.exe

OD按F3加载TraceMe,再按F9运行起来,如图所示

 

设置一个断点:

Ctrl+G打开跟随表达式窗口

4.OD-调试示例1_第1张图片

OllyDbg里对API的大小写敏感,输入的函数名大小写必须正确,比如以下两种写法都是不正确的:

4.OD-调试示例1_第2张图片

点击OK后,会跳到系统User32.dll的GetDlgItemTextA函数入口处:

按Alt+B快捷键或单击B按钮打开断点窗口,如图所示:

 

这里显示的断点不包括硬件断点

Ctrl+N :打开当前模块的名称(标签)列表

比如刚开始进入TraceMe时,按Ctrl+N打开的是TraceMe的名称列表

在Ctrl+G查找User32.dll的GetDlgItemTextA成功后:

输入字符,按OK,断点断下来,

按Alt+F9回到调用函数的地方:

4.OD-调试示例1_第3张图片

我们发现,入口地址是004011AE,那么对它下个断点(F2),同时ALT+B打开断点窗口,把GetDlgItemTextA禁用掉(使用空格可以切换)

重新点击Check,断下来了,中断后的代码如下:(图和上面图一样)

4.OD-调试示例1_第4张图片

后面的注释是我顺便加的,方便理解,;键是加注释的快捷键.

那么要成功注册现在有两种方法:

1.在运行到004011F5时直接改ZF为0

2.直接加入nop取代,这个是选中004011F5这一行,双击鼠标或单击空格键,输入指令NOP:

如图:

4.OD-调试示例1_第5张图片

如果新的指令比原来的指令短,只要你勾选了对话框上的“Fill with NOPs”选项,OllyDbg就会用NOP指令(no operation,空操作指令)来补充

为了使这个改变写入磁盘文件中,方法是用鼠标选中修改过的代码,单击鼠标右键,执行"Copy to executable/Section"命令:

比较好懂的,Selection,选中部分,All modifications肯定就是所有修改过的地方

像这种屏蔽程序的某些功能或改变程序流程,使程序的保护方式失效的方法称为patch(补丁)或爆破

接下来,算法分析:明显在004011E5这下个断点:F7step into断点:

刚我们跟踪的结果是eax为密码字符串地址,edx为用户名字符串地址,ebx为用户名字符串长度

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(4.OD-调试示例1)