本帖最后由 ineverland 于 2010-3-14 11:53 编辑
我需要定位KiWaitListHead 和KiDispatcherReadyListHead这两个链表来搜集系统内的进程。
KiWaitListHead 容易定位就不说了。
KiDispatcherReadyListHead这个表被引用的位置有些不同
sp1 .text:004180FE add eax, 60h .text:00418101 cmp [ebp+var_1], bl .text:00418104 lea edx, KiDispatcherReadyListHead[ecx*8] 指令 8D 14 CD 80 2F 48 00 .text:0041810B jz loc_418760 .text:00418111 mov esi, [edx]
sp2 ntoskrnl.exe 5.1.2600.3654 .text:00404750 test bl, bl .text:00404752 lea edx, _KiDispatcherReadyListHead[ecx*8] 指令 8D 14 CD 80 2F 48 00 .text:00404759 jnz loc_401F0D
sp2 ntoskrnl.exe 5.1.2600.2622 .text:0040570D cmp [ebp+var_1], 0 .text:00405711 lea ecx, _KiDispatcherReadyListHead[eax*8] 指令8D 0C C5 80 AD 48 00 .text:00405718 jnz loc_405641
另外还有加载ntkrnlpa.exe,ntkrpamp.exe的情况,SP3也是。
这么多变化硬编码恐怕不好,请问做过这个的高手们是不是有比较简单的办法定位这个链表的地址呢?
还请各路高手不吝赐教。
|