Re: [問題] 關於hook特定api的問題

看板C_and_CPP (C/C++)作者 (有趣生活)時間16年前 (2009/06/11 17:47), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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)

06/11 23:18, , 1F
我的意思是說假若我要hook的taget中的function 是那一
06/11 23:18, 1F

06/11 23:19, , 2F
target自己定義的 而不是
06/11 23:19, 2F

06/11 23:20, , 3F
類似像kernel.dll裡面的function
06/11 23:20, 3F

06/12 00:48, , 4F
如果是對沒有導出的函式, 那編譯完統統編在一團了,
06/12 00:48, 4F

06/12 00:48, , 5F
拿 IDA Pro 去開開看吧...orz
06/12 00:48, 5F

06/12 00:51, , 6F
另外對這樣的狀況也沒有所謂的 function name
06/12 00:51, 6F

06/12 00:52, , 7F
不過如果那個程式是 Debug 版或許有包含一些 symbol 資訊
06/12 00:52, 7F
文章代碼(AID): #1ACDAq_v (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ACDAq_v (C_and_CPP)