找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 14051|回复: 9

求思路, 关于64位debugport清零的方法

[复制链接]

4

主题

58

回帖

0

精华

铜牌会员

积分
248
发表于 2013-5-11 18:15:32 | 显示全部楼层 |阅读模式
一直在逛论坛。 关于debugport清零,应该是更具 进程的 eprocess结构定位debugport这个地址,然后一直对其写0。

有一种思路避免因为debugport清零不能被调试的思路是 把所有用到 debugport 这个地址的 值改成到其它位置,那么目标如果继续 对debugport地址清零,就让他清就行了。

在xp下,找到所以访问或改写debugport的地址很好得到。网上的资料也一大堆。 但在win764位下,就没资料了。

我的操作是在VMware里 用od附加一个进程, 用windbg 对这个程序的eprocess结构的debugport下读写断点。问题是这让只找到几个地址是访问 debugport这个地址内容的。  用驱动把它们改了, 一会就蓝屏。 应该是还有的 访问debugport值的地址没有找到的缘故吧? 求帮助~  谢谢。

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

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

QQ
发表于 2013-5-11 22:45:44 | 显示全部楼层
蓝屏......

这个得TA来看看了,帮你顶顶{:soso_e113:}
我就是嗷嗷叫的老马了......

4

主题

58

回帖

0

精华

铜牌会员

积分
248
 楼主| 发表于 2013-5-12 10:18:19 | 显示全部楼层
马大哈 发表于 2013-5-11 22:45
蓝屏......

这个得TA来看看了,帮你顶顶

嗯。  是说版主吗?  64位的资料那么少,他是怎么研究出那么多东西来的。真心的佩服~

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2013-5-12 11:51:21 | 显示全部楼层
LZ说啥呢?DEBUGPORT是EPROCESS的一个成员,是有固定偏移的,怎么能把偏移给修改了?除非你重新编译一次WIN7 X64内核(可惜你没有源代码)。

貌似你要『反清零DP』?
三个方法:
1.找到不断进行清零DP的线程,然后把此线程挂起(用内存断点)。
2.找到驱动里清零DP的代码,把对应代码NOP掉,或者把清零的位置改到EPROCESS.InheritedFromUniqueProcessId。
3.重新编译一次WIN7 X64内核,然后把EPROCESS.DebugPort和EPROCESS.InheritedFromUniqueProcessId兑换位置(可惜WIN7 X64没有公开源代码,你做不到)。

4

主题

58

回帖

0

精华

铜牌会员

积分
248
 楼主| 发表于 2013-5-12 13:00:22 | 显示全部楼层
Tesla.Angela 发表于 2013-5-12 11:51
LZ说啥呢?DEBUGPORT是EPROCESS的一个成员,是有固定偏移的,怎么能把偏移给修改了?除非你重新编译一次WIN ...

好像windows公开的只有 win2003的wrk
嗯。 我想做的就是把清零的位置给改了。

我想的不在上面的三个之中,  我是直接改内核里,所有用到eprocess.Debugport这个端口的函数,找到相对偏移地址,  比如说DbgkpQueueMessage 这个函数 +0x44地位置用到了 eprocess.Debugport 端口,那么DbgkpQueueMessage+0x44 的地址的值肯定是eprocess结构的Debugport偏移, 只要把它成 eprocess的其他成员,就可以反清零了吧?

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2013-5-12 13:12:34 | 显示全部楼层
chess0726 发表于 2013-5-12 13:00
好像windows公开的只有 win2003的wrk
嗯。 我想做的就是把清零的位置给改了。


不可以的。
【DP反清零】最好的办法就是找到内核内存里清零DP的代码,然后把对应的代码给NOP掉。

4

主题

58

回帖

0

精华

铜牌会员

积分
248
 楼主| 发表于 2013-5-12 13:34:21 | 显示全部楼层
Tesla.Angela 发表于 2013-5-12 13:12
不可以的。
【DP反清零】最好的办法就是找到内核内存里清零DP的代码,然后把对应的代码给NOP掉。 ...

好吧。 这样着弄保险。 也不是很麻烦。 呵呵, 那谢谢版主了。~~~

点评

如果加了VMP就麻烦了,不信你试试搞搞WIN64AST的驱动。。。  发表于 2013-5-12 14:16

4

主题

58

回帖

0

精华

铜牌会员

积分
248
 楼主| 发表于 2013-5-12 13:36:23 | 显示全部楼层
Tesla.Angela 发表于 2013-5-12 11:51
LZ说啥呢?DEBUGPORT是EPROCESS的一个成员,是有固定偏移的,怎么能把偏移给修改了?除非你重新编译一次WIN ...

对了,请问下, InheritedFromUniqueProcessId 这个成员是什么功能的?

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2013-5-12 14:07:45 | 显示全部楼层
chess0726 发表于 2013-5-12 13:36
对了,请问下, InheritedFromUniqueProcessId 这个成员是什么功能的?

这个项记录的是父进程ID。无论修改成什么值,都对进程没有任何影响。

4

主题

58

回帖

0

精华

铜牌会员

积分
248
 楼主| 发表于 2013-5-12 16:41:01 | 显示全部楼层
Tesla.Angela 发表于 2013-5-12 14:07
这个项记录的是父进程ID。无论修改成什么值,都对进程没有任何影响。

哦,是这样,我都是弄Exittimer 或CreateTimer 这两成员的。 呵呵, 应该都差不多
嗯。 vmp 我就不会分析了, 一般都是用ida来看的,如果看不懂那就是就看不懂了, vmp时只能动态分析,跟着寄存器走...
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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