1. 程式人生 > 實用技巧 >使用 GetStartupInfo 檢查自己是否被"除錯"

使用 GetStartupInfo 檢查自己是否被"除錯"

在使用CreateProcess建立程序時,需要傳遞
STARTUPINFO的結構的指標,
而常常我們並不會一個一個設定其結構的值,
連把其他不用的值清0都會忽略,
而ollydbg也這樣做了,
我們可以使用GetStartupInfo檢查啟動資訊,
如果很多值為"不可理解"的,那麼就說明自己不是由explorer來建立的.(explorer.exe使用shell32中ShellExecute的來執行程式,ShellExecute會清不用的值)

還有一點ollydbg會向STARTUPINFO中的dwFlags設定STARTF_FORCEOFFFEEDBACK,而explorer不會



////////////////////////
//ex

#include<windows.h>
#include<stdio.h>

#pragmacomment(linker,"/subsystem:windows/entry:main")

intmain()
{
STARTUPINFOsi;

GetStartupInfo(&si);

if(
(si.dwX!=0)||
(si.dwY!=0)||
(si.dwXCountChars!=0)||
(si.dwYCountChars!=0)||
(si.dwFillAttribute!=0)||
(si.dwXSize!=0)||
(si.dwYSize!=0)||
(si.dwFlags&STARTF_FORCEOFFFEEDBACK)
)
{
MessageBox(NULL,"founddebugger!",NULL,0);
}
else
{
MessageBox(NULL,"nofounddebugger!",NULL,0);
}

return0;

}

用OD載入執行顯示 founddebugger!


在OD外掛HideOD的Option中勾選ClearHeadpmagic

再用OD載入執行顯示nofounddebugger!了


轉載於:https://blog.51cto.com/whatday/1382493