开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 23241|回复: 333
收起左侧

[易语言纯源码] x64进程远程hook,x64_远程调用函数,源码更新V2.3:2021/5/5

    [复制链接]
发表于 2021-5-6 09:06:33 | 显示全部楼层 |阅读模式   浙江省绍兴市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
源码为下方连接帖子后续更新内容:
浅谈64位进程远程hook技术:(本帖介绍了 通讯模式为消息模式
采用JMP长转移时  易语言如何在X64进程中构建远程hook )https://bbs.125.la/forum.php?mod=viewthread&tid=14666356&extra=
源码是以WoW64开源模块的基础上封装的其他的功能,不管您是转载还是使用请保留版权,源码在精益论坛免费发布只作为技术交流本人未获利,请不要用于非法途径,否则造成的任何后果与本人无关。

源码可直接调试启动,编译时更改下模式即可编译为模块
在此要强调一个事情,我们封装这个hook源码并开源,初衷并不是让朋友去搞模拟器封包,只是为了更好弥补易语言对x64进程hook操作方面的资源
还有很多朋友经常来找我,加些其他封包API进来啊,某某按钮操作不方便啊,我想说的是源码自带实列只是为了让朋友们知道如何应用hook,我们开源的不是封包工具源码,我们只是种菜的不是炒菜的


历史更新如下:
wow64_hook 源码历史更新
---------------------------------------------------------------
2021/5/5  模块源码2.3 更新:
1: hook通讯模式由消息模式 改为 线程模式,线程模式相比消息模式更自由,不存在堵塞的可能性,安装时没有了窗口句柄参数
2:远程hook64指令_安装()中 hook长度 参数 现在支持最小 5字节hook,且支持了不在模块区域的可执行代码中hook
3  回调接口 现在传回4个参数 必须为 可空 参考 分别是 control_寄存器;自定义回调值;目标进程句柄值;触发Hook线程ID,写的时候参考源码实例
4:新增 子程序 x64_申请指定内存()
     该接口可以在目标进程指定地址处分配内存 如果该地址不可申请会在附近2G偏移内寻找一处申请 失败返回0 成功返回指针
5:修复hook过程中因自身进程意外关闭而导致目标进程卡住或崩溃的问题
6:修复 远程hook64指令_全部卸载()在调试模式调用时出现的系统报告异常问题
7:实例中 对 call_send()特殊处理了一下,这个调用可以根据设置是否绕过hook位置,如果参数四为真不会触发send回调
8:实例中 简单增加了几个子程序,封包寻找替换规则() call_API() call_WSASend()这几个给予参考,未用于实例应用,WSASend没有找到目标进程所以未经测试
9:提示:X64_取进程函数入口()这个调用返回是比较慢的,因为要在所有的DLL中寻找出对应的DLL然后再去找对应的函数,所以此接口在循环中慎用。正确的方式是:因为系统API接口 在每个进程的地址是一样的,所以只需取得一次保存地址给后续调用使用即可
10:实例中 多进程hook由原先的菜单方式 改为 高级表格 选择框快速操作
---------------------------------------------------------------
2021/4/16  模块源码1.8.7 更新:
1:重新架构了穿插汇编指令,优化了一些代码和流程
2:在 远程hook64指令_安装()时新增可回调的3个自定义参数值,这些值在回调接口的[寄存器64.自定义值1;2;3]里可获取到该值
3:修复 寻找无效8字节指令地址()中一个重要BUG,此BUG极大可能导致之前版本在 远程hook64指令_安装()时即导致目标程序崩溃的现象
建议使用者全部更新到此版本............
---------------------------------------------------------------
2021/4/15  模块源码1.8.6 更新:
1:新增3组函数:X64_取模块代码区起始地址(),X64_取模块入口地址(),X64_取模块代码执行段大小()
2:自定义类型:模块信息64,的成员构成新增改动为 以下,在枚举模块中亦可直接取得
成员 模块基址, 长整数型, , , 模块映像的内存地址 也称为句柄
成员 模块长度, 整数型, , , 整个模块文件长度
成员 模块入口, 长整数型, , , 模块入口函数地址 如 Mian/DllMain
成员 模块代码入口, 长整数型, , , 模块代码执行区起始地址
成员 模块代码长度, 整数型, , , 模块代码执行区的长度
成员 模块名称, 文本型, , , 文件名称
成员 模块路径, 文本型, , , 完整的路径地址
3:新消息接口()远程返回_调用回调子程序()优化了代码严谨性,减少hook目标崩溃的可能性
4:寻找无效8字节指令地址()由之前的全模块查找 改动为 在模块代码执行区查找
5:改写模块实列为 一对多的模式
6:模块实列操作控件的方式由变量改为堆内存,避免引起多线程自身崩溃
7:模块实列 对 recv,recvfrom两个函数的hook方式由原先 在回调内 暂停recv-->recv_call-->恢复recv,的方式改为经过特殊改造的 recv_call,这个call经过特殊处理,在recv回调函数内调用,用来取得真实长度,这个调用会绕过hook位置,所以不会触发 recv回调,详见源码
8:修改了一些已知可能出现的问题
---------------------------------------------------------------
2021/4/12 模块源码 v1.8.2更新
1:修复 x64_远调用函数()在易语言主线程调用时造成消息无法回调,导致易语言主线程窗口卡死的问题。
     感谢楼下易友发现的BUG,已经第一时间更新
---------------------------------------------------------------
2021/4/12 模块源码 v1.8.1更新
1:修复 hook全部卸载时的流程写法的一个错误,由于句柄的提前关闭导致多个hook点卸载不干净的问题
2:改写了消息回调时线程传参的代码优化,优化了其他一些小问题
3:  鉴于很多朋友需要,改写了模块自带实列,对TCP,UDP的两组封包函数做了hook实列写法
4:列子中同样增加对x64_远调用函数()的应用写了几个列子,如使用套接字取得本地或远端IP端口API调用的的应用实列
5:本hook模块不支持非模块内存区hook,如申请的动态分配页等,不是不能支持,只是觉得没有任何意义,对这方面有需求的,自行改写模块源码使用
提醒:hook回调函数中尽量减少耗时代码,时间越长返回越慢,回调中谨慎操作控件,如必须要用到可参考源码中实列写法采用线程操作
---------------------------------------------------------------
2021/3/1   模块源码v1.6更新:
1:修复  x64_远程调用函数()命令,在没有提供 寄存器 参数时,没有返回值的BUG。
---------------------------------------------------------------
2021/2/28 模块源码v1.5更新:
一:修复win7 64位系统下枚举模块 出现部分模块长度出现负数的问题,从而导致部分win7用户不能使用

二:强化 远程hook64指令_安装 的稳定性:
       1,穿插代码中增加对标志位的保护,避免hook位置长度下一条指令为跳转时产生跳转错乱的问题,强化了hook任意位置的定位

       2,因为穿插代码中会调用API函数,而64位汇编必须遵守栈指针16字节对齐,故对穿插代码进行栈指针16字节对齐,增强稳定性
       3,hook指令安装支持长度由6-127字节 变动 为 6-119字节,原因么没必要说了,代码优化造成的,稍微少了一点无所谓了
       4,对模块回调进行了适当优化处理,增强稳定性
三:应支持的朋友需要故增加 x64_远程调用函数()命令,易语言可以直接远call64进程,且无需写汇编代码或机器码指令,支持15个参数,支持返回值,支持16个通用寄存器全部取得返回值
      该功能调用即16字节栈对齐,不要用户管堆栈,代码内部构成,远线程执行,你只需要知道call有几个参数,需要什么寄存器,对应提供即可。
四:有朋友说原模块x64英文看了烦,那好吧就给改成了中文标识,弄得我自己也不习惯
五:源码内列子改了改,可以自己看,需要注意的是模块注释的很详细,使用前最好看一看,尤其是hook回调接口的写法和安装的写法最好按照模块列子中的写法来,除非你能把64hook模块组看懂一遍,对于一些对本模块一知半解的朋友请不要乱改乱发,这个模块我会继续增强的,只是工作原因时间有限,只能一点一点来
--------------------------------------------------------------------

支持最小5字节hook,hook采用JMP转移
支持hook任意指令处,支持获得当时16个通用寄存器+一个rip寄存器,的读取及修改
回调接口返回值支持是否执行Hook掉的原指令(0=执行,>0不执行)
支持任意堆栈操作,通过rsp
支持任意rip转移(支持大于2G长转移),通过rip
支持一个易语言程序同时控制多个64位目标进程
支持多个hook点同时回调至一个回调接口内
且所有回调尽阶独立,不论hook位置的复杂经过性皆不影响回调数据
每次hook的经过都会等到回调返回,假如回调接口未返回,则hook当时的经过为挂起等待状态

灵活多变的自由控制,可达到几乎所有的要求



QQ图片20210506080047.png
QQ图片20210506080200.png

源码回复可见,不喜勿喷
wow64_hook_2.3模块源码.e (447.66 KB, 下载次数: 1238)

评分

参与人数 20好评 +19 精币 +46 收起 理由
mz135135 + 1 + 2 开源精神必须支持~
MrSimple + 1 + 2 支持开源~!感谢分享
tcxl000 + 1 + 2 支持开源~!感谢分享。楼主厉害了!
猪滴寳貝哝 + 1 + 1 精华帖,很给力!
wgleiz + 1 + 2 能发个32的远程hook例子就更好了 小白慢慢学
易语言资源网 + 1 + 5 支持开源~!感谢分享
734108950 + 1 + 2 感谢发布原创作品,一定好好学习,天天向上
Bszk + 1 + 3 感谢分享,很给力!~
llxx123 + 1 + 2 支持开源~!感谢分享
皮皮驴 + 1 + 2 感谢分享,很给力!~
static101 + 1 + 2 对 HOOK 64位 易语言作出了贡献
e小鸟168 + 1 + 2 越来越牛逼,种菜到炒菜到上菜,一揽子搞定了啊
357341051 + 2 支持开源~!感谢分享
井岛叫唤。 + 1 + 3 新技能已get√
我們還太嫩 + 1 + 2 感谢分享,很给力!~
勾栏听曲 + 1 + 2 支持开源~!感谢分享
inat + 1 + 2 支持开源~!感谢分享
呵呵仙 + 1 + 3 好强大,下载学习下!!
xiaocao65 + 1 + 2 新技能已get√
Mr.Zhang + 1 + 3 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 9 天

发表于 2024-3-17 02:56:16 | 显示全部楼层   河南省郑州市
正需要呀
回复 支持 反对

使用道具 举报

发表于 2023-8-14 10:01:40 | 显示全部楼层   广东省珠海市
一个字   绝
回复 支持 反对

使用道具 举报

签到天数: 25 天

发表于 2023-2-9 13:04:21 | 显示全部楼层   江西省南昌市
这么牛逼么
回复 支持 反对

使用道具 举报

签到天数: 25 天

发表于 2023-2-9 13:03:40 | 显示全部楼层   江西省南昌市
非常感谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2022-12-31 08:40:47 | 显示全部楼层   天津市天津市
这么牛逼么
回复 支持 反对

使用道具 举报

发表于 2022-12-20 03:07:10 | 显示全部楼层   辽宁省辽阳市
11155555555555555555555555555555555555555555555
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)

签到天数: 29 天

发表于 2022-11-22 10:00:05 | 显示全部楼层   湖南省郴州市
666666666666666
回复 支持 反对

使用道具 举报

发表于 2022-11-18 09:02:34 | 显示全部楼层   广东省云浮市
对 HOOK 64位 易语言作出了贡献
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 9 天

发表于 2022-11-8 03:43:04 | 显示全部楼层   河南省驻马店市
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2022-10-11 22:33:59 | 显示全部楼层   四川省成都市
呃,试了下,为啥我抓不到模拟器的包啊。用的雷电模拟器,有没有大佬解答一下?
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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