这个演示只能截取这个程序的Api,如何截获整个系统的Api呀!!!!(含制作API钩子,截获API的例子 源码)(16分)

  • 主题发起人 主题发起人 cntiny
  • 开始时间 开始时间
C

cntiny

Unregistered / Unconfirmed
GUEST, unregistred user!
下载地址:
http://www.tommstudio.com/newclub30/doaction.asp?action=download&type=progsources&id=41
 
编写vxd(win9x) or sys(win2000)驱动程序
 
TO:xusong168
不是这样的呀,向金山快译 怎么可以截取整个系统的 Api中的 TextOutA等函数呀!!
而这个程序也截取了,但仅仅在这个程序中有用,而其它程序运行时,还是老的Api呀~~~
 
金山词霸是这样的,它枚举出系统所有的进程,然后注入到每个进程里了。
并且随时监视新建的进程。
 
TO:xusong168
那我怎样才能做到那样呢????
谢谢~~
 
Tool Help Functions
The following functions are used with tool help services:

CreateToolhelp32Snapshot
Heap32First
Heap32ListFirst
Heap32ListNext
Heap32Next
Module32First
Module32Next
Process32First
Process32Next
Thread32First
Thread32Next
Toolhelp32ReadProcessMemory

参考一下这几个API
 
TO:xusong168
哥们,我这上面有源程序。你能给我改成整个系统的hook吗?
分不够可以再加呀!!!~~~~~
帮忙呀~~~~~
 
我现在没这能力
我也在研究探索中,只不过比你先行一点点。
 
TO:xusong168
谢谢你呀~~~
等我这个问题回答出来了,或等等看给你加分!!
呵~~
 
做个消息钩子就可以钩住大部分进程了。(非GUI进程不行)
 
http://www.xfocus.net
好象有点资料,其实很简单的
 
to:NowCan
我不是想截获消息,而是想截获函数Textouta之类的!
to:duducat
我找不到呀!!
你给个联接,谢谢!
 
我只能再给讲一点原理:
APIHook.rar之中的技术只是在加载MYAPIDLL.dll的进程中有效,
PDEMO.exe主动加载了MYAPIDLL.dll,所以对它有效。

要想让别的进程加载MYAPIDLL.dll,就得用windows钩子hook函数,
钩住那个进程的getmessage过程,这样当那个进程运行到getmessage时,
就会加载MYAPIDLL.dll。

这个技术的限制是必须是gui程序,否则不会调用getmessage,也就
不会被装上钩子。

参考
HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
);

idHook
[in] Specifies the type of hook procedure to be installed.
This parameter can be one of the following values.

WH_GETMESSAGE Installs a hook procedure that monitors messages
posted to a message queue. For more information, see the
GetMsgProc hook procedure.
 
我做个一个完整的这样的程序,可以钩住textoutA,textout,drawText,等等。
金山词霸也根本不是枚举进程。都是通过hook。

写这样的程序:
1。 你要熟悉钩子。
2。你要熟悉PE文件的结构。因为归根到底他是通过dll注入每个进程,然后修改进程
里的调用api的地址,改为dll中自己的api。
 
TO:xusong168,NowCan
我要是做个鼠标hook是是可以起到同样的效果?

还有个问题,DLL不是动态连接库吗??不是用到它其中的函数才被加载吗?用过后,会被立即释放
吗?
如果立即释放了,它其中的函数不是也不在内存中存在了,Apihook.rar中是通过修改要截获
的函数的前5个字节JMP到自己的函数入口的,而,自己的函数,不是已经被用过,被释放了吗?
怎么还有用呀???
加入不被释放,那为什么叫动态连接库呀???DLL企不是除了做hook外就没其它意义了???

 
TO:薄荷
刚才没看到你的帖子.
这些我知道,现在这个程序(在楼顶)已经可以截获自己程序中的textoutA,textout,drawText
了,是不是要像xusong168说的那样截获getmessage才可以截获所有程序中的Api函数了(ie之
类特殊的先不讲)?
楼顶的程序是不不根据PE文件结构找到要截获的函数,然后修改它的的前5个字节呀?
 
cntiny
你说的那个例子是我写的。
呵呵,还有人记得这个例子。
 
dll的确需要用到里面的函数才会被加载,所以要使用getMessage钩子。同时还要通过
你自己的程序来加载他。这样他就在内存里了,可以被注入任何进程。这个dll不会被
释放。
“[blue]Apihook.rar中是通过修改要截获的函数的前5个字节JMP到自己的函数入口的[/blue],”
你的函数在dll里没有被释放呀。
你对动态连接库好像都不是很熟悉,为什么打算写这么有难度的程序呢?
我记得好像2000还是2001年的《电脑爱好者》13期和14期上面有对apiHook很详细的讲述。
从钩子到PE文件格式都有比较详细的讲解,还有例子,源码可以在电脑爱好者网站上下载。
当然是可以Hook任何进程的了。电脑爱好者上面也就这篇文章有些看头。

 
to:wr960204
大哥,真的是你写的吗???
程序写的可以呀,是同类代码中最短的,佩服,佩服!先谢谢你!
我看到你的帖子里,也遇到了和我一样的问题呀!!
可能 薄荷 大哥说的对,就是直接hook,而不是hook后在遍历进程什么的,这样会简单点,
因为,我做过实验了,你要是在 键盘 hook中加上个,showmessage,当你在另外一个程序中按键
时候,会弹出一个窗口,而窗口标题是,是以当前窗口的身份,显示的.也就是说,
你那把你那个apihook想办法(mouse,key,getMessage hook都可以)让它有机会以另外的程序
运行的机会就可以了.
to:薄荷
大哥,谢谢你呀,给我提供帮助,你看我说的对吗?还请你指点!有时间,给兄弟用这个演示做个取字的
加上注释,让我看看,怎么样?呵~~~
我也知道有点难,但不能因为,每天吃饭太烦.而不吃饭了吧. 开玩笑拉~
我喜欢有挑战性的东西呀,我以前学Tc就是自己这样,一个程序,一个程序的看源代码过来的,
也没教过我,Dos都是我自学的,就一个老师,我刚接触电脑时,教了我五笔,现在早还给他了,
大约3年没做过程序了,我还用的还是Dos下的思想,所以,还请各位指教!
我现在的基础是:会点C,会点汇编(但都是Dos下的),注册DFW时刚接触delphi,现在想学习新的
东西呀,请各位教我呀.我比各位都小!所以,各位都是我大哥!
If you stop,you stop!
假入你停止了,你就完了!
这点有我深刻理解呀~~
3年没接触电脑,我都落伍到这样了!
 
正是要学习的,前来听课。
 
后退
顶部