忆困血馆闻 发表于 2024-3-11 13:24:19

如何获得原始Shadow SSDT地址

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
bf9ae61e 893520359abf    mov   dword ptr ,esi
bf9ae624 56            push    esi
bf9ae625 68008399bf      push    offset win32k!W32pServiceTable (bf998300)
bf9ae62a ff15d8b498bf    call    dword ptr
bf9ae630 e8fd0a0000      call    win32k!InitCreateUserCrit (bf9af132)

得到的地址减去win32k.sys的实际加载地址并转换为RAW OFFSET就是shadow table在文件中的偏移

winxp,win2k3都可以直接从win32k.sys的.data节开始取,比较简单

如有谬误,请指正
页: [1]
查看完整版本: 如何获得原始Shadow SSDT地址