2011-06-10 112 views
1

我目前正在通過dll注入來掛鉤ntdll.dll調用。 首先,我通過CreateRemoteThread()在現有的過程中創建線程,然後我通過LoadLibrary加載我的dll,最後在PROCESS_ATTACH上掛斷電話。ntdll.dll調用掛鉤問題

注入工作正常,但後來我想記錄所有註冊表和文件系統查詢。問題是它無法正常工作。

我決定通過PasteBin發佈代碼,因爲piece很大。這裏是鏈接: http://pastebin.com/39r4Me6B

我想掛鉤ZwOpenKey,然後記錄關鍵內容,然後啓動「真」功能的指針。函數NOpenKey被執行,但進程停止沒有任何錯誤。

有沒有人看到任何問題?

回答

2

如果使用OllyDbg,ZwOpenKey以5個字節MOV EAX, 77開頭。

您可以覆蓋這些字節像這樣JMP _myZwOpenKey然後從那裏你可以做任何與堆棧上的值,恢復所有寄存器,然後做一個JMP 7C90D5B5這是ZwOpenKey + 5個字節的地址。

CPU Disasm 
Address Hex dump   Command     Comments 
7C90D5AF  90   NOP 
7C90D5B0 /$ B8 77000000 MOV EAX,77    ; ntdll.ZwOpenKey(guessed rg1,Arg2,Arg3) 
7C90D5B5 |. BA 0003FE7F MOV EDX,7FFE0300 
7C90D5BA |. FF12   CALL DWORD PTR DS:[EDX] 
7C90D5BC \. C2 0C00  RETN 0C 

我通常在Assembly中這樣做,我不必在類型轉換和所有這些方面混亂很多。希望這可以幫助。