开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 21062|回复: 84
打印 上一主题 下一主题
收起左侧

[易语言支持库] 易语言的detours钩子支持库来啦

[复制链接]

结帖率:100% (1/1)
跳转到指定楼层
楼主
发表于 2021-10-22 21:52:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   广东省深圳市
用过VC的人我想应该大部分都听说过甚至用过大名鼎鼎的Detours库了吧,和易语言各个模块里的APIHOOK类相似,但是Detours功能肯定是秒杀这些模块的,长久以来易语言要进行API的HOOK都是用的下面这一套:改写函数头前5个字节跳到回调函数里,回调函数里进行一系列处理后如果还要再调用原来的API函数就要恢复函数头的前5个字节再调用,最后为了继续HOOK就要再次改写函数头5个字节继续跳到回调函数里(就是大家习惯写的“APIHOOK.安装()  APIHOOK.暂停()  APIHOOK.继续()”),这样一套下来效率极低,如果是调用频繁的函数,效率感人,例如网络游戏调用发包的send函数,一秒之内可能就要调用几十次,用以前常见的HOOK方式反复改写函数头,效率可想而知。当然这不是最主要的,最主要的是这一套不能用在多线程里啊,这种模式的APIHOOK用在多线程里崩的概率太大了,假如A线程运行到函数头停住,B线程接着运行然后改写了函数头,最后A线程回来继续运行的时候发现老家都被人改了,然后就不知道怎么继续往下运行了,不崩给你看崩给谁看。

因为我现在用VC比较多,所以一直用Detours用的挺好,以前也想过从头开发写一个易语言版的Detours,但是因为要用到反汇编模块,我熟悉的反汇编库是capston和beaengine,但是这样从头写要么带一个反汇编的dll要么带上反汇编的静态库,太累赘了就一直没有写,VC使用时用的是高版本的Detours,不适合改造成易语言的,前两天找了一下找到一个低版本的Detours刚好用来改造成易语言版本的最合适。今天晚上花了3个小时写了易语言的动态库和静态库,太久没写易语言的库生疏了,所以如果有什么BUG在帖子里留言,有时间我会修改,大家告别以前的HOOK方式拥抱这个效率高且支持多线程的库吧。

附件里是易语言动态库和静态库,还有一份测试的源码。各种图我就不放了,我懒。

Edetours.rar (84.28 KB, 下载次数: 102)


补充内容 (2021-10-28 11:10):
楼下有新版,修改了一个BUG

评分

参与人数 8好评 +7 精币 +16 收起 理由
网络注册会员 + 1 + 1 YYDS~!
bianyuan456 + 3 感谢你给易语言造轮子!
小生帝王 + 1 + 2 YYDS~!
quary + 1 + 2 YYDS~!
FallingSnow + 1 + 3 感谢分享,很给力!~
Dakk + 1 + 2 感谢发布原创作品,一定好好学习,天天向上
muye84 + 1 + 1 新技能已get√
794229345 + 1 + 2 支持开源~!感谢分享

查看全部评分

本帖被以下淘专辑推荐:

  • · 123321|主题: 69, 订阅: 1

结帖率:100% (1/1)

签到天数: 6 天

来自 2楼
 楼主| 发表于 2024-9-6 21:07:21 | 只看该作者   江苏省苏州市
有空研究了下为什么在钩子函数里卸载HOOK失败,是易语言的问题,更新了在钩子函数里卸载HOOK的例程
Edetours Hook测试.rar (2.27 KB, 下载次数: 33)
回复 支持 反对

使用道具 举报

板凳
发表于 2021-10-22 21:55:21 | 只看该作者   福建省厦门市
回复 支持 反对

使用道具 举报

结帖率:60% (15/25)

签到天数: 5 天

地板
发表于 2021-10-22 22:01:54 | 只看该作者   江苏省苏州市
谢谢分享,不错不错
回复 支持 反对

使用道具 举报

地下
发表于 2021-10-22 22:44:03 | 只看该作者   四川省成都市
本帖最后由 wd2662269 于 2021-10-22 22:51 编辑

不对远程64位进程支持 就没啥用了现在 同类型的太多了

点评

看样子你都没看懂,不怪你   广东省深圳市  发表于 2021-10-28 11:52
回复 支持 反对

使用道具 举报

结帖率:96% (50/52)

签到天数: 5 天

6
发表于 2021-10-22 22:57:18 | 只看该作者   湖南省长沙市
支持开源支持开源支持开源
回复 支持 反对

使用道具 举报

7
发表于 2021-10-22 23:07:41 | 只看该作者   云南省昆明市
感谢分享 看看收藏了
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)
8
发表于 2021-10-22 23:12:12 | 只看该作者   广东省深圳市
感谢分享 看看收藏了
回复 支持 反对

使用道具 举报

签到天数: 8 天

9
发表于 2021-10-22 23:37:43 | 只看该作者   四川省成都市
感谢分享 看看收藏了
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)

签到天数: 6 天

10
发表于 2021-10-23 00:51:19 | 只看该作者   河北省秦皇岛市
EasyHook不香吗
回复 支持 反对

使用道具 举报

结帖率:63% (5/8)
11
发表于 2021-10-23 00:53:46 | 只看该作者   内蒙古自治区呼和浩特市
膜拜大佬!大佬牛B!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表