精易论坛
标题:
NB模块v5.6修复内存泄露
[打印本页]
作者:
抱抱你
时间:
5 天前
标题:
NB模块v5.6修复内存泄露
本帖最后由 抱抱你 于 2026-7-17 13:42 编辑
NB模块 v5.6 新超级Hook 最终修复说明
一、修复目的
本次修复主要针对“新超级Hook”长期运行后可能出现的以下问题:
1. 远程内存及进程句柄持续泄漏;
2. Hook线程句柄未正确保存或关闭;
3. 销毁Hook时仍有回调正在执行,导致微信进程崩溃;
4. 远程执行代码尚未结束就释放代码内存;
5. Hook创建失败时,已申请的资源没有完整回收;
6. HookEx提前关闭进程句柄,导致后续暂停、恢复或销毁失败;
7. 64位Hook远程线程方式的栈空间恢复不匹配;
8. 回调参数使用特殊“通用型”,重新粘贴源码后无法生成模块。
二、需要覆盖的源码文件
完整修复涉及以下四个NB模块源码文件:
1. 代码\HOOK\类_HOOK_EX.class.e.txt
2. 代码\HOOK\类_新超级Hook.class.e.txt
3. 代码\HOOK\新超级Hook子程序.static.e.txt
4. 自定义类型.e.txt
如果此前已经覆盖过完整修复源码,最终兼容调整只需要再次覆盖:
代码\HOOK\类_新超级Hook.class.e.txt
三、新超级Hook主要修复内容
1. 进程句柄所有权
为每条Hook记录增加“拥有进程句柄”标记。
由“开始Hook”内部打开的进程句柄,在Hook销毁时由本类负责关闭。
由调用者传入“开始Hook2”的进程句柄,默认不由本类擅自关闭。
这样可以避免句柄永久泄漏,也不会误关调用者仍在使用的句柄。
2. Hook创建失败清理
创建Hook过程中,如果出现以下任意失败:
- 远程代码内存申请失败;
- 寄存器保存区申请失败;
- 回调地址无效;
- 消息窗口或消息编号创建失败;
- 远程句柄复制失败;
- 跳板代码写入失败;
- 原地址跳转写入失败;
会按实际申请情况回收远程代码区、寄存器区、复制句柄和本地进程句柄。
3. 远程线程句柄修复
远程线程创建后会保存真实线程句柄。
同步方式先等待线程真正结束,再关闭线程句柄。
异步方式不再把错误寄存器值当作线程句柄使用。
避免线程句柄不断累积,以及错误关闭无效句柄。
4. 64位栈平衡修复
64位远程线程回调代码统一按照实际申请的栈空间恢复RSP。
修复了申请空间和释放空间不一致的问题,避免长期运行后出现栈破坏、随机异常或微信崩溃。
5. 远程复制句柄回收
远程线程方式需要把当前进程句柄复制到目标进程。
修复后会记录目标进程中的复制句柄,并在销毁Hook时通过DuplicateHandle配合DUPLICATE_CLOSE_SOURCE关闭远程源句柄。
避免每次安装Hook都在微信进程中遗留一个无法回收的句柄。
6. 安全销毁Hook
销毁顺序调整为:
1)暂停Hook,恢复原始代码;
2)等待已经进入回调的调用退出;
3)确认没有活动回调后释放远程跳板代码;
4)释放寄存器保存区;
5)关闭目标进程中的复制句柄;
6)按所有权关闭本地进程句柄;
7)清空本条Hook记录。
如果活动回调在限定时间内没有退出,销毁操作返回失败,不强行释放仍在使用的内存。
这样处理的原则是:宁可暂时保留少量资源,也不释放正在执行的代码导致微信崩溃。
7. 子类化窗口过程恢复
新超级Hook使用窗口消息执行本地回调。
修复后会保存原窗口过程,并在卸载最后一个Hook时恢复原窗口过程,清空消息编号和子类化窗口句柄。
避免模块退出后窗口过程仍指向已经失效的模块代码。
8. Hook ID与数组边界检查
暂停Hook、继续Hook、销毁Hook和读取Hook记录前增加ID有效性检查。
无效ID、0、负数或超过记录数组范围的ID会直接返回失败,不再访问越界数组成员。
9. HookEx修复
修复HookEx创建成功后立即关闭进程句柄的问题。
HookEx记录会保留实际进程句柄、原始代码和跳转代码,确保暂停、恢复和销毁操作能够正确执行。
修复创建失败时返回错误Hook ID以及部分远程内存未释放的问题。
10. GetModuleHandle所有权修复
通过GetModuleHandle取得的模块句柄不属于调用者。
删除了对此类句柄调用FreeLibrary的错误逻辑,避免意外减少系统模块引用计数。
四、回调参数兼容调整
原模块的回调接口参数使用特殊“通用型”:
回调接口,通用型,参考
该类型依赖原作者保存在易语言工程内部的“通用型模板”。
重新粘贴或重新建立子程序后,界面虽然可能仍显示“通用型”,但内部类型标识会丢失,生成模块时会提示:
没有找到名为“通用型”的数据类型。
最终版本将以下四个子程序的“回调接口”统一改为易语言原生“子程序指针”:
1. 开始Hook
2. 开始Hook2
3. 开始Hook_本地
4. 开始Hook_64
模块内部使用:
回调子程序 = 到整数 (回调接口)
调用端保持原来的写法:
&微信HOOK_消息
&微信HOOK_事件
调用端不要再使用“到整数(&回调子程序)”,也不要把回调接口改回“通用型”。
五、软件端正确调用示例
HID_消息 = 新超级HOOK.开始Hook(进程ID,Hook地址,{ 5 },&微信HOOK_消息,1,1,,)
HID_事件 = 新超级HOOK.开始Hook(进程ID,Hook地址,{ 5 },&微信HOOK_事件,1,1,,"edi esi")
回调子程序参数格式:
消息Hook:
进程句柄,整数型
寄存器地址,整数型
HookID,整数型
事件Hook:
进程句柄,整数型
寄存器地址,整数型
HookID,整数型
六、推荐的关闭顺序
软件退出或重新连接微信前,应按以下顺序处理:
1. 停止接收新的业务任务;
2. 调用暂停Hook;
3. 调用销毁Hook;
4. 等待正在执行的微信远程调用正常结束;
5. 关闭软件自身创建的线程句柄;
6. 最后销毁窗口和结束进程。
不要在微信远程调用仍在执行时使用“强制结束线程”。
不要在远程线程超时后立即释放其代码内存。
不要直接终止机器人进程代替正常卸载Hook。
七、使用方法
1. 先备份原始NB模块工程;
2. 覆盖本说明第二节列出的源码;
3. 检查四个Hook入口的回调接口类型是否为“子程序指针”;
4. 重新生成NB模块;
5. 在软件工程中删除旧NB模块引用;
6. 重新添加刚生成的修复版NB模块;
7. 确认软件调用端直接传递“&回调子程序”;
8. 重新静态编译软件。
八、验证说明
已完成的静态检查:
1. 修改文件中的如果、判断、循环结构均成对;
2. Hook ID访问增加边界保护;
3. 申请内存的主要失败路径具有对应释放;
4. 进程句柄所有权已区分;
5. 远程线程句柄和远程复制句柄具有关闭路径;
6. 销毁前具有活动回调等待保护;
7. 最终覆盖源码不再依赖特殊“通用型”。
仍需实际运行验证的项目:
1. 当前微信版本对应的Hook偏移是否正确;
2. 连续运行数小时后的私有内存和句柄数量;
3. 高频群消息情况下的响应情况;
4. 关闭软件时微信是否能够保持正常运行;
5. 微信更新后Hook地址和数据结构是否发生变化。
本修复不能保证跨微信版本继续有效。微信版本变化后,Hook偏移、寄存器和消息结构都可能需要重新分析。
九、文件版本说明
本说明对应的最终兼容方案:
- NB回调参数:子程序指针;
- 软件调用方式:直接使用&回调子程序;
- 保留原软件已知可用的消息业务执行路径;
- 包含新超级Hook的内存、句柄、失败清理和安全销毁修复。
不保证完全修复啊 直接发源代码了 你们自己研究 反正我现在不会出现软件假死等问题了
作者:
wowopipi
时间:
5 天前
看看啥清空
作者:
zcc4445
时间:
5 天前
下载试试
作者:
胖子葛格
时间:
5 天前
感谢大神分享~!
作者:
wmv520
时间:
5 天前
感谢大神分享~!
作者:
sinewtec
时间:
5 天前
看看是怎么个事
作者:
yxl2008
时间:
5 天前
谢谢分享!!!!
作者:
你是个人才
时间:
5 天前
感谢分享~!
作者:
鱼雨遇玉羽
时间:
5 天前
感谢分享
作者:
e688
时间:
5 天前
感谢分享
作者:
zs0708
时间:
5 天前
6666666666666
作者:
路麟jh
时间:
5 天前
作者:
fastdao
时间:
5 天前
水电高增+绿色电力+央企
作者:
pjm123
时间:
5 天前
谢谢分享
作者:
wuqingg
时间:
5 天前
看看~~~~~~~
作者:
caoljie
时间:
5 天前
NB模块 v5.6 新超级Hook
作者:
易语言真好玩
时间:
5 天前
作者:
飞鱼软件
时间:
5 天前
感谢分享 赞一个 !
作者:
弱鸡第一步
时间:
5 天前
看看怎么个事
作者:
jiqigouer
时间:
5 天前
谢谢分享了
作者:
风中的玫瑰
时间:
5 天前
感谢分享,收藏
作者:
gaoqing
时间:
5 天前
感谢分享
作者:
383586982
时间:
5 天前
牛牛牛牛牛牛
作者:
不苦小和尚
时间:
5 天前
啥时候梦完美修复
作者:
唐昊
时间:
5 天前
回复查看隐藏内容
作者:
ssxpvicp
时间:
5 天前
感谢分享
作者:
Fate
时间:
5 天前
感谢分享
作者:
mytiger
时间:
5 天前
感谢分享
作者:
我很低调
时间:
5 天前
66666666666666666666
作者:
网络注册络员
时间:
5 天前
感谢分享
作者:
d大大大大大表哥
时间:
5 天前
感谢分享
作者:
夏亿
时间:
5 天前
感谢分享
作者:
hnpjxsw
时间:
5 天前
感谢分享
作者:
1184798949
时间:
5 天前
感谢分享
作者:
ux527
时间:
5 天前
作者:
財財
时间:
5 天前
感谢分享
作者:
sxwsong
时间:
5 天前
感谢分享
作者:
396384183
时间:
5 天前
NB模块v5.6修复内存泄露
作者:
gyzsky
时间:
5 天前
NB模块v5.6修复内存泄露
作者:
woxl
时间:
5 天前
如果您要查看本帖隐藏内容请回复
作者:
一尘不染
时间:
5 天前
如果您要查看本帖隐藏内容请回复
作者:
陈治勤
时间:
4 天前
666666666666666666
作者:
风の殇
时间:
4 天前
6666666666666
作者:
wh1234567
时间:
4 天前
感谢分享,,。。。
作者:
htmasc
时间:
4 天前
感谢分享,,。。。
作者:
1103978562
时间:
4 天前
感谢分享,很给力!~
作者:
year1970
时间:
4 天前
感谢分享
作者:
ll2001
时间:
4 天前
1111111111111111111111111111111111111111111111
作者:
brucelee0720
时间:
4 天前
感谢分享辛苦了
作者:
lbw666
时间:
4 天前
1111111111111111111111
作者:
yangxicun1
时间:
4 天前
111111111111111111111
作者:
ldljlzw
时间:
4 天前
本帖最后由 ldljlzw 于 2026-7-18 11:29 编辑
谢谢分享,好东西
作者:
myjsygy
时间:
4 天前
有修复了?NB群好像消失了
作者:
mood100
时间:
4 天前
感谢分享,很给力
作者:
yangxuan87
时间:
4 天前
66666666
6666666
作者:
杨明煜
时间:
4 天前
支持一下,谢谢!......
作者:
玉树临风的神印
时间:
4 天前
感谢分享,很给力!~
作者:
不苦小和尚
时间:
4 天前
最新版不是5.9吗?有问题吗
作者:
杰西卡技术传媒
时间:
4 天前
感谢分享,很给力!~
作者:
w521521
时间:
4 天前
感谢分享,很给力!~
作者:
zxxiaopi
时间:
4 天前
感谢分享
作者:
瞎JB搞
时间:
4 天前
感谢分享,很给力!~
作者:
rui1714
时间:
4 天前
555555555555555555555555555555555555555555555
作者:
wswck7
时间:
4 天前
感谢分享,很给力!~
作者:
︷蚁︷
时间:
4 天前
感谢分享,很给力!~
作者:
ljx111
时间:
4 天前
感谢分享
作者:
抱抱你
时间:
4 天前
不苦小和尚 发表于 2026-7-18 17:40
最新版不是5.9吗?有问题吗
5.9是新增又不是修复
作者:
汉族
时间:
4 天前
感谢分享
作者:
fdassd
时间:
4 天前
感谢分享...
作者:
TkShow
时间:
4 天前
感谢分享
作者:
小芬子
时间:
3 天前
B模块v5.6修复内
作者:
zhengwulin
时间:
3 天前
感谢分享,很给力!~
作者:
259504
时间:
3 天前
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者:
year1970
时间:
3 天前
感谢分享
作者:
一C
时间:
3 天前
支持大佬
作者:
爱无情
时间:
3 天前
感谢分享,很给力!~
作者:
xunianchun
时间:
3 天前
感谢分享
作者:
原点╮
时间:
3 天前
NB模块v5.6修复内存泄露
作者:
xiaoyao0418
时间:
3 天前
感谢分享,很给力
作者:
brotherit
时间:
3 天前
感谢分享,很给力
作者:
931691974
时间:
3 天前
感谢分享,很给力!~
作者:
wjswzj0
时间:
3 天前
感谢分享,很给力!~
作者:
po1718
时间:
3 天前
感谢分享,很给力!~
作者:
inat
时间:
3 天前
就喜欢修复了的,辛苦了
作者:
明天自然醒
时间:
3 天前
不保证完全修复啊 直接发源代码了 你们自己研究 反正我现在不会出现软件假死等问题了
作者:
crhxm
时间:
3 天前
感谢分享
作者:
fastdao
时间:
3 天前
感谢分享
作者:
尕小小
时间:
3 天前
感谢分享
作者:
寡人
时间:
前天 01:43
支持一下
作者:
1964555152
时间:
前天 01:48
RE: NB模块v5.6修复内存泄露 [修改]
作者:
阮少小哥哥
时间:
前天 03:05
支持一下
作者:
player360
时间:
前天 08:43
感谢分享,很给力!~
作者:
zzh233
时间:
前天 11:07
万分感谢 一直用这个wxhook
作者:
jzc123
时间:
前天 12:10
6666666666666666666666666666666666
作者:
小白阿
时间:
前天 12:29
感谢分享,很给力!~
作者:
相见欢
时间:
前天 12:42
6666666666666666
作者:
bianyuan456
时间:
前天 13:02
已经顶贴,感谢您对论坛的支持!
作者:
lm88818
时间:
前天 14:04
感谢分享,很给力!~
作者:
lbw6
时间:
前天 15:39
6666666666666666666666666666666666666666
作者:
零食困难户
时间:
前天 16:01
感谢分享
欢迎光临 精易论坛 (https://bbs.ijingyi.com/)
Powered by Discuz! X3.4