上面說過了隱藏程序,這篇部落格我們就簡單描述一下暴力搜尋程序。
乙個程序要執行,必然會載入到記憶體中,斷鏈隱藏程序只是把eprocess從鍊錶上摘除了,但它還是駐留在記憶體中的。這樣我們就有了找到它的方法。
在核心中,傳入程序id,通過zwopenprocess得到控制代碼,再傳入控制代碼,通過obreferenceobjectbyhandle,可以獲得eprocess,既然獲得了eprocess,問題就迎刃而解了。
既可以選擇用加偏移的方法得到程序名,也可以用psgetprocessfilename來獲取程序名。這樣就得到了程序的資訊。
所以,我們從0列舉到乙個很大的數,比如100000(我們所見過的程序id沒有大過100000的),作為程序id,為了提高效率,可以只把4的倍數作為程序id(程序id都是4的倍數),在ring3層通過openprocess開啟,如果得到的控制代碼不為空,在將其id傳入ring0層,通過上面的方法,就可以搜尋出記憶體中的所有程序。
下面是關鍵部分原始碼:
booleangetprocessimagenamebyprocessid(/*in*/ulong ulprocessid,/*out*/
char* szprocessimagename,/*out*/ulong*ulprocessnamelen)
status = obreferenceobjectbyhandle(hprocess,file_read_data,0
, kernelmode,&eprocess, 0
);
if (!nt_success(status))
obdereferenceobject(eprocess);
//上面用過obreferenceobjectbyhandle,所以這裡要解一次引用計數
*ulprocessnamelen = strlen((const
char*)psgetprocessimagefilename(eprocess));
memcpy(szprocessimagename,(
const
char*)psgetprocessimagefilename(eprocess),*ulprocessnamelen);
dbgprint(
"%s\r\n
",szprocessimagename);
zwclose(hprocess);
}
Wythoff Game(暴力列舉)
wythoff game 時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 最近 zkc同學在學博弈,學到了乙個偉大的博弈問題 威佐夫博弈。相信大家都學過了吧?沒學過?沒問題。我將要為你講述一下這個偉大的博弈問題。有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲...
Butterfly 列舉 暴力
原題 這裡有點暴力的感覺,但是有乙個卡資料,所以這裡加了一點點優化就ac了。先得到每乙個點的,以此點向左上角 zs 走,右上角 ys 走,左下角 zx 走,右下角 yx 走分別可以走多少個 x 再進行判讀以這個點為中心的左右兩邊 l 是否是大於等於本應該有的長度。這裡有乙個小優化,就是求出最大的 l...
10 暴力列舉
暴力是一種有著特殊美學意義的事物,對於許多東西,在需要進行計算的時候,將其所有的組合給排列出來也是一種很好的選擇,今天的題目,是乙個希望計算火柴可以擺出的等式的個數 題目如下 挺麻煩的地方在於,每乙個數需要的火柴數其實是沒有規律的,在想要得到乙個等式的話,就要有可以將所有火柴轉換成數字的乙個陣列 於...