造成蓝屏死机¶
如果你认真对待混淆,你甚至可以在检测到调试器时触发蓝屏死机(BSOD)。一种方法是使用 SetProcessIsCritical()Windows API 函数把你的机器人进程设置为关键进程,然后调用 exit(),因为关键进程被终止时 Windows 会触发 BSOD。以下是你可能这样做的方式:
void BSODBaby() {
typedef long (WINAPI *RtlSetProcessIsCritical)
(BOOLEAN New, BOOLEAN *Old, BOOLEAN
NeedScb);
auto ntdll = LoadLibraryA("ntdll.dll");
if (ntdll) {
auto SetProcessIsCritical =
(RtlSetProcessIsCritical)
GetProcAddress(ntdll, "
RtlSetProcessIsCritical");
if (SetProcessIsCritical)
SetProcessIsCritical(1, 0, 0);
}
}
BSODBaby();
exit(1);
或者你可能是邪恶的,在这种情况下你可以这样做:
假设你实现了本节描述的所有技术,这段代码会造成 BSOD、让调试器崩溃(如果是 OllyDbg v1.10)、溢出栈并退出运行中的程序。如果其中任何一种方法失败或被修补,分析师在继续调试前仍然必须处理其余方法。