断点介绍:
shark恒老师说有四种说法,但是其实都是相同的
第一个读法:普通断点
第二个读法:F2断点
第三个读法:INT3断点( int3其实就是汇编指令 )
第四个读法:CC断点 (CC其实就是断点时候的十六进制的数据)
断点的实现:
1、载入OD找到以下地址进行断点,然后进行运行,发现运行到了该地址
0040101A |. /74 01 je short CRACKME.0040101D
那么断点是如何实现的呢?自己根据shark恒老师讲的复述一遍
其实十六进制会发生改变的,我们自己把这个断点的地址的中的HEX数据放在eax寄存器中进行观察
首先观察到0040101A地址中的数据为74 01
然后我们在下面随机挑选一个地址 进行反汇编指令为mov eax,dword ptr ds:[0x40101A]
,然后单步步过,发现EAX中的数据为A1C301CC,如下
重点观察后面01CC,发现JE跳转的HEX 74 变成了 CC ,然后就会出现异常,接着OD就会进行异常的捕获最后完成了断点的实现
CC和INT3的关系
其实都是一样 一张图就可以明白了
bp MessageBoxA 和 bpx MessageBoxA之间的区别
都是OD中的快捷键进行断点,但是是有区别的
bp MessageBoxA
的断点设置是断在user32.dll动态链接库模块领空中的首地址
bpx MessageBoxA
的断点设置是断在当前程序领空中的所有调用MessageBoxA windows api函数的CALL
然后我们进行反汇编跟随看看,可以看到都是在当前程序下CALL地方处下的断点