调试器内部原理深度解析
一、调试器基础与实现
1.1 Win32 调试器示例
在调试器的实现中,有一个简单的 Win32 调试器示例代码:
if(!commandLine.validArguments())
{
return(RETURN_ERROR);
}
Debugee debugee(
commandLine.getFileName(),
commandLine.getArgument()
);
DebugEventHandler handler;
handler.startDebugLoop(debugee.getProcessHandle());
return(RETURN_OK);
此程序是 16 位调试 API 在 Win32 环境下的等价实现,主要区别在于 Win32 版本将被调试程序作为子进程加载。
1.2 使用 Windows 调试器
为了说明调试器的操作,构建了一个 32 位 Windows 控制台程序,如下所示:
#include<stdio.h>
int i;
int j;
void main()
{
//do stuff (create signature)
_asm{ nop }
_asm{ int 3 }
_asm{ nop }
_asm{ inc bx }
for(i = 0; i < 10; i++)
{
j = i;
超级会员免费看
订阅专栏 解锁全文
4542

被折叠的 条评论
为什么被折叠?



