网络安全编程:调试API函数之产生错误

Windows中有些API函数是专门用来进行调试的,被称作Debug API,或者是调试API。利用这些函数可以进行调试器的开发,调试器通过创建有调试关系的父子进程来进行调试,被调试进程的底层信息、即时的寄存器、指令等信息都可以被获取,进而用来分析。

OllyDbg调试器的功能非常强大,虽然有众多的功能,但是其基础的实现就是依赖于调试API。调试API函数的个数虽然不多,但是合理使用会产生非常大的作用。调试器依赖于调试事件,调试事件有着非常复杂的结构体。调试器有着固定的流程,由于实时需要等待调试事件的发生,其过程是一个调试循环体,非常类似于SDK开发程序中的消息循环。无论是调试事件还是调试循环,对于调试或者说调试器来说,其最根本、最核心的部分是中断,或者说其最核心的部分是可以捕获中断。

产生中断的方法是设置断点。常见的产生中断的断点方法有3种,分别是中断断点、内存断点和硬件断点。下面介绍这3种断点的不同。

中断断点,这里通常指的是汇编语言中的int 3指令,CPU执行该指令时会产生一个断点,因此也常称之为INT3断点。现在演示如何使用int 3来产生一个断点,代码如下:


  1. int main(int argc, char* argv[])  
  2.  
  3.   __asm int 3  
  4.   return 0;  

代码中使用了asm,在asm后面可以使用汇编指令。如果想添加一段汇编指令,方法是asm{}。通过asm可以在C语言中进行内嵌汇编语言。在__asm后面直接使用的是int 3指令,这样会产生一个异常,称为断点中断异常。对这段简单的代码进行编译连接,并且运行。运行后出现错误对话框,如图1所示。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章