![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
调试器
文章平均质量分 79
飛天的氺
熱情中的冷靜,浮誇中的執著
展开
-
自己写调试器 进阶
实现了调试器的控制进程后,我们需要访问进程的内存空间,和进程内部各个线程的上下文。 我们用OpenThread来获得一个线程的handle。 HANDLE WINAPI OpenThread( _In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwThreadId ); def open_原创 2012-12-23 20:29:48 · 1461 阅读 · 0 评论 -
自己写调试器 软断点
调试器的核心便是断点,根据断点的类型不同,可以分为:软断点,硬断点,内存断点。 软断点实际上是一个单字节的指令,改指令可以引发软中断,将当前进程的控制权交给OS。在X86的架构上,是INT3。要想引发软中断,首先得了解在CPU上出发软中断的机器码。在X86上便是0xCC。然后,调试器的工作便是替换原来指令的机器码中的操作码为引发软中断的操作码,让OS捕获中断,挂起进程,同时让OS把中断的处理原创 2012-12-28 07:51:07 · 1461 阅读 · 0 评论 -
自己写调试器 初探
调试器有两种,一种是黑盒调试器,另外一种是白盒调试器。而黑盒调试又分两种:用户态和系统态。一般来说,像GDB这样的既可以用作黑盒,又可以用作白盒。但只能用作用户态来调试程序。 我看了一些大牛们的博客和一些书之后,也有自己写调试器的想法。准备在Windows和Linux上各实现简单的调试功能,顺便对Intel X86的架构有更加深入的了解。 调试器要实现的功能: Con原创 2012-12-21 07:17:17 · 2476 阅读 · 0 评论 -
自己写调试器 软断点 [Linux]
之前结果Windows上面的如何是实现,下面写Linux如何实现 在linux中,我们需要用到ptrace 这个系统调用来实现对进程的控制。同时为了获取系统库中的函数地址,我们需要dlsym等在libdl中的相关函数帮助。 ptrace 的原型如下: long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data); 我们可以看到 ptrac原创 2013-11-28 21:48:57 · 2159 阅读 · 1 评论