- 注册时间
 - 2010-8-21
 
- 最后登录
 - 2017-5-28
 
- 在线时间
 - 4 小时
 
 
 
 
 
编程入门 
  
	- 魔鬼币
 - 598 
 
 
 
 | 
 
win2k sp4~winxp sp1首先定位加载的win32k.sys的入口点(静态文件的麻烦一些),然后搜索FF 15 DD CC BB AA特征,如果0xAABBCCDD指向的内容是KeAddSystemServiceTable则当前指令的前面4字节就是表的实际地址 
 
bf9ae613 68109099bf      push    offset win32k!W32pArgumentTable (bf999010) 
bf9ae618 ff350c9099bf    push    dword ptr [win32k!W32pServiceLimit (bf99900c)] 
bf9ae61e 893520359abf    mov     dword ptr [win32k!countTable (bf9a3520)],esi 
bf9ae624 56              push    esi 
bf9ae625 68008399bf      push    offset win32k!W32pServiceTable (bf998300) 
bf9ae62a ff15d8b498bf    call    dword ptr [win32k!_imp__KeAddSystemServiceTable (bf98b4d8)] 
bf9ae630 e8fd0a0000      call    win32k!InitCreateUserCrit (bf9af132) 
 
得到的地址减去win32k.sys的实际加载地址并转换为RAW OFFSET就是shadow table在文件中的偏移 
 
winxp,win2k3都可以直接从win32k.sys的.data节开始取,比较简单 
 
如有谬误,请指正 |   
 
 
 
 |