我對 HOOK 派遣例程函式表的體會。。。

2021-06-08 08:39:53 字數 1016 閱讀 7492

關鍵點:

除錯函式得到的資訊:

kd> u nt!iofcalldriver

nt!iofcalldriver:

804ef120 ff2500d25480    jmp     dword ptr [nt!piofcalldriver (8054d200)]

804ef126 cc              int     3

804ef127 cc              int     3

804ef128 cc              int     3

804ef129 cc              int     3

804ef12a cc              int     3

804ef12b cc              int     3

nt!iocheckquerysetfileinformation:

804ef12c 8bff            mov     edi,edi

我們知道,在呼叫iocalldriver 的時候,它會先呼叫 iofcalldriver,所以,我們必須替換 這個 jmp 的位址,也就是

替換成我們的函式位址。。。

替換的過程:

ulong  uaddress;

kirql  irql;

uaddress = (ulong)iofcalldriver;  // 得到原函式位址

__asm

irql = keraiseirqltodpclevel();       // 提高中斷等級,防止被搶占。。。    

clearmemoryprotect();                    // 去除記憶體的寫保護,我自己把它們封裝了

__asm

recovermemoryprotect();

kelowerirql(irql);

解除安裝呢?

也就是,我們將 jmp 後 的4 個位元組 替換成原來的函式位址,一切就是這樣,從這裡可以看出,指標的威力是很強大的。。。

我對SG函式的理解

i 的sg函式g i 定義如下 如果該點沒有出邊,g i 0 否則定義乙個mex minimal excludant 操作,這是對乙個集合進行的操作,返回值為集合中所不包含的最小的非負整數,那麼g i m ex。顯然對於乙個有向無環圖,我們都能在o 狀態總數 每個點 的後繼狀 態數 時間內求出所有點...

對函式與結構體的淺薄認識

1182 獎學金 輸入包含n 1行 第1行為乙個正整數n 6 n 300 表示該校參加評選的學生人數。第2到n 1行,每行有3個用空格隔開的數字,每個數字都在o到100之間z第1行的3個數 字依次表示學號為j 1的學生的語文 數學 英語的成績。每個學生的學號按照輸入順序編號為l n 恰好是輸入資料的...

sort 函式對結構體的排序問題

翻譯 程式設計能力測驗 pat 是由浙江大學電腦科學與技術學院開發的。每個測試應該同時執行在幾個地方,最終和ranklists將合併後立即測試。現在你的工作是編寫乙個程式,正確合併所有ranklists並生成最終的排名。輸入格式 每個輸入檔案包含乙個測試用例。對於每個案例,第一行包含乙個正數n 10...