Delphi Hook Library做了一点小更新

http://www.raysoftware.cn/?p=357

1.原来的HOOK库,当遇到函数先被别人HOOK了,会无视对方的钩子,造成函数出问题.
现在加入了处理,如果想要HOOK的函数先被别人HOOK了,那么就去HOOK对方的函数.
但是要记得UnHOOK的时候也最好在对方去掉HOOK之前做.

2.原来的Hook库代码是通过返回值返回原始函数地址的,导致HOOK函数内部使用的虚拟内存和线程状态设置函数不能被HOOK.现在修正了.具体请看新增的函数声明

最新代码请到谷歌代码上去拉取

http://code.google.com/p/delphi-hook-library/

此条目发表在Delphi分类目录。将固定链接加入收藏夹。

Delphi Hook Library做了一点小更新》有 29 条评论

  1. 红鱼儿说:

    拜读了!

  2. 小神说:

    在写一个打印的相关程序,需要hook到打印服务 spoolsv.exe。需要替换它的SPOOLSS.DLL中的一个函数,用你的控件包可以吗?
    钩子程序调试真让人晕,IAT老是算不对。

    @OldStartDocPrinterW:=Hookproc(‘SPOOLSS.dll’, ‘StartDocPrinterW’, @NewStartDocPrinterW) 这样行不行?

  3. zjc说:

    楼主牛逼,共享精神挺好。

  4. 匿名说:

    大侠威武,帮我解决了不少难题。已经放弃使用MHook了

  5. Aperson说:

    想问下 如果是hook函数的某一段,比如前10个字节~ 这样如何做好堆栈的平衡~ 如果加上这一些 就比较完美了~

    类似
    push xx
    push xx
    call xxx HOOK这里的话 那么 这个时候堆栈不平衡 直接崩溃~

  6. RealGuest说:

    感谢分享~~
    不过貌似Win8.1 64位下HOOK不到Winnet.dll里的函数
    但我也没做详细的测试,所以还不太确定是大侠HOOK方法的问题还是其他问题

  7. LoveDelphi说:

    delphi xe2编译不通过,这行高亮:
    function HookProcInModule(DLLName, FuncName: PChar; NewFunc: Pointer): Pointer;
    overload;
    提示的是:
    [DCC Error] HookUtils.pas(40): E2065 Unsatisfied forward or external declaration: ‘HookProcInModule’

  8. LoveDelphi说:

    貌似知道了,282行的函数名改下就行了是不

  9. -=XARA=-说:

    谢谢分享,武大能不能修正是SVN的目录啊,你的多个开源项目都是SVNRoot/Trunk/Trunk这样的.不应该直接就是SVNRoot/Trunk吗?

  10. 匿名说:

    http://code.google.com/p/delphi-hook-library/

    下不下来啊. 找不到下载按钮啊 受伤

    我是想 hook win7 send recv 总是不成功.

    请老大 指点 指点 qq 964489899 求大神

  11. 匿名说:

    你这个hook库可以hook类成员函数吗?

  12. 小天说:

    求一份 代码,谷歌上 ,被墙了,死活 下载不下来。
    感谢您的一直分享
    838885701@qq.com

  13. whshizy说:

    找不到下载按钮,麻烦大侠发一份到邮件,谢谢
    http://code.google.com/p/delphi-hook-library/

  14. cxg说:

    请教:为什么不能Hook kernel32.Dll的TerminateProcess
    if not Assigned(OldTerminateProcess) then
    @OldTerminateProcess:=HookProc(kernel32,PChar(‘TerminateProcess’),@NewTerminateProcess);

  15. qyhyu说:

    通过代理上的Google看不到下载啊,大侠能否发份邮件?

  16. 小洪说:

    [DCC Error] UnitTest.pas(93): E2250 There is no overloaded version of ‘HookProc’ that can be called with these arguments
    GOOGLE下载的DOEM居然无法通过

  17. 王自如说:

    老师,下载地址已经打不开了,能否给个网盘地址?
    一直在关注您的博客

  18. wawt说:

    老师,怎么做个X64位下的全局DLL呢?我做了个,但只有调用这个DLL的程序会被拦截,其它程序不会?
    注,WIN7 X64,DLL和应用全部编译成X64的

  19. 说:

    大神,下载不了,求发邮箱,谢谢!noime@qq.com

  20. 说:

    武哥,非常感谢您提供的源码,有个问题想请教您下,使用hook时,如果是网页里面的flash播放器发起的函数,请无法hook到,应该如何解决,请教您下,谢谢!

  21. 老伙计说:

    老大,代码无法下载,能否麻烦您给发邮箱一份,谢谢!

  22. 狼狼说:

    正需要hook的代码,网上找的例子只能搞32位的,64位的hook不到,能否麻烦您给发邮箱一份,谢谢!

张守伟进行回复 取消回复

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用JavaScript