API也能攔截啊!真是有趣啊!
提到攔截API,就會想到個人電腦在DOS作業系統時代的攔截中斷(Interrupt)。攔截中斷是修改中斷向量表中中斷程式的位址,讓其指向在記憶體中自己所設計的程式,如此中斷若被呼叫就會執行自己所撰寫的程式,如果有需要還可呼叫原來的中斷程式。
攔截API(英文稱為API Hook),對程式設計師而言這技術已延用多年,其觀念和攔截中斷相似。然而攔截API的方法很多種,但以修改IAT(Import Address Table)的技巧最為安全。有關IAT的說明,請參考PE檔案格式。在Wikipedia網站中就有詳細介紹PE檔案格式的網頁。
攔截API範例程式(即vpAPIhook.exe)執行為行程A,會自動啟開記事本(即notepad.exe) 為行程B。行程A會注入少許的機械碼到行程B中,來攔截行程B中的API函數MessageBoxW。現在可以在開啟的記事本(即行程B)中輸入資料並結束行程B的執行,這時會顯示攔截成功的對話盒,點選確定後才會出現正常的記事本對話盒,詢問是否儲存已變更的資料。這就是攔截API函數MessageBoxW的實作說明。
下載測試...
問題延伸...
無
相關網頁連結...
- Portable Executable - Wikipedia, the free encyclopedia
- A Tour of the Win32 Portable Executable File Format
- An In-Depth Look into the Win32 Portable Executable File Format
- WJR's PEview(PE/COFF File Viewer), xlatHinc, M(Mandelbrot Set), Awpm
- Portable Executable Format
- Process Injection/API Hooking (by Arne Elster)
- VB心得筆記 - 如何攔截API呼叫
- VB(.Net)和機械碼
- 機械碼的注入
- 模組的注入