ok100fen 发表于 2011-1-12 23:46:16

什么是DebugPort清零

什么是DebugPort清零?

DebugPort清零的作用是什么?

哪位高手介绍一下


谢谢大家

Tesla.Angela 发表于 2011-1-12 23:56:10

lkd> dt nt!_EPROCESS
   ...
   +0x0bc DebugPort      : Ptr32 Void
   ...
debugport是EPROCESS结构中的一个成员。
debugport清零能反调试。

ok100fen 发表于 2011-1-13 07:42:06

谢谢TA,现在debugport清零明白了
但是,为什么debugport清零能反调试?

说说原理

Tesla.Angela 发表于 2011-1-13 13:19:40

回复 ok100fen 的帖子

进程被调试的时候,EPROCESS.DebugPort的值不是零。
如果EPROCESS.DebugPort的值被清零,进程就无法被调试了。

ok100fen 发表于 2011-1-13 16:51:14

你说的“进程被调试”是指用WinDbg调试还是用od调试?

Tesla.Angela 发表于 2011-1-13 20:29:15

回复 ok100fen 的帖子

:L 被什么“调戏”还不是一样

Tesla.Angela 发表于 2011-1-14 19:05:09

回复 ok100fen 的帖子

debugport在EPROCESS中的偏移是个硬编码

Murray 发表于 2011-9-18 16:55:33

对,   要能附加的话。0xbc,修改这个就可以了,把要访问到debugport->0 转移到其他的偏移。
只要修改这个0xbc即可

dico 发表于 2011-10-24 20:47:21

这种方式对SOD有效么

Murray 发表于 2011-10-27 22:37:03

dico 发表于 2011-10-24 20:47 static/image/common/back.gif
这种方式对SOD有效么

当然有-,-
这是R0 Anti Cheat 的最基本的一步。

难一些还有 DebugObject等等。
参考成熟的反Cheat程序

Tesla.Angela 发表于 2011-10-30 19:18:00

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:14:42

本帖最后由 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
爆的体无完肤

Tesla.Angela 发表于 2011-11-3 21:48:57

Murray 发表于 2011-11-3 18:14 static/image/common/back.gif
过SOD?,- -不解。
Strong OD 好像是帮助调试某些强壳用的
斑竹想说的是Anti- SOD吧= =?,


不,海风的SOD貌似能防止被调试程序检测到自己被调试,无论是猥琐的FindWindow法还是int 2d法。
要突破SOD而检测到调试器貌似要花费一点功夫。

cainiaocai 发表于 2011-12-21 01:09:45

DebugPort清0无非就是先找到进程的EPROCESS结构,再加上0x0BC偏移找到DebugPort。

我有一个思路,不知道可不可行:

首先,要找到进程的EPROCESS结构通常有2个办法,PsGetCurrentProcess和PsLookupProcessByProcessId,

我的想法是,能不能挂钩这两个函数,返回错误的EPROCESS结构指针,从而达到anti clear DebugPort的目的呢。

斑竹看看这个方法行不?

x64asm 发表于 2011-12-21 06:18:02

你看过这两个函数的实现吗?
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了。

x64asm 发表于 2011-12-21 06:21:10

这两个函数也是从KPCR--EPROCESS里取东西的,人家都直接用OFFSET来写DEBUG PORT了,您想想,再用OFFSET取这两个,那不是很容易的事吗?

cainiaocai 发表于 2011-12-22 03:55:38

那该怎么阻止他找到EPROCESS呢?

Tesla.Angela 发表于 2011-12-23 11:25:53

cainiaocai 发表于 2011-12-22 03:55 static/image/common/back.gif
那该怎么阻止他找到EPROCESS呢?

阻止不了的

马大哈 发表于 2012-1-17 20:42:00

真复杂.................{:soso__732155727799369784_3:}

LZJzhu 发表于 2012-1-28 20:54:59

精彩的对话。。。

mrkrcl 发表于 2012-2-1 14:57:41

简单点说,DebugPort是EPROCESS结构体的一个成员字段,主要用于标识当前进程是否被调试,决定调试器是否能接收到调试信息

如果DebugPort不为0表示当前进程正在被调试,那么调试器就能接受到关于该进程的调试信息~ 如果debugport被清0了那么调试器就无法接受到来任何来自该进程的调试信息了,那么所谓的调试也就无效了


至于为什么debugport被清0 了就无法接受相关的调试信息,我觉得这个涉及的东西比较多,比如说涉及到CSRSS的通信等~
页: [1]
查看完整版本: 什么是DebugPort清零