作者UNARYvvv (有趣生活)
看板C_and_CPP
标题Re: [问题] 关於hook特定api的问题
时间Thu Jun 11 17:47:31 2009
※ 引述《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)
1F:推 stellvia7:我的意思是说假若我要hook的taget中的function 是那一 06/11 23:18
2F:→ stellvia7:target自己定义的 而不是 06/11 23:19
3F:→ stellvia7:类似像kernel.dll里面的function 06/11 23:20
4F:→ UNARYvvv:如果是对没有导出的函式, 那编译完统统编在一团了, 06/12 00:48
5F:→ UNARYvvv:拿 IDA Pro 去开开看吧...orz 06/12 00:48
6F:→ UNARYvvv:另外对这样的状况也没有所谓的 function name 06/12 00:51
7F:→ UNARYvvv:不过如果那个程式是 Debug 版或许有包含一些 symbol 资讯 06/12 00:52