摘要: 一、CRC32 检测 CRC32 也叫循环冗余校验(Cyclic Redundancy Check,CRC),是一种错误检测技术,广泛用于数据传输和存储领域。其原理是通过将数据表示为二进制多项式,并使用一个预定义的生成多项式进行模 2 除法运算,从而生成一个 32 位的校验值(CRC 码)。这个校验 阅读全文
posted @ 2025-02-23 09:41 lostin9772 阅读(7) 评论(0) 推荐(0)
摘要: 一、检测 DebugObject 对象 当调试器附加或打开一个程序建立调试的时候,会先创建一个调试对象 DebugObject,通过这个调试对象与被调试进程进行交互,因此我们可以对该对象进行检测来判断是否有调试器正在调试。 1 通过 NtQueryObject 函数来获取调试对象 我们可以通过 Nt 阅读全文
posted @ 2025-02-22 15:54 lostin9772 阅读(5) 评论(0) 推荐(0)
摘要: 一、通过查询父进程 PID 当我们的程序是通过在桌面或文件目录下通过鼠标双击打开的时候,该程序的父进程是 exploere.exe。为了更加深入的了解该原理,我们有必要详细了解一下一个进程的创建过程。 在 Windows 系统中,无论我们使用哪种方式打开一个新的程序,它都使用一套标准的流程来创建一个 阅读全文
posted @ 2025-02-22 10:51 lostin9772 阅读(4) 评论(0) 推荐(0)
摘要: 一、通过调试寄存器检测调试器 在我们调试程序的过程中,会用到硬件断点,最多能使用四个硬件断点,而硬件断点就是通过调试寄存器来保存的,因此我们可以通过检测调试寄存器来检测是否存在硬件断点,如果存在硬件断点,我们就可以判定,程序正在被调试。 调试寄存器一共包括 8 个,分别是 DR0~DR7,如下图所示 阅读全文
posted @ 2025-02-21 20:56 lostin9772 阅读(25) 评论(0) 推荐(0)
摘要: 一、通过禁止线程产生调试事件 当一个进程被调试器调试的时候,该进程下的所有线程都和调试器建立了调试关系,各个线程通过调试对象 DebugObject 作为中转站来向调试器传递调试事件,当我们通过一些方法,禁止某个线程产生调试事件后,调试器就无法接收到该线程的调试事件了。 在被调试进程和调试器交互的过 阅读全文
posted @ 2025-02-19 12:38 lostin9772 阅读(7) 评论(0) 推荐(0)
摘要: 一、通过检测 NoDebugInherit 标志位 在进程的 EPROCESS 结构体中存在一个 NoDebugInherit 标志位,当进程处于调试状态时,该标志位被置为 1,默认情况为 0。 我们在虚拟机中打开 notepad.exe 程序,并用 x64dbg 附加 notepad 程序,通过如 阅读全文
posted @ 2025-02-17 22:01 lostin9772 阅读(6) 评论(0) 推荐(0)
摘要: 一、通过检测 DebugObjectHandle 句柄 从 Windows XP 开始,引入了 DebugObject,当一个调试会话启动的时候,调试器会调用调试子系统函数来创建一个 DebugObject 对象以及与之关联的句柄 DebugObjectHandle。 1 通过 NtQueryInf 阅读全文
posted @ 2025-02-17 21:14 lostin9772 阅读(3) 评论(0) 推荐(0)
摘要: 一、通过检测 DebugPort 字段 当调试器与进程建立调试关系后,调试器会通过调试子系统来设置被调试进程的内核结构体 EPROCESS 中的 DebugPort 字段,该字段保存的是调试端口,调试器和被调试进程通过这个端口来进行通信。 因此,我们可以通过检测该调试端口,来判断目标进程是否处于被调 阅读全文
posted @ 2025-02-12 22:15 lostin9772 阅读(4) 评论(0) 推荐(0)
摘要: 一、通过检测 NtGlobalFlag 字段 我们在进行调试的过程中,可以通过两种方法来调试目标程序。第一种方法就是直接附加到一个已经运行的进程,第二种方法就是通过打开一个新的进程来进行调试。 在进程的 PEB 结构中有一个 NtGlobalFlag 字段,该字段是一个 Uint4B 类型的值,包含 阅读全文
posted @ 2025-02-12 18:23 lostin9772 阅读(7) 评论(0) 推荐(0)
摘要: 一、通过检测 BeingDebugged 标志位 在调试过程中,当被调试进程被调试器附加后,被调试进程中的所有线程的 PEB 结构中的 BeingDebugged 位会被置为 1,因此我们可以通过检测该标志位来检测是否有调试器进行附加。 我们首先通过 windbg 软件来看一下这个标志位位于进程的哪 阅读全文
posted @ 2025-02-12 13:12 lostin9772 阅读(7) 评论(0) 推荐(0)