Debug Blocker技术是进程以调试模式运行自身或其他可执行文件技术。
使用CreateProcess()API创建进程时,若选用了DEBUG_PROCESS|DEBUG_ONLY_THIS_PROCESS参数,则创建出来的父子进程会形成调试器与被调试者的关系。
Debug Blocker拥有的以下几个特征
父与子的关系
调试进程与被调试进程首先是一种父子关系。同一进程为父进程和子进程运行分别表现出不同的行为动作。
被调试进程不能再被其他进程调试
同一进程无法被多个进程调试。若想调试被调试进程,必须切断原调试器与被调试者的关系。
终止调试进程也会终止被调试进程
强制终止调试进程以切断调试器-被调试者关系时,被调试进程也会同时终止。
调试器操作被调试者代码
调试器会对被调试进程的代码运行情况产生持续影响,缺少调试进程的前提下,仅凭被调试进程无法正常运行。
调试器处理被调试进程中发生的异常
被调试进程中发生的所有异常均由调试器处理。
被调试进程发生异常,进程会暂停,控制权转移到调试进程。此时调试器可以修改被调试者分支,也可以对被调试进程内部加密代码解密,或向寄存器、栈中存入某些特定值。