trym-s/pyinstaller-YARA
GitHub: trym-s/pyinstaller-YARA
通过修改并重新编译 PyInstaller bootloader 的 C 源码,减少合法 Windows 可执行文件因通用 PyInstaller 特征而被杀毒软件误报的问题。
Stars: 0 | Forks: 0
# 减少 PyInstaller Bootloader 误报
本仓库记录了一项关于减少由 PyInstaller 生成的合法 Windows 可执行文件误报的实验。
这项工作的重点是重新构建和修改 PyInstaller bootloader 的 C 源代码,
了解哪些静态字符串和打包产物可能会触发
YARA 风格的规则,并为被 VirusTotal 等扫描工具错误标记的
内部工具记录一个可复现的构建流程。
## 安全背景
本项目不用于恶意软件逃避或绕过安全
控制。它专注于减少由 PyInstaller 打包的合法内部
应用程序的误报,在这些应用中,通用的 PyInstaller 特征
即使对于完全无害的应用程序,也会产生嘈杂的检测结果。
## 更改内容
- 从源代码重新构建 PyInstaller bootloader,而不是仅依赖预构建的 bootloader 二进制文件。
- 修改了导致通用 PyInstaller/YARA 检测的 bootloader 级别 C 源代码产物。
- 记录了一个可重复的构建过程,用于从重新构建的 bootloader 生成应用程序可执行文件。
- 记录了有关 Windows 分发的 ``_internal`` 运行时文件和 DLL 放置位置的打包限制。
## 重新构建 Bootloader
导航到 PyInstaller bootloader 目录:
.. code-block:: bash
cd path/to/pyinstaller/bootloader
清理、配置并重新构建 bootloader:
.. code-block:: bash
python waf distclean
python waf configure
python waf all
## 构建可执行文件
Bootloader 重新构建完成后,返回到 PyInstaller 根目录:
.. code-block:: bash
cd path/to/pyinstaller
从其 spec 文件构建目标应用程序:
.. code-block:: bash
python -m PyInstaller path/to/your/app.spec
生成的可执行文件将输出到 ``dist/`` 目录下。
## 运行时 DLL 布局
如果可执行文件在运行时由于缺少 DLL 文件而失败,请将生成的 ``_internal`` 目录中的运行时文件
复制到可执行文件旁边的主应用程序目录中。
这使得打包后的应用程序布局与修改后的 bootloader 解析运行时依赖的方式保持兼容。
## 注意事项
本仓库主要是一个打包和二进制构建实验。它
有助于了解 PyInstaller 内部原理、Windows 可执行文件打包、
bootloader 编译,以及真正的恶意行为与可能导致误报的通用静态特征之间的区别。
标签:PyInstaller, SOC Prime, 开发工具, 源码编译, 漏洞挖掘, 误报优化, 逆向工具