SetUnhandledExceptionFilter触发条件:1.当程序有异常,且没相应的处理 2.没有人进行反调试,满足这两个条件的时候,就会其中传输的参数(实则就是一个异常处理函数) 来进行处理 但是这个异常处理函数如果被用来检测是否有人为进行反调试的时候,这个就可以用来当作反调试 1.载入OD,给UnhandledExceptionFilter下断点,因为UnhandledExceptionFilter里面又调用了ZwQueryInformationProcess进行反调试检测 2.可以…
基础知识推荐阅读<软件调试>的第十八章 内核调试引擎 我在里直接总结一下内核调试引擎的几个关键标志位,也是TP进行反调试检测的关键位. KdPitchDebugger : Boolean 用来表示是否显示的抑制内核调试, 当启动项中包含 /NODEBUG选项时,这个变量会被置为 TRUE KdDebuggerEnabled : Boolean 用来表示内核调试是否被启用.当启动项中包含 /DEBUG 或者/ DEBUGPORT 而且不包含/NODEBUG时,这个变量置为TRUE kiDebug…
前言:一个反调试IsDebuggerPresent的CreackMe IsDebuggerPresent函数的了解: IsDebuggerPresent 作用 确定调用进程是否由用户模式的调试器调试. 语法 BOOL WINAPI IsDebuggerPresent(void); 参数 该函数没有参数 返回值 如果当前进程运行在调试器的上下文,返回值为非零值. 如果当前进程没有运行在调试器的上下文,返回值是零. IsDebuggerPresent函数检测调试过程: 1.直接加载入OD,观察是否具…
自己根据shark恒老师的分析,总结一下: 一般反调试自动关闭程序利用的函数有: 1.CreateToolhelp32Snapshot 2.FindWindow 3.ExitProcess 4.PostQuitMessage 5.INT 68,这个是汇编指令,主要是让OD异常 简化逆向过程: 1.载入OD发现,直接是POPAD,那么把OD给关了,让调试器来进行捕获异常,F9发现异常如下 2.发现两个return,然后一个jnz跳转,上面还有个popad,pushad和popad是配对,看了下当前…
稍稍总结一下在Crack或Rervese中比较常见的一些反调试方法,实现起来也比较简单,之后有写的Demo源码参考,没有太大的难度. ①最简单也是最基础的,Windows提供的API接口:IsDebuggerPresent(),这API实际上就是访问PEB的BeingDebugged标志来判断是否处于调试状态. if (IsDebuggerPresent()) //API接口 { AfxMessageBox(L"检测到调试器"); } else { AfxMessageBox(L&qu…
反调试手法之CreateProcess反调试 在学习Win32 创建进程的时候.我们发现了有一个进程信息结构体. STARTUPINFO. 这个结构体可以实现反调试. 具体CreateProcess可以参考上一篇博客.:  https://www.cnblogs.com/iBinary/p/9571577.html 一丶实现反调试需要的东西. 假设我们要实现反调试. 那么我们需要一个API GetStartupInfo (STARTUPINFO) 使用此API可以在进程启动的时候获取启动信息结构…
//使用IsDebuggerPresent这个API来检测是否被调试function FD_IsDebuggerPresent(): Boolean;beginif IsDebuggerPresent then      Result := Trueelse      Result := False;end; //使用查看PEB结构中标志位beingDegug来检测是否被调试function PD_PEB_BeingDebuggedFlag(): Boolean;beginasm      mo…
参考  这两天对某P双机调试的学习及成果 ,非常好的一篇分析贴. 本文在Win7 x86下的分析,在虚拟机中以/DEBUG模式启动TP游戏,系统会自动重启. 0x01 内核调试全局变量  根据软件调试第十八章,windows启动过程中会调用两次KdInitSystem()函数 第一次调用KdInitSystem分别会初始化如下变量 1.KdPitchDebugger : Boolean 用来表示是否显示的抑制内核调试, 当启动项中包含 /NODEBUG选项时,这个变量会被置为 TRUE2.KdD…
转载: https://blog.xpnsec.com/anti-debug-openprocess/ 看雪翻译:https://bbs.pediy.com/thread-223857.htm 本周我有了休息时间,来回顾一下反调试技术.目前,Bug Bounty平台上有大量程序依赖于客户端应用,而且许多安全产品和游戏反作弊引擎都采用了这些反调试技术来阻止你调试核心模块.我想有必要来分享其中一项反调试技术,以及如何绕过它. 本文所述的技术并不是一个安全漏洞,很明显,如果攻击者拥有了这个级别的系统访…
C/C++ 要实现程序反调试有多种方法,BeingDebugged,NtGlobalFlag,ProcessHeap,CheckRemoteDebuggerPresent,STARTUPINFO,IsDebuggerPresent,父进程检测,TLS 线程局部存储,RDTSC时钟检测反调试,MapFileAndCheckSum,等都可实现反调试,这里我分别编写了一些案例,基本上一锅端了. 使用WinDBG随便载入一个二进制文件,并加载调试符号链接文件. 0:000> .sympath srv*c…