反調試專題丨反調試之NtGlobaFlag-當前視點
一、32位系統
nt!_PEB???+0x000 InheritedAddressSpace?:?UChar???+0x001 ReadImageFileExecOptions?:?UChar???+0x002 BeingDebugged????:?UChar??????????????? isDbg值,8字節???+0x003 BitField?????????:?UChar???+0x003 ImageUsesLargePages?:?Pos 0, 1 Bit???+0x003 IsProtectedProcess?:?Pos 1, 1 Bit???+0x003 IsLegacyProcess??:?Pos 2, 1 Bit???+0x003 IsImageDynamicallyRelocated?:?Pos 3, 1 Bit???+0x003 SkipPatchingUser32Forwarders?:?Pos 4, 1 Bit???+0x003 SpareBits????????:?Pos 5, 3 Bits???+0x004 Mutant?????? ????:?Ptr32 Void???+0x008 ImageBaseAddress?:?Ptr32 Void??????????????鏡像基址???+0x00c Ldr??????????????:?Ptr32 _PEB_LDR_DATA???????????? _PEB_LDR_DATA結構???+0x010 ProcessParameters?:?Ptr32 _RTL_USER_PROCESS_PARAMETERS???+0x014 SubSystemData????:?Ptr32 Void???+0x018 ProcessHeap??????:?Ptr32 Void????????????????+0x01c FastPebLock??????:?Ptr32 _RTL_CRITICAL_SECTION???+0x020 AtlThunkSListPtr?:?Ptr32 Void???+0x024 IFEOKey??????????:?Ptr32 Void???+0x028 CrossProcessFlags?:?Uint4B???+0x028 ProcessInJob?????:?Pos 0, 1 Bit???+0x028 ProcessInitializing?:?Pos 1, 1 Bit???+0x028 ProcessUsingVEH??:?Pos 2, 1 Bit???+0x028 ProcessUsingVCH??:?Pos 3, 1 Bit???+0x028 ProcessUsingFTH??:?Pos 4, 1 Bit???+0x028 ReservedBits0????:?Pos 5, 27 Bits???+0x02c KernelCallbackTable?:?Ptr32 Void???+0x02c UserSharedInfoPtr?:?Ptr32 Void???+0x030 SystemReserved???:?[1]?Uint4B???+0x034 AtlThunkSListPtr32?:?Uint4B???+0x038 ApiSetMap????????:?Ptr32 Void???+0x03c TlsExpansionCounter?:?Uint4B???+0x040 TlsBitmap????????:?Ptr32 Void???+0x044 TlsBitmapBits????:?[2]?Uint4B???+0x04c ReadOnlySharedMemoryBase?:?Ptr32 Void???+0x050 HotpatchInformation?:?Ptr32 Void???+0x054 ReadOnlyStaticServerData?:?Ptr32 Ptr32 Void???+0x058 AnsiCodePageData?:?Ptr32 Void???+0x05c OemCodePageData??:?Ptr32 Void???+0x060 UnicodeCaseTableData?:?Ptr32 Void???+0x064 NumberOfProcessors?:?Uint4B??????????? CPU的個數???+0x068 NtGlobalFlag?????:?Uint4B?? .?? .?? .
PEB?有一個名為NtGlobalFlag(32位系統下偏移量0x68)的字段,程序可以挑戰該字段以確定它們是否正在被調試。通常,當進程未被調試時,NtGlobalFlag字段包含值0x0。調試進程時,該字段通常包含值0x70,表示設置了以下標志:
(相關資料圖)
標志
FLG_HEAP_ENABLE_TAIL_CHECK
FLG_HEAP_ENABLE_FREE_CHECK
FLG_HEAP_VALIDATE_PARAMETERS
其余
所以可以通過檢測此標志位來檢測是否被調試。實現代碼可以通過匯編或者通過C++實現,匯編實現如下:
DWORD?MyIsDebug1(){??? DWORD Flag?=?0;??? __asm?{??? mov eax,fs:[30h]??? mov eax,[eax+68h]??? mov Flag,eax}????return?Flag;}
完整代碼如下:
// :?此文件包含?"main"?函數。程序執行將在此處開始并結束。//#include?#include?DWORD MyIsDebug1(){??? DWORD Flag?=?0;??? __asm?{??? mov eax,fs:[30h]??? mov eax,[eax+68h]??? mov Flag,eax}????return?Flag;}DWORD WINAPI MyIsDebug(??? LPVOID lpThreadParameter){??? DWORD myFlag?=?0;????while?(1)?{?????? myFlag?=?MyIsDebug1();???????if?(myFlag?==?0x70)???????{?????????? MessageBox(NULL,?L"警告",?L"調試中",?MB_OK);???????}????}????return?1;}int?main(){????//IsDebuggerPresent();??? CreateThread(NULL,?NULL,?MyIsDebug,?NULL,?NULL,?NULL);??? std::cout?<<?"Hello World!\n";??? system("pause");????return?0;}
二、64位系統
ntdll!_PEB??+0x000 InheritedAddressSpace?:?UChar??+0x001 ReadImageFileExecOptions?:?UChar??+0x002 BeingDebugged????:?UChar??+0x003 BitField?????????:?UChar??+0x003 ImageUsesLargePages?:?Pos 0, 1 Bit??+0x003 IsProtectedProcess?:?Pos 1, 1 Bit??+0x003 IsImageDynamicallyRelocated?:?Pos 2, 1 Bit??+0x003 SkipPatchingUser32Forwarders?:?Pos 3, 1 Bit??+0x003 IsPackagedProcess?:?Pos 4, 1 Bit??+0x003 IsAppContainer???:?Pos 5, 1 Bit??+0x003 IsProtectedProcessLight?:?Pos 6, 1 Bit??+0x003 IsLongPathAwareProcess?:?Pos 7, 1 Bit??+0x004 Padding0?????????:?[4]?UChar??+0x008 Mutant???????????:?Ptr64 Void??+0x010 ImageBaseAddress?:?Ptr64 Void??+0x018 Ldr??????????????:?Ptr64 _PEB_LDR_DATA??+0x020 ProcessParameters?:?Ptr64 _RTL_USER_PROCESS_PARAMETERS??+0x028 SubSystemData????:?Ptr64 Void??+0x030 ProcessHeap??????:?Ptr64 Void??+0x038 FastPebLock??????:?Ptr64 _RTL_CRITICAL_SECTION??+0x040 AtlThunkSListPtr?:?Ptr64 _SLIST_HEADER??+0x048 IFEOKey??????????:?Ptr64 Void??+0x050 CrossProcessFlags?:?Uint4B??+0x050 ProcessInJob?????:?Pos 0, 1 Bit??+0x050 ProcessInitializing?:?Pos 1, 1 Bit??+0x050 ProcessUsingVEH??:?Pos 2, 1 Bit??+0x050 ProcessUsingVCH??:?Pos 3, 1 Bit??+0x050 ProcessUsingFTH??:?Pos 4, 1 Bit??+0x050 ProcessPreviouslyThrottled?:?Pos 5, 1 Bit??+0x050 ProcessCurrentlyThrottled?:?Pos 6, 1 Bit??+0x050 ReservedBits0????:?Pos 7, 25 Bits??+0x054 Padding1?????????:?[4]?UChar??+0x058 KernelCallbackTable?:?Ptr64 Void??+0x058 UserSharedInfoPtr?:?Ptr64 Void??+0x060 SystemReserved???:?Uint4B??+0x064 AtlThunkSListPtr32?:?Uint4B??+0x068 ApiSetMap????????:?Ptr64 Void??+0x070 TlsExpansionCounter?:?Uint4B??+0x074 Padding2?????????:?[4]?UChar??+0x078 TlsBitmap????????:?Ptr64 Void??+0x080 TlsBitmapBits????:?[2]?Uint4B??+0x088 ReadOnlySharedMemoryBase?:?Ptr64 Void??+0x090 SharedData???????:?Ptr64 Void??+0x098 ReadOnlyStaticServerData?:?Ptr64 Ptr64 Void??+0x0a0 AnsiCodePageData?:?Ptr64 Void??+0x0a8 OemCodePageData??:?Ptr64 Void??+0x0b0 UnicodeCaseTableData?:?Ptr64 Void??+0x0b8 NumberOfProcessors?:?Uint4B??+0x0bc NtGlobalFlag?? ??:?Uint4B
可以看到64位系統下面,NtGlobalFlag標志位有所不同,位于PEB偏移0xbc。其余和x86沒有區別。可以通過readgsqword(60h)獲取到PED地址,再檢查偏移0xbc位置標志位達到反調試效果。
三、反反調試
1.?手動修改標志位
2.?使用OD插件
3.?在WinDbg中,在禁用調試堆的情況下啟動程序?( windbg -hd )
標簽:
- 反調試專題丨反調試之NtGlobaFlag-當前視點
- 俄軍方高層:不排除西方情報機構參與挑唆軍事叛亂 環球觀速訊
- 今晚中超聯賽重燃戰火 天津津門虎隊將在主場迎戰青島海牛隊|每日觀察
- 國臺辦:《關于支持福建探索海峽兩岸融合發展新路 建設兩岸融合發展示范區的意見...
- 每日速遞:國際足聯官宣:2023年國際足聯世俱杯賽將在沙特吉達舉辦
- 世界速讀:2023廣州天河區中考成績在哪查?(附入口)
- 西游釋厄傳有哪些版本?西游記釋厄傳如何安裝?
- 《夢幻西游》69滿強壯多少錢?強身和強壯點哪個劃算?
- 天天時訊:水泥的規格型號(水泥規格型號有哪些)
- 說說跨年夜_淺淺聊聊:跨年夜氛圍感拉滿
- ?國網息縣供電公司:炎炎中考日 保電正當時 微動態
- 盜賊換武器宏命令_盜賊換武器宏
- 環球即時看!?信陽市清欠辦對羅山縣開展保障農民工工資支付專項調研
- 焦點!pt950鉑金回收價格今日多少錢一克(2023年06月28日)
- 要聞速遞:?息縣舉行建黨102周年暨“七一”表彰大會
- 當前觀察:西平縣二郎鎮新時代文明實踐所深入小王莊小學開展“掃黃打非”宣傳活動
- 世界球精選!鄧州市彭橋鎮行政審批服務中心:持續優化營商環境 提高群眾辦事效率
- 環球熱門:?西平縣應急管理局持續開展法治教育培訓輪訓
- 世界熱門:筆記本電腦坐上過山車 下半年或復蘇
- 鐵路暑運7月1日啟動 鄭州鐵路預計發送旅客3300萬人次_世界熱頭條
- 環球新動態:恢復出廠設置是什么意思 手機恢復出廠設置后怎么還原數據?
- 世界通訊!ipo審核是什么意思?ipo審核通過后多久發行?
- 酒駕和醉駕的分界線是多少?酒駕和醉駕哪個嚴重? 全球短訊
- 環球觀天下!貧民窟軍需官在哪?魔獸世界詛咒密碼任務怎么做?
- 天天觀點:精軋管特點有哪些?精軋管生產工藝要點有什么?
- 廣東高考志愿填報6月28日開始 填報志愿要記得“五看”
- 【天天時快訊】老人為啥說被子不能橫著蓋 床單顏色的十大忌諱介紹
- 大眾計劃推出入門級ID.1車型 售價有望低于2.2萬美元_當前熱文
- 【熱聞】信托公司管理辦法原則 信托公司管理辦法具體內容是什么?
- 環球新動態:有助于睡眠的顏色有哪些 臥室最旺三種顏色床分別是什么?
- 反調試專題丨反調試之NtGlobaFlag-當前視點
- 俄軍方高層:不排除西方情報機構參與挑唆軍
- 今晚中超聯賽重燃戰火 天津津門虎隊將在
- 國臺辦:《關于支持福建探索海峽兩岸融合發
- 每日速遞:國際足聯官宣:2023年國際足聯世
- 世界速讀:2023廣州天河區中考成績在哪查?
- 西游釋厄傳有哪些版本?西游記釋厄傳如何安
- 《夢幻西游》69滿強壯多少錢?強身和強壯點
- 天天時訊:水泥的規格型號(水泥規格型號有
- 說說跨年夜_淺淺聊聊:跨年夜氛圍感拉滿
- ?國網息縣供電公司:炎炎中考日 保電正當
- 盜賊換武器宏命令_盜賊換武器宏
- 環球即時看!?信陽市清欠辦對羅山縣開展保
- 焦點!pt950鉑金回收價格今日多少錢一克(2
- 要聞速遞:?息縣舉行建黨102周年暨“七一
- 當前觀察:西平縣二郎鎮新時代文明實踐所深
- 世界球精選!鄧州市彭橋鎮行政審批服務中心
- 環球熱門:?西平縣應急管理局持續開展法治
- 世界熱門:筆記本電腦坐上過山車 下半年或
- 鐵路暑運7月1日啟動 鄭州鐵路預計發送旅客
- 環球新動態:恢復出廠設置是什么意思 手機
- 世界通訊!ipo審核是什么意思?ipo審核通過
- 酒駕和醉駕的分界線是多少?酒駕和醉駕哪個
- 環球觀天下!貧民窟軍需官在哪?魔獸世界詛
- 天天觀點:精軋管特點有哪些?精軋管生產工
- 廣東高考志愿填報6月28日開始 填報志愿要
- 【天天時快訊】老人為啥說被子不能橫著蓋
- 大眾計劃推出入門級ID.1車型 售價有望低于
- 【熱聞】信托公司管理辦法原則 信托公司管
- 環球新動態:有助于睡眠的顏色有哪些 臥室