一、前言
相比于上一章,本章的内容就稍微有意思一点了,因为可以直接上手使用。
本文要介绍的时win32 api中提供的一系列用于调试的api,比如vs中为什么能打断点调试程序?x64dbg为什么能让程序运行的时候暂停下来?其很大程度上就依赖于这些api。
二、API概述
常用的调试API大概有以下几个:
- DebugActiveProcess:将调试器捆版在一个正常运行的进程上
- DebugActiveProcessStop:将调试器从一个正常运行的进程上卸载
- DebugBreak:在当前进程中产生以恶搞断点异常,如果当前进程未处在调试状态,那么该异常将被系统例程接管。
- DebugBreakProcress:在指定进程中产生一个断点异常。
- FatalExit:使调用进程强制退出,并将控制权转移至调试器
- FlushInstructionCatche:刷新指令高速缓存。
- GetThreadContext:获取指定线程的执行环境。
- GetThreadSelectorEntry:获取指定选择器和线程的描述符表入口地址
- IsDebuggerPresent:判断本进程是否处于调试状态。