|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
源码为下方连接帖子后续更新内容:
浅谈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当时的经过为挂起等待状态
灵活多变的自由控制,可达到几乎所有的要求
源码回复可见,不喜勿喷
wow64_hook_2.3模块源码.e
(447.66 KB, 下载次数: 1297)
|
评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 鱼木|主题: 1560, 订阅: 152
- · 好帖|主题: 1239, 订阅: 44
- · 可能会用到|主题: 187, 订阅: 8
|