lghtly
驱动牛犊
驱动牛犊
  • 注册日期2004-10-14
  • 最后登录2005-11-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1500回复:6

如何挂钩影子表中的服务,最好有例子?谢谢!!!!!!!!!!

楼主#
更多 发布于:2005-03-13 20:01
如何挂钩影子表中的服务,最好有例子?谢谢!!!!!!!!!!
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-03-13 20:43
如何挂钩影子表中的服务,最好有例子?谢谢!!!!!!!!!!

啥是影子表
---内核开发合作或提供基础技术服务QQ:22863668 ---
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-13 22:50
如何挂钩影子表中的服务,最好有例子?谢谢!!!!!!!!!!

影子表!可能是我太落伍了,怎么连名字也没有听说过 :D :P
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
地板#
发布于:2005-03-14 05:37
不会吧
楼上两位....

service table有两份的啊
KeServiceTableDescriptorShadow啊
由win32k.sys实现的

includes the win32 USER and GDI services implemented in the kernel mode part of the win32 subsystem....节选自inside windows2000

我私下以为楼主说的是这个吧
qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-14 08:19
怎么没有一点印象呢...
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2005-03-14 09:00
GetServiceDescriptorTableShadowAddress proc uses esi edi ebx

local dwThreadId:DWORD

xor ebx, ebx ; = NULL. Assume ServiceDescriptorTableShadow will be not found

mov eax, KeServiceDescriptorTable
mov esi, [eax]

; Find KTHREAD.ServiceTable field
; For non-GUI threads this field == KeServiceDescriptorTable
; and it points to ServiceDescriptorTable
; For GUI threads
; ServiceDescriptorTableShadow
        ; Search KeServiceDescriptorTable offset in KTHREAD

invoke KeGetCurrentThread
mov edi, 200h-4
.while edi
.break .if dword ptr [eax][edi] == esi
dec edi
.endw

.if edi != 0
; edi = offset to ServiceTable field in KTHREAD structure
mov dwThreadId, 080h
.while dwThreadId < 400h
push eax ; reserve DWORD on stack
invoke PsLookupThreadByThreadId, dwThreadId, esp
pop ecx ; -> ETHREAD/KTHREAD
.if eax == STATUS_SUCCESS
push dword ptr [ecx][edi]
fastcall ObfDereferenceObject, ecx
pop eax
.if eax != esi
mov edx, MmSystemRangeStart
mov edx, [edx]
mov edx, [edx]
.if eax > edx ; some stupid error checking
mov ebx, eax
invoke DbgPrint, $CTA0(\"FindShadowTable: Found in thread with ID: %X\\n\"), dwThreadId
.break
.endif
.endif
.endif
add dwThreadId, 4
.endw
.endif

mov eax, ebx
ret

GetServiceDescriptorTableShadowAddress endp
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-14 12:01
不会吧
楼上两位....

service table有两份的啊
KeServiceTableDescriptorShadow啊
由win32k.sys实现的

includes the win32 USER and GDI services implemented in the kernel mode part of the win32 subsystem....节选自inside windows2000

我私下以为楼主说的是这个吧

如果楼主说的确实如此,是有两个,一个是为Ntoskrnl.exe的,一个是win32k.sys的,挂钩方法基本相同,而且系统根据and 服务号,0x0fff来区别的。前一个服务号都小于0x0fff,后一个都大于
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部