反调试CM
仿照一个面试题的CM做的,应该算是弱化版吧。成功条件:
调试器运行或附加的情况下,成功运行(调试),点击测试按钮 弹出以下消息框。
CM下载:
随便带上源码吧哈哈哈,没思路就可以参考一下源码:
最近想学习反调试,正好看到楼主这个帖子,对于想入门又找不到门的我非常合适,很感谢楼主的整理,因为菜鸡一个,看的过程中有些疑问,不是很理解
疑点1. DbgPrompt 的反调试原理是什么,如果ring3会抛异常,那调试器也属于ring3啊。难到也和debugport有关系吗?
疑点2. NtSetInformationThread(GetCurrentThread(), 17, NULL, 0);//ThreadHideFromDebugger 设置隐藏调试 ,让调试器无法接受断点,可以这么理解吗?
疑点3. NtQueryInformationThread(GetCurrentThread(), 0x11, &out1, 1, NULL);通过out判断,out=1,没有调试,out=0,有调试,这个不是很理解,
疑点4:刚开始就设置PEBBase=0xf5,感觉有点反反调试了
最后对于楼主的
从内核角度认识反调试基本原理
https://www.52pojie.cn/thread-1681048-1-1.html
(出处: 吾爱破解论坛)
甚是震惊,到现在很多地方都没看懂,再接再厉
最后 再次感谢楼主的分享~~~~{:1_893:}{:1_893:}{:1_893:}
好像没有反调试吧,我用普通版的都能了。。。 随风起舞 发表于 2023-3-14 02:32
好像没有反调试吧,我用普通版的都能了。。。
:Dweeqw 是这样的啦,检测走的都是常规的系统函数调用,整个稍微强一点的插件都能过了。 不错,学习了,。感谢 可以的 跟大佬多多学习 自己写自己破 壳网上有一堆直接加 学习学习 支持 一定要坚持 nug 发表于 2023-4-7 23:42
最近想学习反调试,正好看到楼主这个帖子,对于想入门又找不到门的我非常合适,很感谢楼主的整理,因为菜鸡 ...
好问题哈哈哈
1.DbgPrompt 触发 int 0x2d 这个中断能让KdIsThisAKdTrap返回1。将异常强制发往内核调试器(如果有内核调试器的话)这样就可以检测内核调试器(看我这篇帖子https://www.52pojie.cn/thread-1663524-1-1.html)。能检测用户调试器是因为,触发 int0x2d时,CPU执行环境是x64,不是x32,我们平常使用的调试器是 x32dbg,Od之类的,只能拿到x32的异常,拿到x64的异常时,就默认直接返回异常已经处理,所以就能检测到调试器啦。
2.是的,设置调试隐藏后,这个线程的异常就不发往调试器了(https://www.52pojie.cn/thread-1681048-1-1.html 这篇帖子最下面有写)
3.这个检测是和你第二个问题对应。检测线程的调试隐藏是否被恢复。
4.被你发现了
页:
[1]
2