该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
.text:01001100 push 4
.text:01001102 pop ecx
.text:01001103 mov edi, eax
.text:01001105 mov esi, ebx
.text:01001107 xor edx, edx
.text:01001109 repe cmpsd
.text:0100110B jnz short loc_1001111
.text:0100110D cmp ebx, eax
.text:0100110F jnz short loc_1001124
.text:01001111
.text:01001111 loc_1001111: ; CODE XREF: sub_10010D8+21j
.text:01001111 ; sub_10010D8+33j
.text:01001111 inc [ebp+var_4]
.text:01001114 cmp [ebp+var_4], 100h
.text:0100111B jl short loc_10010E5
.text:0100111D xor eax, eax
.text:0100111F
.text:0100111F loc_100111F: ; CODE XREF: sub_10010D8+4Ej
.text:0100111F pop edi
.text:01001120 pop esi
.text:01001121 pop ebx
.text:01001122 leave
.text:01001123 retn
.text:01001124 ; ---------------------------------------------------------------------------
.text:01001124
.text:01001124 loc_1001124: ; CODE XREF: sub_10010D8+37j
.text:01001124 mov eax, ebx
.text:01001126 jmp short loc_100111F
.text:01001126 sub_10010D8 endp
这个函数是用来找shadow ssdt的。因为shadow ssdt 是未导出的结构,所以比ssdt麻烦些。可以通过一个导出函数KeAddSystemServiceTable找到,因为里面包含了此结构。该结构第一个table 是ssdt, 第二个才是shadow ssdt。而且函数中也有ssdt地址。所以搜索内存时,碰到内存是valid,且前16个字节与ssdt相同,且地址与ssdt不同,我们就找到了shadow ssdt。