看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《stellvia7 (stellvia)》之銘言: : 請問假若我要Hook某一特定的API, 是先創建DLL檔,再用createRemoteThread將自己的DLL : 藉由 LoadLibraryA()load到target的memory space. : 而我們的DLL中的function會查出我們要Hook api的address, 再將此address做backup,在 : jump到我們DLL中的其他function? 從敘述來看這 DLL 是自己建立的,所以.. : 假若是這樣那請問. 我們怎麼知道我們要hook那特定api的function name? "function name"? 要 hook 哪個 API 也是自己決定的不是嗎 比如你想 hook 開檔的動作 可能就會去攔 kernel32.dll 的 CreateFileW 這個 API 那要取得 CreateFileW API 的實際位址可以用 GetProcAddress(GetModuleHandle("kernel32"),"CreateFileW") 所以原本你對想 hook 的相關 API(s) 就要熟悉了 不然也不知道該 hook 哪個 API、或者是有所遺漏 : 再來要jump到我們要replace 的function 的address該怎麼查詢?(ps.replace functino 已經load到taget的 : memory space 中了). 假設你已經注入自己的 DLL 到 target process 了 那 replace function 也在自己 DLL 內吧,所以位址自己也知道呀 不知道這邊說的查詢是由哪一方進行查詢? : 感恩 假若第一段有錯 請指正 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.53.23 ※ 編輯: UNARYvvv 來自: 140.115.53.23 (06/11 17:48)
stellvia7:我的意思是說假若我要hook的taget中的function 是那一 06/11 23:18
stellvia7:target自己定義的 而不是 06/11 23:19
stellvia7:類似像kernel.dll裡面的function 06/11 23:20
UNARYvvv:如果是對沒有導出的函式, 那編譯完統統編在一團了, 06/12 00:48
UNARYvvv:拿 IDA Pro 去開開看吧...orz 06/12 00:48
UNARYvvv:另外對這樣的狀況也沒有所謂的 function name 06/12 00:51
UNARYvvv:不過如果那個程式是 Debug 版或許有包含一些 symbol 資訊 06/12 00:52