- 注册时间
- 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节开始取,比较简单
如有谬误,请指正 |
|