10.2.2 数据检测

10.2.2 数据检测

数据检测是指程序通过测试一些与调试相关的关键位置的数据来判断是否处于调试状态。例如,在函数检测中,我们了解到PEB的第三个字节表示进程是否处于调试状态,数据检测就是在程序中由程序自身直接定位到这些数据地址并检测其中的数值,这样就避免了调用函数(调用函数是非常引人注目的,也容易被Hook)。但是,使用这种数据检测方式需要处理很多平台之间的兼容性问题,如果选取的测试数据的位置会根据平台的变化而变化,那就很麻烦。这种方式也会带来好处,如将检测代码放到虚拟机中就会很隐蔽。我们可以构建检测代码,如图10.35所示。

图10.35 数据检测示例代码