有没有像 OllyDbg 那样好的 WinDbg 隐藏插件?或者一个开源插件并且仍在为此目的开发?
WinDbg 的调试器隐藏插件?
我不确定插件是否存在,但您可以编写如下简单的脚本来根据具体情况隐藏 WinDbg。
Peb->BeingDebugged
r?$t0 = (ntdll!_peb *) @$peb;?? @$t0->BeingDebugged;eb (@$t0+2) 0;?? @$t0->BeingDebugged
ZwSetInformationThread
(XP SP3 系统调用与sysenter
)bp ntdll!ZwSetInformationThread "r eip = $ip+0n12 ; r eax = 0; gc"
ZwQueryInformationProcess
语法类似于
ZwSetInformationThread
此外,您还需要将 DebugPort 伪造为 NULLed poi(ADDRESS) 0
阅读
- Peter Ferrie 的“终极”反调试参考
您可以使用ScyllaHide。许多调试器都有插件,但也可以InjectorCLI.exe
用来将 ScyllaHide 注入任何进程。以下是步骤(对于 32 位进程,如果您想要 64 位进程,请将每个替换x86
为x64
):
- 在任何地方提取 ScyllaHide(下载);
- 运行
NtApiTool\x86\PDBReaderx86.exe
,完成后复制NtApiCollection.ini
到同目录下InjectorCLIx86.exe
; ScyllaTest_x86.exe
用 WinDbg (x86)打开你应该在LdrpDoDebuggerBreak
;- 执行
InjectorCLIx86.exe ScyllaTest_x86.exe HookLibraryx86.dll
; - 在 WinDbg 中运行 (F5)。
不使用 ScyllaHide:
使用 ScyllaHide 时:
这个过程适用于任何调试器,如果你愿意,你甚至可以为 WinDbg 制作一个实际的插件。这应该很容易。
我刚刚添加了一个通过进程 ID 注入进程的选项。你可以这样做:
InjectorCLIx86.exe pid:1234 HookLibraryx86.dll
我认为目前不存在这样的插件。但是,如果您愿意实现一个最小的 windbg 后端,您可以扩展uberstealth,不幸的是,我从未将其作为一个项目完成(实际上我认为反调试已经死了,但那是另一个故事;-) )。它本质上是 IDAStealth,但排除了所有调试器特定的功能(IDA 和 Olly2 有一个后端)。您所要做的就是为 Windbg 编写一个后端(并修复剩余的错误,不过我可以帮助您),所有其他代码都是独立于调试器的。应该不到几十行代码。
在这里你可以下载带有嵌入式 WinDbg 存根的 QEMU 虚拟机:https : //github.com/ispras/qemu/releases https://github.com/ispras/qemu/tree/windbg
此存根允许使用 WinDbg 进行调试,而无需启用 Windows 调试模式。