
论文摘要
调试器是编写程序必不可少的工具软件,其功能强弱直接影响到开发效率。高级语言集成开发环境都带有全功能调试器,而计算机专业人员经常使用的宏汇编语言,在Windows下却没有完善的调试环境支持。本文对Win32调试的原理进行了深入研究,并实现了针对宏汇编语言的全功能调试器。本文从可执行文件产生的分析开始,对可执行文件的组织结构、模块的映射及两种类型Windows应用程序的本质区别等Windows程序的运行机制进行了深入分析。本课题完成的调试器主要包括静态分析和动态调试功能。静态分析通过对可执行文件的分析得到程序的入口地址、节区信息、从动态链接库导入的符号信息、自身导出的符号信息等内容。动态调试是在程序的执行过程中观察运行情况,调试时控制程序以单步方式、断点方式运行并可检查中间结果;消息处理是Windows应用程序的灵魂,钩子是系统提供的消息处理的监视点,利用钩子将被调试程序的消息捕获,显示这些消息可以观察程序的执行情况;Win32 API是操作系统提供的应用程序编程接口,拦截指定API就可以知道程序调用了哪些系统服务。单步运行、断点运行、消息捕获和API拦截是动态调试的主要内容。采用C++语言与汇编语言混合编程设计的调试器实例实现了以上功能,其正确性已得到了验证。论文最后对课题工作进行了总结,指出了研究的不足之处及对今后研究的展望。
论文目录
摘要Abstract第一章 引言1 课题研究的背景和现状2 选题意义3 课题设计内容4 论文组织结构第二章 Windows 程序的运行机制分析1 Windows 应用程序编程接口2 Windows 可执行程序文件产生3 Windows 应用程序类型4 Windows 可执行程序文件格式4.1 可执行程序文件格式发展历程4.2 PE 格式可执行文件结构5 Win32 汇编语言源程序格式6 模块的映射7 内核对象和句柄8 保护模式与特权级9 匈牙利表示法第三章 静态分析的设计与实现1 动态链接库1.1 动态链接库的定义和组织1.2 动态链接库的数据共享1.3 动态链接库的使用2 静态分析2.1 程序入口地址获取2.2 可执行文件节区分析2.3 隐式加载的动态链接库分析2.4 形实替换程序2.5 PE 文件导出函数分析2.6 导入和导出的关系2.7 静态分析时的地址转换2.8 文件合法性校验第四章 动态调试的设计与实现1 Windows 下程序的执行方式1.1 进程的创建1.2 虚拟地址空间2 带命令行参数加载程序3 单步执行调试3.1 创建被调试进程3.2 调试循环体3.3 进程上下文环境的设置及寄存器的读写4 断点执行5 寄存器和变量的查看6 消息捕获7 API 拦截第五章 软件架构选择第六章 调试器运行实例第七章 结论1 课题总结2 后续工作的展望参考文献致谢在读期间取得的科研成果
相关论文文献
标签:动态调试器论文; 集成开发环境论文;