1625-5 王子昂 总结《2018年3月14日》 【连续第529天总结】 A. 反调试技术(7) B.
书上讲了很多SoftICE的检测方法,但是那玩意儿连XP都不支持,时代的眼泪了……
SeDebugPrivilege方法 默认情况下,进程是没有SeDebugPrivilege权限的。然而进程通过OD和WinDbg之类的调试器载入的时候,就会启用SeDebugPrivilege权限了 原理是被Create的子进程会继承调试器的SeDebugPrivilege权限 可以通过CSSS.EXE进程间接地测试SeDebugPrivilege权限。普通的程序是无法对CSRSS.exe执行OpenProcess的,如果能够打开CSRSS.EXE,则意味着进程启用了SeDebugPrivilege权限。 原理是CSRSS.EXE进程安全描述符仅允许SYSTEM访问,但是一旦进程拥有了SeDebugPrivilege权限,就可以忽视安全描述符9而访问其他进程。 注意:默认情况下,这一权限仅仅授予了Administrators组的成员。因此当用户无管理员权限时也会失效
SetUnhandledExceptionFilter 这个方法通过故意触发一个异常来判断是否有调试器接管。当无调试器附加时,异常会经过SEH处理,到达UnhandledExceptionFilter。而被附加则会将异常发给调试器,调试器处理后送给exception Filter运行继续。
EnableWindow方法和BlockInput方法 这是两个小小的伎俩。 前者暂时锁定前台的窗口,让用户休息一下,顺便也让调试器无法工作。 后者则通过BlockInput(True)锁定键盘,之后再BlockInput(False)恢复。Ctrl+Alt+Del组合键可以强制解除
C. 明日计划 调试器漏洞