Mhook
💻
Mhook
软件
软件描述
如果你涉足这一领域,就会知道微软研究院的 Detours 在 API 挂钩方面几乎树立了行业标准。那么我们先快速做个对比吧?
官方网站
访问软件的官方网站了解更多信息
www.codefromthe70s.org
安全链接HTTPS
什么是 Mhook?
如果你涉足这一领域,就会知道微软研究院的Detours在API钩子方面几乎已成为行业标准。那么我们先快速做个对比吧。
DETOURS VS. MHOOK
Detours采用非商业许可免费提供,但仅支持x86平台。其商业授权也包含x64支持,但需签署NDA后才能查看具体授权条款。
Mhook以MIT许可证免费分发,支持x86和x64。
Detours官方不支持向运行中的应用程序附加钩子。当然你可以自行尝试——但如果因此导致随机崩溃,只能自担风险。
Mhook的设计目标就是能够在运行时设置和移除钩子——这正是实际应用中的真实需求。它尽力避免覆盖可能被其他线程执行的代码。
Detours支持事务式钩子设置与移除:可一次性设置多个钩子,要么全部成功,要么全部回滚。若任一钩子无法设置,则所有更改将被撤销。Mhook不支持此功能。
最后,Mhook在管理其使用的跳板内存时较为懒惰。Detours按需分配内存块,并尽可能在该数据区存放更多跳板。而Mhook则为每个钩子单独调用一次VirtualAlloc。每个钩子所需存储空间不足100字节,因此非常浪费——每次调用VirtualAlloc都会从进程虚拟地址空间中占用64KB(实际分配为单个页面,同样低效)。不过,这种情况通常影响不大,除非在一个程序中设置大量钩子。此外,这个问题也极易修复。
