精易论坛

标题: x64进程远程hook,x64_远程调用函数,源码更新V2.3:2021/5/5 [打印本页]

作者: 树上的鱼儿    时间: 2021-5-6 09:06
标题: x64进程远程hook,x64_远程调用函数,源码更新V2.3:2021/5/5
源码为下方连接帖子后续更新内容:
浅谈64位进程远程hook技术:(本帖介绍了 通讯模式为消息模式
采用JMP长转移时  易语言如何在X64进程中构建远程hook )https://125.confly.eu.org/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当时的经过为挂起等待状态

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






源码回复可见,不喜勿喷
[hide=d9999] wow64_hook_2.3模块源码.e (447.66 KB, 下载次数: 1335) [/hide]




作者: zilongv5    时间: 2021-5-6 09:10
我是一楼。目测要火
作者: 不苦小和尚    时间: 2021-5-6 09:11
太感谢了。小鱼儿说道做到,真是好
作者: Mr.Zhang    时间: 2021-5-6 09:13
支持开源!
作者: feiyu2005    时间: 2021-5-6 09:13
多谢分享!64位的操作值得收藏学习。
作者: BinByte    时间: 2021-5-6 09:14
下载学习,感谢大佬分享
作者: qq85668684    时间: 2021-5-6 09:14
下载学习,感谢大佬分享
作者: ledaja    时间: 2021-5-6 09:15
楼主,辛苦了,谢谢分享
作者: prospect    时间: 2021-5-6 09:17
为了楼主的大无谓精神而来点赞~!
作者: ssxpvicp    时间: 2021-5-6 09:29
牛B 支持开源~!感谢分享
作者: yj1998    时间: 2021-5-6 09:35
。。。。。。。
作者: 呵呵仙    时间: 2021-5-6 09:39
好强大,下载学习下!!
作者: 夜的静night    时间: 2021-5-6 09:40
66666 厉害了。。。
作者: qq793359277    时间: 2021-5-6 09:41
前排                                                   
作者: cf2006a    时间: 2021-5-6 09:44
好东西@辛苦了!
作者: 风云思星    时间: 2021-5-6 09:51
淡定,淡定,淡定……
作者: qq1529195115    时间: 2021-5-6 09:54
x64进程远程hook模块
作者: 1722121630    时间: 2021-5-6 09:56
x64进程远程hook模块
作者: 无名尸    时间: 2021-5-6 09:57
回复个毛线
作者: 指尖流淌    时间: 2021-5-6 09:58
支持开源~!感谢分享
作者: 喵帕斯和艾希    时间: 2021-5-6 10:20

作者: kamylee1    时间: 2021-5-6 10:21
源码回复可见,不喜勿喷
作者: fengshangren    时间: 2021-5-6 10:23
看看改了什么
作者: 13145313103    时间: 2021-5-6 10:23
66666666666666666
作者: 相遇11    时间: 2021-5-6 10:24
谢谢大佬分享
作者: inat    时间: 2021-5-6 10:28
感谢分享,好像可以把X86的也集成进去更方便点..
作者: ゞωǒ天堂牧心    时间: 2021-5-6 10:42
线程模式相比消息模式更自由
作者: 無优    时间: 2021-5-6 10:43
6666666666666666666666
作者: 515889127    时间: 2021-5-6 10:55
感谢分享。。。。
作者: 网络注册网员    时间: 2021-5-6 10:57
支持开源
作者: wang349041479    时间: 2021-5-6 10:58
6666666666666666666666666666666666
作者: gaoqing    时间: 2021-5-6 11:03
谢谢分享!
作者: shentong    时间: 2021-5-6 11:03
看看看看看看看看看看看看看看看
作者: 揰掵佲    时间: 2021-5-6 11:04
感谢分享,虽然已经写出来了
作者: 久别i    时间: 2021-5-6 11:19
支持开源~!感谢分享
作者: jiang910615    时间: 2021-5-6 11:20
学习学习
作者: a897887419    时间: 2021-5-6 11:42
源码回复可见,不喜勿喷
作者: good123    时间: 2021-5-6 11:52
大佬
作者: 125148201    时间: 2021-5-6 11:55
我看看好东西哦
作者: 357341051    时间: 2021-5-6 11:58
群主威武霸气
作者: wo2010000n    时间: 2021-5-6 12:20
种菜的,我来帮你顶一个~~
作者: 萧然    时间: 2021-5-6 12:26
6666,必须支持!!!!
作者: sdf231    时间: 2021-5-6 12:33
源码回复可见
作者: 天罚☆    时间: 2021-5-6 12:34
感谢楼主的发布
作者: snak2020    时间: 2021-5-6 12:37
谢谢分享,学习
作者: 快捷导航    时间: 2021-5-6 12:45
感谢感谢感谢感谢感谢感谢感谢感谢感谢
作者: yxl2008    时间: 2021-5-6 12:48
感谢分享,下载学习!!!
作者: liuxin5163    时间: 2021-5-6 12:50
支持开源~!感谢分享
作者: WuyueKing    时间: 2021-5-6 13:09
我丢  感谢大佬分享!!
作者: Fate    时间: 2021-5-6 13:17
感谢分享
作者: 软件编程王    时间: 2021-5-6 13:21
感谢大佬分享
作者: futiem    时间: 2021-5-6 13:21
灵活多变的自由控制,可达到几乎所有的要求
作者: 315215    时间: 2021-5-6 13:29
线程好多了,窗消息如果没返回就卡窗口
作者: oycs429    时间: 2021-5-6 13:47
楼主辛苦了,谢谢楼主,感谢楼主分享,楼主好人一生平安!!!
作者: xiaocao65    时间: 2021-5-6 13:48
感谢感谢感谢感谢感谢感谢感谢感谢感谢

作者: 疯狂的八爪鱼    时间: 2021-5-6 13:53
支持任意堆栈操作,通过rsp
作者: wjswzj0    时间: 2021-5-6 14:05
感谢分享,很给力!~
作者: Frieza    时间: 2021-5-6 14:25
谢谢分享~~
作者: 夜莫离    时间: 2021-5-6 14:41
66666666666666666666666666666666
作者: 精易⌒小杜    时间: 2021-5-6 15:14
支持开源~!感谢分享
作者: 枕风宿雪多年    时间: 2021-5-6 15:24
牛逼牛逼
作者: sinewtec    时间: 2021-5-6 15:29
感谢分享,很给力!~
作者: a1065809672    时间: 2021-5-6 16:00
支持开源~!感谢分享
作者: 佺oO    时间: 2021-5-6 16:34
感谢分享
作者: w80561307    时间: 2021-5-6 16:52
下载学习一下啊
作者: 爱的凌迟    时间: 2021-5-6 17:38
支持开源 感谢分享
作者: 2296196057    时间: 2021-5-6 17:40
11111111111111111111111111
作者: z2651932707    时间: 2021-5-6 17:47
x64进程远程hook,x64_远程调用函数,源码更新V2.3:2021/5/5 [修改]
作者: 2296196057    时间: 2021-5-6 17:56
不清楚我这边编译成模块以后打开失败  导入不进去

作者: qw1417    时间: 2021-5-6 18:22
对 HOOK 64位 数据作出了贡献
作者: faith0    时间: 2021-5-6 18:23

感谢分享
作者: jy862792    时间: 2021-5-6 18:26
感谢分享,很给力!~
作者: 齐恩    时间: 2021-5-6 18:36
牛啊!非常感谢楼主了!填补了一大块空白
作者: ‖陌颜の小溪"    时间: 2021-5-6 19:04
6666666666666666666666
作者: 小花匠    时间: 2021-5-6 19:05
NB啊




作者: 不飞    时间: 2021-5-6 19:31
666666666666666666
作者: xj1314520    时间: 2021-5-6 19:32
支持一下。。。。。。。
作者: a3960382663    时间: 2021-5-6 19:49

开源支持一下
作者: 1175699306    时间: 2021-5-6 19:55
源码回复可见,不喜勿喷
作者: 787327835    时间: 2021-5-6 20:11
支持开源~!感谢分享
作者: muye84    时间: 2021-5-6 20:15
感谢分享
作者: 2446789312    时间: 2021-5-6 20:20

作者: 啊平    时间: 2021-5-6 20:24

作者: zxaf2012    时间: 2021-5-6 20:37
看一下 流露李
作者: f123456123    时间: 2021-5-6 21:03
x64_远程调用函数,源码更新V2.3:2021/5/5 [
作者: ccfftt    时间: 2021-5-6 21:04
对 HOOK 64位 数据作出了贡献
作者: moninla    时间: 2021-5-6 21:16
大佬是真滴强
作者: FallingSnow    时间: 2021-5-6 21:16
很厉害,学习了
作者: ccfftt    时间: 2021-5-6 21:18
请求可以解密吗 可以加个加解密吗
作者: ppszxc    时间: 2021-5-6 21:43
下载来学习一下
作者: qq444255022    时间: 2021-5-6 21:55

下载来学习一下
作者: 434808037    时间: 2021-5-6 22:04
来学习学习
作者: huaidan2015    时间: 2021-5-6 22:16
支持开源~!感谢分享
作者: heiyi    时间: 2021-5-6 22:33
感谢分享,下来研究下
作者: 百折    时间: 2021-5-6 23:09
支持开源~!感谢分享
作者: incwin    时间: 2021-5-6 23:38
大佬是真滴强
作者: menghan    时间: 2021-5-6 23:46
        支持开源~!感谢分享
作者: kagari    时间: 2021-5-7 00:34
对 HOOK 64位 数据作出了贡献
作者: xslyhk    时间: 2021-5-7 00:55
谢谢分享哦
作者: 可爱de小胖墩    时间: 2021-5-7 01:31
谢谢分享哦




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4