内核两种反调试方法

来源:猪会被杀掉 发布时间:2019-01-14 15:20:25 阅读量:1148

知己知彼,百战百胜.

比较猥琐的检测调试方法 第一种就是在EPROCESS 结构中的Flags2这个域里面有一个成员ProtectedProcess 

 

默认为0 当调试器附加的时候会判断此值是否为1 如果是则返回 0xc0000712错误码

我们对它进行修改 修改成1

 

改完我们dt一下 看下是否改成功了

 

这个时候 打开PCH会看到显示此进程拒绝访问 以前是只要SSDT HOOK了就显示拒绝

现在是修改这个位

我们用Windbg附加会提示

 

用OD直接看不到进程.


2.当附加进程的时候

bgkpPostFakeThreadMessages 这个函数会遍历目标进程的线程

里面有一个判断 判断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则会返回错误.

修改方法同上.

有时候会出现偏移不是0x43c的情况 这个时候改了就没有效果 也就是flags2 为0x7ff的时候 这个时候此方法是失效的,可能是开了什么东西造成的..

有知道的小伙伴可以交流下





标签: 数据库
分享:
评论:
你还没有登录,请先