packing-box/bintropy

GitHub: packing-box/bintropy

基于熵值分析的多平台二进制文件加壳检测工具,支持 PE/ELF/Mach-O 格式,帮助快速判断可执行文件是否包含压缩或加密数据。

Stars: 48 | Forks: 4

Bintropy Tweet

Detect packers on PE/ELF/Mach-O files using entropy.

[![PyPi](https://img.shields.io/pypi/v/bintropy.svg)](https://pypi.python.org/pypi/bintropy/) [![Python Versions](https://img.shields.io/pypi/pyversions/bintropy.svg)](https://pypi.python.org/pypi/bintropy/) [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8b95e57581090926.svg)](https://github.com/packing-box/bintropy/actions/workflows/python-package.yml) [![DOI](https://zenodo.org/badge/382563382.svg)](https://zenodo.org/badge/latestdoi/382563382) [![License](https://img.shields.io/pypi/l/bintropy.svg)](https://pypi.python.org/pypi/bintropy/) 该工具是 Bintropy 的 Python 实现版本,Bintropy 是在[这篇论文](https://ieeexplore.ieee.org/document/4140989)中提出的一种基于熵进行加壳检测的分析工具。它实现了论文中的两种操作模式以及一种额外的模式,分别针对整个二进制文件、每个节(section)或每个段(segment)。它使用[论文](https://ieeexplore.ieee.org/document/4140989)中提到的熵值来判断二进制文件是否包含压缩/加密的字节。 它依赖 [`lief`](https://github.com/lief-project/LIEF) 来抽象 **PE**、**ELF** 或 **Mach-O** 可执行文件。因此,该工具支持这三种格式。 ``` $ pip install bintropy ``` ``` $ bintropy --help ``` ### 操作模式 使用 `-m`/`--mode` 选项。 - `0`:整个二进制文件(默认) - `1`:按节 - `2`:按段 请注意,模式 2 在逻辑上会给出与模式 0 非常相似的结果。 ``` $ bintropy binary <<< boolean >>> $ bintropy binary --dot-not-decide <<< highest block entropy, average block entropy >>> ``` ``` $ bintropy binary --mode [1|2] <<< boolean >>> $ bintropy binary -m [1|2] --do-not-decide <<< highest block entropy, average block entropy >>> ``` ### 基准测试 使用 `-b`/`--benchmark` 选项可获取一个额外的值,即以秒为单位的处理时间。 ``` $ bintropy binary -b <<< boolean, processing time >>> $ bintropy binary -b --do-not-decide <<< highest block entropy, average block entropy, processing time >>> ``` ### 覆盖默认熵值 [参考论文](https://ieeexplore.ieee.org/document/4140989)使用 6.677 作为平均块熵,7.199 作为最高块熵(通过分析 PE 文件数据集并使用第一种操作模式得出)。这些值可以通过专用选项进行覆盖。 ``` $ bintropy binary --threshold-average-entropy 5.678 --threshold-highest-entropy 6.789 [...] ``` ### 绘图 该工具具有生成图表的功能,用于绘制二进制文件的节及其内部的熵。 ``` $ bintropy binary --plot <<< boolean >>> ``` 生成的图形示例:

## :star: 相关项目 你可能也会喜欢这些: - [Awesome Executable Packing](https://github.com/packing-box/awesome-executable-packing):与可执行文件加壳相关的精选资源列表。 - [Dataset of packed ELF files](https://github.com/packing-box/dataset-packed-elf):使用许多不同加壳工具加壳的 ELF 样本数据集。 - [Dataset of packed PE files](https://github.com/packing-box/dataset-packed-pe):使用许多不同加壳工具加壳的 PE 样本数据集([此仓库](https://github.com/chesvectain/PackingData)的分支)。 - [Docker Packing Box](https://github.com/packing-box/docker-packing-box):集成了加壳工具和实用程序的 Docker 镜像,用于制作加壳可执行文件数据集。 - [DSFF](https://github.com/packing-box/python-dsff):实现数据集文件格式 (DSFF) 的库。 - [PEiD](https://github.com/packing-box/peid):著名的 Packed Executable iDentifier ([PEiD](https://www.aldeid.com/wiki/PEiD)) 的 Python 实现版本。 - [PyPackerDetect](https://github.com/packing-box/pypackerdetect):针对 PE 文件的加壳检测工具([此仓库](https://github.com/cylance/PyPackerDetect)的分支)。 - [REMINDer](https://github.com/packing-box/reminder):使用简单启发式方法的加壳检测器(灵感源自[这篇论文](https://ieeexplore.ieee.org/document/5404211))。 ## :clap: 支持者 [![Stargazers repo roster for @packing-box/bintropy](https://reporoster.com/stars/dark/packing-box/bintropy)](https://github.com/packing-box/bintropy/stargazers) [![Forkers repo roster for @packing-box/bintropy](https://reporoster.com/forks/dark/packing-box/bintropy)](https://github.com/packing-box/bintropy/network/members)

Back to top

标签:DAST, DNS 反向解析, ELF文件, LIEF, Mach-O, PE文件, Python, 二进制分析, 二进制安全, 二进制样本, 云安全监控, 云安全运维, 云资产清单, 加壳检测, 加密识别, 壳识别, 恶意软件分析, 数据压缩, 文件格式解析, 无后门, 熵分析, 逆向工具, 逆向工程, 静态分析