列舉程序 暴力搜尋記憶體(Ring0)

2022-08-02 03:42:12 字數 1220 閱讀 2520

上面說過了隱藏程序,這篇部落格我們就簡單描述一下暴力搜尋程序。

乙個程序要執行,必然會載入到記憶體中,斷鏈隱藏程序只是把eprocess從鍊錶上摘除了,但它還是駐留在記憶體中的。這樣我們就有了找到它的方法。

在核心中,傳入程序id,通過zwopenprocess得到控制代碼,再傳入控制代碼,通過obreferenceobjectbyhandle,可以獲得eprocess,既然獲得了eprocess,問題就迎刃而解了。

既可以選擇用加偏移的方法得到程序名,也可以用psgetprocessfilename來獲取程序名。這樣就得到了程序的資訊。

所以,我們從0列舉到乙個很大的數,比如100000(我們所見過的程序id沒有大過100000的),作為程序id,為了提高效率,可以只把4的倍數作為程序id(程序id都是4的倍數),在ring3層通過openprocess開啟,如果得到的控制代碼不為空,在將其id傳入ring0層,通過上面的方法,就可以搜尋出記憶體中的所有程序。

下面是關鍵部分原始碼:

boolean

getprocessimagenamebyprocessid(/*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 暴力列舉

暴力是一種有著特殊美學意義的事物,對於許多東西,在需要進行計算的時候,將其所有的組合給排列出來也是一種很好的選擇,今天的題目,是乙個希望計算火柴可以擺出的等式的個數 題目如下 挺麻煩的地方在於,每乙個數需要的火柴數其實是沒有規律的,在想要得到乙個等式的話,就要有可以將所有火柴轉換成數字的乙個陣列 於...