进程内存anti
检查断点,检查线程上下文,检查anti补丁等..
1. 断点
我们可以检查进程内存并在代码中搜索软件断点,或者检查CPU调试寄存器以确定是否设置了硬件断点。
如果对 0xCC搜索,也就是INT 3,可能会有很大误报率,因为也有可能是合法进程的一些指令:
bool CheckForSpecificByte(BYTE cByte, PVOID pMemory, SIZE_T nMemorySize = 0)
{
PBYTE pBytes = (PBYTE)pMemory;
for (SIZE_T i = 0; ; i++)
{
// Break RET (0xC3) 如果不知道函数大小
if (((nMemorySize > 0) && (i >= nMemorySize)) ||
((nMemorySize == 0) && (pBytes == 0xC3)))
break;
if (pBytes == cByte)
return true;
}
return false;
}
bool IsDebugged()
{