什么是DebugPort清零
什么是DebugPort清零?DebugPort清零的作用是什么?
哪位高手介绍一下
谢谢大家 lkd> dt nt!_EPROCESS
...
+0x0bc DebugPort : Ptr32 Void
...
debugport是EPROCESS结构中的一个成员。
debugport清零能反调试。 谢谢TA,现在debugport清零明白了
但是,为什么debugport清零能反调试?
说说原理 回复 ok100fen 的帖子
进程被调试的时候,EPROCESS.DebugPort的值不是零。
如果EPROCESS.DebugPort的值被清零,进程就无法被调试了。 你说的“进程被调试”是指用WinDbg调试还是用od调试? 回复 ok100fen 的帖子
:L 被什么“调戏”还不是一样 回复 ok100fen 的帖子
debugport在EPROCESS中的偏移是个硬编码 对, 要能附加的话。0xbc,修改这个就可以了,把要访问到debugport->0 转移到其他的偏移。
只要修改这个0xbc即可 这种方式对SOD有效么 dico 发表于 2011-10-24 20:47 static/image/common/back.gif
这种方式对SOD有效么
当然有-,-
这是R0 Anti Cheat 的最基本的一步。
难一些还有 DebugObject等等。
参考成熟的反Cheat程序
Murray 发表于 2011-10-27 22:37 static/image/common/back.gif
当然有-,-
这是R0 Anti Cheat 的最基本的一步。
个人感觉过SOD对一般的初学者还是有一定难度的。但让OD无法调试却非常简单。
我记得有个日本人写的软件SetFSB(在WINDOWS环境下超频的软件),很多人都破解不了。
反正网上基本没有能用的破解版,最终不少人花800日元(约70元人民币)买了正版。
附上个网址:http://www13.plala.or.jp/setfsb/ 本帖最后由 Murray 于 2011-11-3 18:17 编辑
Tesla.Angela 发表于 2011-10-30 19:18 static/image/common/back.gif
个人感觉过SOD对一般的初学者还是有一定难度的。但让OD无法调试却非常简单。
我记得有个日本人写的软件S ...
过SOD?,- -不解。
Strong OD 好像是帮助调试某些强壳用的
斑竹想说的是Anti- SOD吧= =?,
国外的软件不清楚- -,但是不觉得没有破不到的
连VMPTMD等等强壳都有破解版
但是就反外挂的程序强度而已。
国内完爆棒子阿。
什么NP HS XT 在国内被HProtect PefectProtector
爆的体无完肤 Murray 发表于 2011-11-3 18:14 static/image/common/back.gif
过SOD?,- -不解。
Strong OD 好像是帮助调试某些强壳用的
斑竹想说的是Anti- SOD吧= =?,
不,海风的SOD貌似能防止被调试程序检测到自己被调试,无论是猥琐的FindWindow法还是int 2d法。
要突破SOD而检测到调试器貌似要花费一点功夫。 DebugPort清0无非就是先找到进程的EPROCESS结构,再加上0x0BC偏移找到DebugPort。
我有一个思路,不知道可不可行:
首先,要找到进程的EPROCESS结构通常有2个办法,PsGetCurrentProcess和PsLookupProcessByProcessId,
我的想法是,能不能挂钩这两个函数,返回错误的EPROCESS结构指针,从而达到anti clear DebugPort的目的呢。
斑竹看看这个方法行不? 你看过这两个函数的实现吗?
PsGetCurrentProcess
PsLookupProcessByProcessId
.text:000000014008F150 public PsGetCurrentProcess
.text:000000014008F150 PsGetCurrentProcess proc near
.text:000000014008F150 mov rax, gs:188h ; IoGetCurrentProcess
.text:000000014008F159 mov rax,
.text:000000014008F15D retn
.text:000000014008F15D PsGetCurrentProcess endp
.text:00000001400A0240 public PsGetCurrentProcessId
.text:00000001400A0240 PsGetCurrentProcessId proc near ; CODE XREF: NtTraceControl-4CC87p
.text:00000001400A0240 ; SeAuditHandleCreation-CC270p ...
.text:00000001400A0240 mov rax, gs:188h
.text:00000001400A0249 mov rax,
.text:00000001400A0250 retn
.text:00000001400A0250 PsGetCurrentProcessId endp
如此简单的代码,人家轻则硬编码写在他的代码里,重则从文件中读取出来,连重定位都不需要
这种函数即使HOOK,能有什么用呢?如果是稍微有点头脑的人的话,就不会用这两个函数,而且要手写实现这两个函数
根本就不会有问题,所以还是别HOOK了。 这两个函数也是从KPCR--EPROCESS里取东西的,人家都直接用OFFSET来写DEBUG PORT了,您想想,再用OFFSET取这两个,那不是很容易的事吗? 那该怎么阻止他找到EPROCESS呢? cainiaocai 发表于 2011-12-22 03:55 static/image/common/back.gif
那该怎么阻止他找到EPROCESS呢?
阻止不了的 真复杂.................{:soso__732155727799369784_3:} 精彩的对话。。。 简单点说,DebugPort是EPROCESS结构体的一个成员字段,主要用于标识当前进程是否被调试,决定调试器是否能接收到调试信息
如果DebugPort不为0表示当前进程正在被调试,那么调试器就能接受到关于该进程的调试信息~ 如果debugport被清0了那么调试器就无法接受到来任何来自该进程的调试信息了,那么所谓的调试也就无效了
至于为什么debugport被清0 了就无法接受相关的调试信息,我觉得这个涉及的东西比较多,比如说涉及到CSRSS的通信等~
页:
[1]