请教关于API HOOK的问题? ( 积分: 100 )

  • 主题发起人 主题发起人 大唐电信
  • 开始时间 开始时间

大唐电信

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在学习关于API HOOK,在网上找了点资料,做个例子,但是只能拦截自身程序的API,,现在想做个程序能够拦截其他应用程序的API,在网上找了很久也没找到相关的资料,,望各位大虾给个简单的示例程序或给些相关资料。<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 谢谢
 
最近在学习关于API HOOK,在网上找了点资料,做个例子,但是只能拦截自身程序的API,,现在想做个程序能够拦截其他应用程序的API,在网上找了很久也没找到相关的资料,,望各位大虾给个简单的示例程序或给些相关资料。<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 谢谢
 
我有一个,不知道怎么给你!
 
拦截API的原理<br><br>仅关注windows 2000系统。<br> &nbsp; &nbsp;拦截API,即是拦截目标进程对某一API函数的调用,将对该API的调用改为调用自定义的函数。假如说我们要拦截进程a_proc.exe使用的API函数为a_API,自定义的函数myAPI位于mydll.dll中。在windows 2000系统,任何一个进程,都使用独立的进程空间;在它自己的空间内,分布着一系列模块(可以用EnumProcessModules等函数全部列举出来),有主程序模块、相关的动态链接库、一些线程。熟悉PE映像的朋友都知道,在a_proc.exe的映像中,有可能找到某个位置是函数a_API的绝对地址,也有可能连它的影子也看不到;如果能找到这个位置,将此处修改为函数myAPI的绝对地址,即完成拦截;如果找不到(程序被压缩等情形),就要计算出函数a_API的绝对地址(使用GetProcAddress函数),将这个绝对地址处的前五个字节,改为跳转到函数myAPI的绝对地址,这样,调用函数a_API,将转为调用函数myAPI,亦完成拦截。函数myAPI位于mydll.dll中,只有将mydll.dll作为远程线程(使用CreateRemoteThread等函数)注入目标进程中,才能被目标进程所采用。<br> &nbsp; &nbsp;函数myAPI与函数a_API具有同样的输入、输出参数。<br> &nbsp; &nbsp;现在网络上、公开出版物上拦截API的例子多的是。关键就是要搞清楚输入、输出参数的意思。记住mydll.dll是要用自己的程序,注入到目标进程中使用的。
 
看看第22章, 有一个HookAPI类, http://www.2ccc.com/article.asp?articleid=2303
 
to 寻路<br>老大 你能发给我吗?(105122033@qq.com)..谢谢<br>to 无泪 <br>大虾,你说太深奥,我现在是想得到一些代码,自己好好看看。 &nbsp;谢谢<br>to 刘麻子<br>不用说拉,,久仰大名,现在还在看你的那个EnumDemo程序。 &nbsp;谢谢<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;学习,学习,再学习。
 
你要hook什么函数,如果不是系统dll(kernel32.dll/user32.dll...)中的函数的话有偷懒的办法可以实现。
 
你搜&quot;屏幕取词原理&quot;<br>具体的我就不多说了,最近我看离线看到这类资料重复发了至少10次
 
to cst_zf<br>哇靠,那玩意太复杂拉,能不能给点简单的代码,突出本质就行了,比如去拦截另外一个程序调用FindWindow函数,,请各位大虾在给点资料或代码。
 
Win9X和WinNT不同.HOOKAPI也有很多种方法<br>1.修改导入导出表<br>2.直接修改代码<br><br>9x下边只要获得地址和写权限,就可以直接修改DLL的内容,并影响全局,而NT直接修改DLL地地址,只影响本进程.因此需要使用远程修改WriteProcessAddress.<br>这方面的参考资料实在很多,可是如果你想要得是拿到手里就能用的代码,麻烦点.因为这个东西如果原理不搞清楚,没办法用的起来.比如修改之后,需要保存信息,可能还需要和你的控制程序通信等等。<br>梁肇新的 编程高手 当中关于APIHOOK介绍了基本的原理
 
后退
顶部