找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 21672|回复: 20

什么是DebugPort清零

 火... [复制链接]

90

主题

473

回帖

2

精华

钻石会员

积分
3261
发表于 2011-1-12 23:46:16 | 显示全部楼层 |阅读模式
什么是DebugPort清零?

DebugPort清零的作用是什么?

哪位高手介绍一下


谢谢大家

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-1-12 23:56:10 | 显示全部楼层
lkd> dt nt!_EPROCESS
   ...
   +0x0bc DebugPort        : Ptr32 Void
   ...

debugport是EPROCESS结构中的一个成员。
debugport清零能反调试。

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2011-1-13 07:42:06 | 显示全部楼层
谢谢TA,现在debugport清零明白了
但是,为什么debugport清零能反调试?

说说原理

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-1-13 13:19:40 | 显示全部楼层
回复 ok100fen 的帖子

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

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2011-1-13 16:51:14 | 显示全部楼层
你说的“进程被调试”是指用WinDbg调试还是用od调试?

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-1-13 20:29:15 | 显示全部楼层
回复 ok100fen 的帖子

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

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-1-14 19:05:09 | 显示全部楼层
回复 ok100fen 的帖子

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

5

主题

68

回帖

2

精华

钻石会员

积分
2738
QQ
发表于 2011-9-18 16:55:33 | 显示全部楼层
对,   要能附加的话。0xbc,修改这个就可以了,把要访问到debugport->0 转移到其他的偏移。
只要修改这个0xbc即可

2

主题

72

回帖

0

精华

银牌会员

积分
597
发表于 2011-10-24 20:47:21 | 显示全部楼层
这种方式对SOD有效么

5

主题

68

回帖

2

精华

钻石会员

积分
2738
QQ
发表于 2011-10-27 22:37:03 | 显示全部楼层
dico 发表于 2011-10-24 20:47
这种方式对SOD有效么

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

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

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-10-30 19:18:00 | 显示全部楼层
Murray 发表于 2011-10-27 22:37
当然有-,-
这是R0 Anti Cheat 的最基本的一步。

个人感觉过SOD对一般的初学者还是有一定难度的。但让OD无法调试却非常简单。
我记得有个日本人写的软件SetFSB(在WINDOWS环境下超频的软件),很多人都破解不了。
反正网上基本没有能用的破解版,最终不少人花800日元(约70元人民币)买了正版。
附上个网址:http://www13.plala.or.jp/setfsb/

5

主题

68

回帖

2

精华

钻石会员

积分
2738
QQ
发表于 2011-11-3 18:14:42 | 显示全部楼层
本帖最后由 Murray 于 2011-11-3 18:17 编辑
Tesla.Angela 发表于 2011-10-30 19:18
个人感觉过SOD对一般的初学者还是有一定难度的。但让OD无法调试却非常简单。
我记得有个日本人写的软件S ...


过SOD?,- -不解。
Strong OD 好像是帮助调试某些强壳用的
斑竹想说的是Anti- SOD吧= =?,

国外的软件不清楚- -,但是不觉得没有破不到的
连VMP  TMD等等强壳都有破解版
但是就反外挂的程序强度而已。
国内完爆棒子阿。
什么NP HS XT 在国内被HProtect PefectProtector
爆的体无完肤

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-11-3 21:48:57 | 显示全部楼层
Murray 发表于 2011-11-3 18:14
过SOD?,- -不解。
Strong OD 好像是帮助调试某些强壳用的
斑竹想说的是Anti- SOD吧= =?,

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

2

主题

17

回帖

0

精华

初来乍到

积分
29
发表于 2011-12-21 01:09:45 | 显示全部楼层
DebugPort清0无非就是先找到进程的EPROCESS结构,再加上0x0BC偏移找到DebugPort。

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

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

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

斑竹看看这个方法行不?

1

主题

39

回帖

0

精华

铜牌会员

积分
299
发表于 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, [rax+70h]
.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, [rax+3B0h]
.text:00000001400A0250                 retn
.text:00000001400A0250 PsGetCurrentProcessId endp



如此简单的代码,人家轻则硬编码写在他的代码里,重则从文件中读取出来,连重定位都不需要
这种函数即使HOOK,能有什么用呢?如果是稍微有点头脑的人的话,就不会用这两个函数,而且要手写实现这两个函数
根本就不会有问题,所以还是别HOOK了。

1

主题

39

回帖

0

精华

铜牌会员

积分
299
发表于 2011-12-21 06:21:10 | 显示全部楼层
这两个函数也是从KPCR--EPROCESS里取东西的,人家都直接用OFFSET来写DEBUG PORT了,您想想,再用OFFSET取这两个,那不是很容易的事吗?

2

主题

17

回帖

0

精华

初来乍到

积分
29
发表于 2011-12-22 03:55:38 | 显示全部楼层
那该怎么阻止他找到EPROCESS呢?

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-12-23 11:25:53 | 显示全部楼层
cainiaocai 发表于 2011-12-22 03:55
那该怎么阻止他找到EPROCESS呢?

阻止不了的

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2012-1-17 20:42:00 | 显示全部楼层
真复杂.................{:soso__732155727799369784_3:}
我就是嗷嗷叫的老马了......

0

主题

4

回帖

0

精华

初来乍到

积分
16
发表于 2012-1-28 20:54:59 | 显示全部楼层
精彩的对话。。。

3

主题

13

回帖

0

精华

铜牌会员

积分
131
发表于 2012-2-1 14:57:41 | 显示全部楼层
简单点说,DebugPort是EPROCESS结构体的一个成员字段,主要用于标识当前进程是否被调试,决定调试器是否能接收到调试信息

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


至于为什么debugport被清0 了就无法接受相关的调试信息,我觉得这个涉及的东西比较多,比如说涉及到CSRSS的通信等~
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表