2014年7月7日 星期一

Anti debugger tricks

Windows 有 IsDebuggerPresent API 可以讓程式知道自己是不是正在被 debug.
其實這個 API 就是去 PEB 裡面讀取 BeingDebugged 欄位.

程式也可以自己取得 PEB 位址, 然後讀取 BeingDebugged 欄位, 而不呼叫 API.
免得很容易就被人 bypass.

除了 BeingDebugged 欄位外, PEB 還有 NtGlobalFlag 欄位可以檢查是否被 debug.

GetStartupInfo API 也可以用來 anti debug, 因為被 Ollydbg lunch 的程式
StartupInfo 裡面的 dwFlags 會跟被 explorer lunch 起來的不一樣.

Reference:
http://www.codeproject.com/Articles/29469/Introduction-Into-Windows-Anti-Debugging