博客专栏  >  编程语言   >  调试器的实现

调试器的实现

win32下实现简单的调试器

关注
1 已关注
18篇博文
  • 编写windbg调试器扩展 高级篇

    其实,前面几篇文章已经可以写出一个调试器扩展,但是编写这样的调试器扩展,其所能提供的功能并不比windbg脚本多。通过这篇文章,我希望大家能从中了解一些调试器扩展所特有的能力(要不然还费神写什么代码)...

    2017-08-15 22:15
    103
  • 编写windbg调试器扩展 进阶篇1

    作为windbg调试器扩展的第三篇,这篇文章将结合代码,梳理调试器扩展的骨架脉络。     先附上代码片段: #include "dbgexts.h" extern "C" HRESULT CALLB...

    2017-08-15 00:11
    278
  • 编写windbg调试器扩展 入门篇2

    前面一篇是用sources和nmake组合编译生成调试器扩展,步骤比较繁琐,我相信读者应该更倾向于用IDE来编写代码。本篇有2个主题:1.将前面的代码移植到VS上,用IDE编译;2.调试生成的扩展命令...

    2017-08-10 22:18
    231
  • 编写windbg调试器扩展 入门篇1

    我博客的左侧专栏曾经转过windows下编写调试器的一系列文章,这类文章是从零打造调试器,而这篇文章是介绍如何为windbg编写调试器扩展命令。 0.前言     windbg的命令有很多,其中以"!...

    2017-08-10 00:13
    284
  • Debugger APIs - Writing a Debugging Tools for Windows Extension (编写Windbg扩展)

    转自:https://msdn.microsoft.com/en-us/magazine/gg650659.aspx Troubleshooting production issues ca...

    2017-07-19 23:53
    425
  • Debugger Engine API - Writing a Debugging Tools for Windows Extension, Part 2: Output (最无趣的一篇)

    转自:https://msdn.microsoft.com/en-us/magazine/hh148143.aspx In this second installment of my ser...

    2017-07-19 23:56
    469
  • Debugger Engine API - Writing a Debugging Tools for Windows Extension, Part 3: Clients and Callbacks

    转自:https://msdn.microsoft.com/en-us/magazine/hh205613.aspx In this third installment about the De...

    2017-07-19 23:58
    303
  • [Win32]一个调试器的实现(十一)显示函数调用栈

    本文讲解如何在调试器中显示函数调用栈,如下图所示:   原理 首先我们来看一下显示调用栈所依据的原理。每个线程都有一个栈结构,用来记录函数的调用过程,这个栈是由高地址向低地址增长的,即栈...

    2016-09-30 13:37
    828
  • [Win32]一个调试器的实现(十)显示变量

    上回介绍了微软的符号模型,有了这个基础知识,这回我们向MiniDebugger中添加两个新功能,分别是显示变量列表和以指定类型显示内存内容。显示变量列表用于列出当前函数内的局部变量或者全局变量;以指定...

    2016-09-30 13:33
    712
  • [Win32]一个调试器的实现(九)符号模型

    在接下来的文章中会讲解如何在调试器中显示局部变量和全局变量的类型和值。实现这个功能一定要有调试符号的支持,因为调试符号记录了每个变量的名称,类型,地址,长度等信息。这不是一件轻松的事情,因为你首先要对...

    2016-09-30 13:19
    683
  • [Win32]一个调试器的实现(八)单步执行

    上回讲解了如何实现断点功能,这回讲解如何实现与断点紧密相关的单步执行功能。单步执行有三种类型:StepIn,StepOver和StepOut,它们的实现方式比较多样化,单独实现它们的话并不困难,但是将...

    2016-09-30 11:55
    756
  • [Win32]一个调试器的实现(七)断点

    断点是最基本和最重要的调试技术之一,本文讲解了如何在调试器中实现断点功能。 什么是断点 在进行调试的时候,只有被调试进程暂停执行时调试器才可以对它执行操作,例如观察内存内容等。如果被调试进程不停下...

    2016-09-29 09:58
    823
  • [Win32]一个调试器的实现(六)显示源代码

    上一篇文章介绍了调试符号以及DbgHelp的加载和清理,这回我们使用它来实现一个显示源代码的功能。该功能的实际使用效果如下图所示: 该功能不仅仅是显示源代码,还要显示每一行代码对应的地址。实...

    2016-09-29 09:49
    736
  • [Win32]一个调试器的实现(五)调试符号

    一个调试器应该可以跟踪被调试程序执行到了什么地方,显示下一条将要执行的语句,显示各个变量的值,设置断点,进行单步执行等等,这些功能都需要一个基础设施的支持,那就是调试符号。   什么是调试符号 ...

    2016-09-25 21:54
    1118
  • [Win32]一个调试器的实现(四)读取寄存器和内存

    在前几篇文章中,我实现的那个调试器只能被动接收调试事件并输出这些事件的信息。现在,我要将它修改成可以接收命令,并根据命令对被调试进程进行各种操作。首先从最基本的操作开始。 获取寄存器的值 ...

    2016-09-25 21:44
    903
  • [Win32]一个调试器的实现(三)异常

    这回接着处理上一篇文章留下的问题:如何处理EXCEPTION_DEBUG_EVENT这类调试事件。这类调试事件是调试器与被调试进程进行交互的最主要手段,在后面的文章中你会看到调试器如何使用它完成断点、...

    2016-09-23 13:27
    716
  • [Win32]一个调试器的实现(二)调试事件的处理

    上一篇文章说到了调试循环的写法,这回讲一下调试器应该如何处理各种调试事件。   RIP_EVENT 关于这种调试事件的文档资料非常少,即使提到也只是用“系统错误”或者“内部错误”一笔带过。既然如...

    2016-09-23 13:22
    408
  • [Win32]一个调试器的实现(一)调试事件与调试循环

    前言 程序员离不开调试器,它可以动态显示程序的执行过程,对于解决程序问题有极大的帮助。如果你和我一样对调试器的工作原理很感兴趣,那么这一系列文章很适合你,这些文章记录了我开发一个调试器雏形的过程,希...

    2016-09-23 13:16
    604

LiveCD
53799
设备驱动
145376
器之卷
3218812
Exploit
2010444
win内核
3337892

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部