Posted on 2009-10-25 17:03
S.l.e!ep.¢% 閱讀(281)
評論(0) 編輯 收藏 引用 所屬分類:
RootKit
關于進程枚舉2009-10-18 14:30使用QuerySystemInformation的效果是下面的調用ProcessInformation->ExpGetProcessInformation-> PEB中的ActiveProcess雙向鏈表
昨天的PspCidTable在不同版本的HANDLE_TABLE結構體相差非常大,不過在內核模式中使用ExEnumHandleTable也許能避免這一差異,還沒有式
也就是說如果進程斷鏈,NtQuerySystemInformation就失敗了,并且斷鏈很不好收拾。
所以還是恢復正常的函數調用后,for(){openProcess(i)}稍微好一點
附上某彪悍解決方案:
進程遍歷:
1.native api獲得進程表a
2.通過activelist獲得進程表b
3.通過pspCidTable獲得進程表c
4.通過handletablelisthead獲得進程表d
5.通過csrss的handletable用2種方法枚舉獲得進程表e和f
6.通過掃描當前進程的handletable獲得進程表g
7.遍歷表c的每一個進程的SessionProcessLinks獲得進程表h
8.遍歷表c的每一個進程Vm.WorkingSetExpansionLinks獲得進程表i
9.通過Typelist分別取process和thread的表j和表k
10.通過表k得到進程表l
11.搜索內存中的threadobject和processobject得到進程表m
12.通過Wait/Dispatch得到進程表n
13.如果系統是Win2003以上遍歷表c的每一個進程的MmProcessLinks得到表o
14.綜合上面的進程表得到表p
15.對表p每一個進程做HandleTable,Vm.WorkXX,MmProcessXX,SessionProcessList掃描得到表q
16.枚舉HWNDHandle得到進程表r
17.枚舉JobObject得到表s
18.綜合得表t,此時枚舉結束~~
動態部分:
KiReadyThread
和KiSwapContext的鉤子
還有KiService鉤子
還有CreateProcessNotifyRoutine和CreateThreadNotifyRoutine
NtCreateThread鉤子
動態維護一張表,靜態枚舉結束后綜合兩表~
?