返回 AI 资讯
社区讨论V2EX 技术

[缺陷] BaiduNetdisk.exe 句柄泄漏, 8.8.3.101 最新版仍复现(已定位 YunLogic.dll)

长话短说:百度网盘主进程 BaiduNetdisk.exe 有个句柄泄漏, 以约 6 个/分钟的恒定速率泄漏 Process 类型句柄且从不释放 。已逆向定位到具体模块和函数,三个版本(含当前最新的 8.8.3.101 )全部复现。 现象 项目 实测 泄漏对象 Process 类型句柄,全部指向同一个 BaiduNetdiskUnite.exe 子进程 速率 约 6 个/分钟 = 360/小时 ≈ 8600/天,恒定, 从不回落 累积 连续运行 96.7 小时累积 37021 个,占全系统句柄总数 16.2% 后…

内容摘要

长话短说:百度网盘主进程 BaiduNetdisk.exe 有个句柄泄漏, 以约 6 个/分钟的恒定速率泄漏 Process 类型句柄且从不释放 。已逆向定位到具体模块和函数,三个版本(含当前最新的 8.8.3.101 )全部复现。 现象 项目 实测 泄漏对象 Process 类型句柄,全部指向同一个 BaiduNetdiskUnite.exe 子进程 速率 约 6 个/分钟 = 360/小时 ≈ 8600/天,恒定, 从不回落 累积 连续运行 96.7 小时累积 37021 个,占全系统句柄总数 16.2% 后果 句柄表膨胀导致整机明显卡顿;结束该进程后立即恢复,一次性释放 61726 个 自己验证(约 10 分钟) 启动百度网盘并登录,保持待机( 不需要任何上传/下载任务 ) 用微软官方 Sysinternals 的 handle64.exe (免安装, live.sysinternals.com 可取) 管理员命令行执行,记下 Process 那行的数字: handle64.exe -accepteula -s -p <BaiduNetdisk.exe 的 PID> 隔 5 分钟再跑一次,会涨约 30 。 再看这些句柄指向谁: handle64.exe -accepteula -a -p <PID> | findstr Process 结果全部是同一个 BaiduNetdiskUnite.exe(某个 PID) 。 已定位到代码 模块: YunLogic.dll 最新版 8.8.3.101:函数 RVA 0xE6950 - 0xE6CF8 OpenProcess 调用点 RVA 0xE69AA ,期望访问权限 SYNCHRONIZE (0x00100000) 该函数唯一调用者 RVA 0xE9B10 - 0xE9BEE ; 这条调用链内 CloseHandle 出现 0 次 即:句柄被打开后,链路上没有任何关闭路径。请求的权限只有 SYNCHRONIZE 这一位,也印证了用途 —— 典型是"等这个进程退出"的存活判定循环。 版本 版本 Process 句柄速率 8.5.5.103 +6.1 /分钟 8.6.0.102 +6.3 /分钟 8.8.3.101 (当前最新) +6.06 /分钟 三个版本速率完全一致, 升级无用 。 为什么容易被漏掉 这不是崩溃类问题 —— 进程全程正常运行、不产生 dump ,所以不会进任何崩溃统计,也容易被"请提供日志 / 请提供 dmp"挡回去。实际影响集中在 7×24 运行的机器 (云桌面、NAS 、挂机),按 8600/天算一周累积约 6 万句柄。 顺带一提 已通过官方渠道提交过工单,也在客户端内置反馈里提了。发在这里是希望研发能看到 —— 模块名和函数地址都给了,有 PDB 的话应该几分钟就能定位。 临时办法:重启百度网盘即可清空已泄漏句柄,一天一次基本无感。

资讯来源

V2EX

原文链接

打开原文