1. INT3断点
常用的F2下断点为该断点,这种下断方式会改变机器码为0xCC,当程序执行到此时停止。但是这种方法会被检测,如在某API下断,程序在执行该API前有检测代码,检测是否为0xCC,如果检测到则直接退出。在API的前几行下断可以进行绕过
2. 硬件断点
常见于ESP脱壳定律,ESP脱壳定律为程序在运行前会先对压缩、加密的代码解压、解密,在执行。程序一开始会把当前的状况全部压入堆栈。在自行脱壳完毕后再弹出恢复现场。利用这个特性,可以在在堆栈弹出恢复时下断。硬件断点是对寄存器下断,可以应用在这里
3. 消息断点
windows本身由消息驱动,例如crackme常见的形式,输入字符串后点击check按钮,我们需要的就是点击按钮后的处理逻辑。此时可以使用消息断点。在程序运行后,所有的内容输入完毕,刷新窗口,在对应的button上设置WM_LBUTTONUP断点,当点击按钮后,程序被断下来。此时断下来之后,程序在系统领空,若要返回程序领空需要设置内存断点。
4. 内存断点
接消息断点,要返回程序领空。程序此时在内存,若要从系统领空回来,必然执行到内存里改程序的.text段。设置内存断点,在执行到程序的.text段时停止运行即可