断点原理解析

1、INT3断点

也就是F2断点,CC段点

这里我们用OD打开一个文件,下断点

[re入门]OD的各种断点_反调试

然后我们用CE打开,然后手动添加地址,输入00C31330,将数值转换为16进制显示,类型为字节,如下图

[re入门]OD的各种断点_信息安全_02

原理: 1、替换指令,用int3指令

2、od检测到int3指令之后会引发一个异常并捕获它,这是程序就会中断;

3、删除int3指令,还原之前的代码

优点:可以下无数个int3断点

缺点:很容易被检测到(如果将断点下在函数的内部或者末尾,例如可以将断点下在函数入口的下一行,就可以躲过检测了)

反调试:保护程序 反反调试:破解程序

FARPOC结构体

GetProAddress函数 检索指定的DLL中输出库函数地址

LoadLibrary函数

2、硬件断点

[re入门]OD的各种断点_信息安全_03

[re入门]OD的各种断点_程序运行_04

和调试寄存器有关,DR0-DR7

DR0-DR3:用来保存我们需要断点的地址

DR4-DR5:官方没有说

DR06:状态寄存器

DR7:控制寄存器

原理:

1、用0-3,记住我们需要断点的地址

2、用7,用来设置相应的控制位

3、程序运行到那个地址,CPU就会向OD发送异常信息,程序就中断了,等待用户操作

优点:速度快,不容易被检测(没有修改原来的代码,用的是寄存器)

缺点:最多只能下4个硬件断点(只有0-3是保存地址的)

3、 内存断点

前提知识:内存属性3点Read、Write、Execute

[re入门]OD的各种断点_信息安全_05

原理:1、对这个地址赋予了不可读、不可写、不可执行的属性

2、程序运行到这里会产生一个异常

3、OD捕获异常,程序中断

优点:不改变汇编代码

4、消息断点

[re入门]OD的各种断点_寄存器_06

[re入门]OD的各种断点_寄存器_07

5、条件断点

带条件的int3

在要断的地方,shift+F12

在这里插入图片描述