來源:豬會被殺掉 發(fā)布時間:2019-01-14 15:20:25 閱讀量:1324
知己知彼,百戰(zhàn)百勝.
比較猥瑣的檢測調(diào)試方法 第一種就是在EPROCESS 結(jié)構(gòu)中的Flags2這個域里面有一個成員ProtectedProcess
默認(rèn)為0 當(dāng)調(diào)試器附加的時候會判斷此值是否為1 如果是則返回 0xc0000712錯誤碼
我們對它進(jìn)行修改 修改成1
改完我們dt一下 看下是否改成功了
這個時候 打開PCH會看到顯示此進(jìn)程拒絕訪問 以前是只要SSDT HOOK了就顯示拒絕
現(xiàn)在是修改這個位
我們用Windbg附加會提示
用OD直接看不到進(jìn)程.
2.當(dāng)附加進(jìn)程的時候
bgkpPostFakeThreadMessages 這個函數(shù)會遍歷目標(biāo)進(jìn)程的線程
里面有一個判斷 判斷ETHREAD->CrossThreadFlags 的第二位是否為0
0x448 CrossThreadFlags : Uint4B
+0x448 Terminated : Pos 0, 1 Bit
+0x448 ThreadInserted : Pos 1, 1 Bit
+0x448 HideFromDebugger : Pos 2, 1 Bit
+0x448 ActiveImpersonationInfo : Pos 3, 1 Bit
+0x448 Reserved : Pos 4, 1 Bit
+0x448 HardErrorsAreDisabled : Pos 5, 1 Bit
+0x448 BreakOnTermination : Pos 6, 1 Bit
+0x448 SkipCreationMsg : Pos 7, 1 Bit
+0x448 SkipTerminationMsg : Pos 8, 1 Bit
+0x448 CopyTokenOnOpen : Pos 9, 1 Bit
+0x448 ThreadIoPriority : Pos 10, 3 Bits
+0x448 ThreadPagePriority : Pos 13, 3 Bits
+0x448 RundownFail : Pos 16, 1 Bit
+0x448 NeedsWorkingSetAging : Pos 17, 1 Bit
+0x44c SameThreadPassiveFlags : Uint4B
+0x44c ActiveExWorker : Pos 0, 1 Bit
+0x44c ExWorkerCanWaitUser : Pos 1, 1 Bit
+0x44c MemoryMaker : Pos 2, 1 Bit
+0x44c ClonedThread : Pos 3, 1 Bit
+0x44c KeyedEventInUse : Pos 4, 1 Bit
+0x44c RateApcState : Pos 5, 2 Bits
+0x44c SelfTerminate : Pos 7, 1 Bit
如果為0則會返回錯誤.
修改方法同上.
有時候會出現(xiàn)偏移不是0x43c的情況 這個時候改了就沒有效果 也就是flags2 為0x7ff的時候 這個時候此方法是失效的,可能是開了什么東西造成的..
有知道的小伙伴可以交流下