被调试软件hook了ntdll.dll的ZwContinue和DbgBreakPoint两个函数导致无法调试如何处理
本帖最后由 Dyingchen 于 2020-4-24 13:47 编辑如题,最近遇到一个软件无壳但有反调试,分析时运行到ntdll.dll的ZwContinue就会退出,估计hook了ntdll的debug相关函数导致调试器附加之后运行到DbgBreakPoint就会被检测然后程序退出,有没有什么比较简单便捷的方法过这个反调试呢? Dyingchen 发表于 2020-4-24 14:44
师傅能否具体一点?我在想一般r3的调试器都是走这个函数调用的那么用驱动调试器是否可以绕过?
对于这种的你要确保是这个调试器创建线程-软件检测到的问题
如果是这样的话 可以看看有没有应用层钩子 然后去分析 或者使用Sharpod的附加功能
如果都无效 那么不是这个问题了 可能是一些线程检测暂停什么的 (or 驱动 萜一下附加调试之后调试器的代码,直接退出了06580000 /EB 10 jmp short 06580012
06580002 |6A 00 push 0x0
06580004 |6A FE push -0x2
06580006 |FF15 0E005806 call dword ptr ds: ; ntdll.RtlExitUserThread
0658000C^|EB F4 jmp short 06580002
0658000E |70 56 jo short 06580066
06580010 |4D dec ebp
06580011 |77 68 ja short 0658007B
06580013 2000 and byte ptr ds:,al
06580015 58 pop eax
06580016 06 push es
06580017 33C0 xor eax,eax
06580019 64:FF30 push dword ptr fs:
0658001C 64:8920 mov dword ptr fs:,esp
0658001F CC int3
06580020 90 nop
06580021^ EB DF jmp short 06580002
StrongOD在R0解决了这个问题的 huzpsb 发表于 2020-4-24 14:06
StrongOD在R0解决了这个问题的
论坛od我记得有strongOD啊,可是我还是无法调试 Dyingchen 发表于 2020-4-24 14:14
论坛od我记得有strongOD啊,可是我还是无法调试
(要手动开? huzpsb 发表于 2020-4-24 14:17
(要手动开?
如果软件在ZwContinue做处理检测返回值 那么sod也没用了 参考某游戏r3保护 哦豁,这个问题我越看越头晕啊 换个调试器, 或者运行后附加不可以吗? huzpsb 发表于 2020-4-24 14:17
(要手动开?
应该不是这个问题,我去重新设置了一遍strongOD,依旧没法调试,堆栈回溯显示退出停在call ntdll.ZwWaitForWorkViaWorkerFactory上,可能去弄个驱动调试器更快捷一点
romobin 发表于 2020-4-24 14:37
换个调试器, 或者运行后附加不可以吗?
附加不行,多数调试器结果大同小异,这软件在启动之后检测完成会重启一次就很难受 魔弑神 发表于 2020-4-24 14:34
如果软件在ZwContinue做处理检测返回值 那么sod也没用了 参考某游戏r3保护
师傅能否具体一点?我在想一般r3的调试器都是走这个函数调用的那么用驱动调试器是否可以绕过?