开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 17053|回复: 79
收起左侧

[易语言支持库] 易语言的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, 下载次数: 74)

评分

参与人数 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 支持开源~!感谢分享

查看全部评分

结帖率:67% (2/3)

签到天数: 11 天

发表于 2024-5-6 20:35:18 | 显示全部楼层   内蒙古自治区乌兰察布市
同学麻烦让让 发表于 2024-5-6 18:09
应该是画红圈那里错了,易语言结构体每个成员不满4个字节的会扩大到4个字节,和实际的sockaddr结构体不 ...

按照您的方案改了后可以了!!!

之前是直接移植的魔鬼作坊里的写法~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

 楼主| 发表于 2024-5-6 18:09:20 | 显示全部楼层   广东省深圳市
临安 发表于 2024-5-6 15:32
嗯嗯,还有一个就是hook connect这个有问题,hook send 和hook recv没问题。

153157vug1ajg1c4q0pqun.jpg
应该是画红圈那里错了,易语言结构体每个成员不满4个字节的会扩大到4个字节,和实际的sockaddr结构体不同了,这个参数这里改下就行了,“地址信息”这里的IP和端口修改后再用RTLmovmemroy把修改后的“地址信息”写到参数“名称结构”里去,然后调用子程序那里的参数填“名称结构”不要填“地址信息”
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 11 天

发表于 2024-5-6 15:32:26 | 显示全部楼层   内蒙古自治区乌兰察布市
同学麻烦让让 发表于 2024-5-6 13:21
是有这个问题,在钩子函数里自己恢复自己有时候会这样,单独一个函数里恢复钩子就好,懒得换新版DETOURS ...

嗯嗯,还有一个就是hook connect这个有问题,hook send 和hook recv没问题。
3.jpg 1.jpg
2.jpg
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

 楼主| 发表于 2024-5-6 13:21:34 | 显示全部楼层   广东省深圳市
临安 发表于 2024-5-6 01:37
有bug 用的测试那个源码,有时候卸载不掉

是有这个问题,在钩子函数里自己恢复自己有时候会这样,单独一个函数里恢复钩子就好,懒得换新版DETOURS了
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 11 天

发表于 2024-5-6 01:37:37 | 显示全部楼层   内蒙古自治区乌兰察布市
同学麻烦让让 发表于 2022-12-4 10:17
修改BUG,支持HOOK回调里卸载HOOK

有bug 用的测试那个源码,有时候卸载不掉
回复 支持 反对

使用道具 举报

发表于 2024-4-3 10:49:55 | 显示全部楼层   山东省潍坊市
新版在哪个楼?
回复 支持 反对

使用道具 举报

发表于 2024-4-3 10:49:31 | 显示全部楼层   山东省潍坊市
好东西需要多学学
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 2024-3-22 09:33:47 | 显示全部楼层   广西壮族自治区南宁市
暂时用不到,先标记一下
回复 支持 反对

使用道具 举报

结帖率:33% (2/6)

签到天数: 18 天

发表于 2024-3-21 13:45:44 | 显示全部楼层   广东省湛江市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 12 天

发表于 2024-1-27 11:45:24 | 显示全部楼层   河北省石家庄市
支持一下
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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