如何修改正则表达式以准确统计目录中32/64位DLL数量
解决grepWin统计32/64位DLL重复计数的问题
问题核心
原正则PE.{2}L和PE.{2}d会在单个DLL文件中多次匹配不同位置的PE标识,导致统计结果虚高,需要调整正则确保每个文件仅匹配一次。
修改后的正则表达式
- 匹配32位DLL:
\A.*?PE\x00\x00L - 匹配64位DLL:
\A.*?PE\x00\x00d
正则逻辑说明
\A:锚定文件的起始位置,强制从文件开头开始查找第一个PE标识.*?:非贪婪模式匹配任意字符,找到第一个"PE"后立即停止向前匹配,不会跳过更早的PE标识PE\x00\x00L/PE\x00\x00d:精准匹配PE头后的2个空字符(用\x00表示null字节)和对应架构的标记字符,替代原有的.{2}(避免匹配非空字符的无效情况)
grepWin配套设置
- 勾选「Match once per file」(只匹配整个文件一次)选项,和正则逻辑配合彻底杜绝同一文件多次计数
- 在「文件类型」中输入
*.dll,限定扫描范围提升统计速度
内容的提问来源于stack exchange,提问作者skinnedknuckles
相关产品推荐
相关产品推荐

