Hinikaa/entropy
GitHub: Hinikaa/entropy
单文件、零依赖的 C++ 香农熵计算器,用于在逆向工程和恶意软件分析中快速识别文件内的压缩、加密或加壳区域。
Stars: 0 | Forks: 0
# entropy
文件的香农熵,以比特每字节为单位。
## 概述
适用于在逆向工程或恶意软件分类期间,无需打开十六进制编辑器即可发现压缩、加密或加壳区域:明文和本地代码的熵值远低于 6 比特/字节,而压缩和加密数据的熵值则密集分布在 7.5-8 之间。逐块模式将其转化为二进制文件的粗略映射,让你能直观地看出加壳程序的存根在哪里结束,以及加壳后的有效载荷从哪里开始。
单文件,除了 libstdc++ 之外没有其他依赖。
## 安装
```
make
```
会在当前目录下生成一个 `entropy` 二进制文件。
## 用法
整个文件的熵:
```
./entropy suspicious.bin
```
逐块熵(每 4096 字节块的偏移量和熵,以制表符分隔):
```
./entropy suspicious.bin 4096
```
## 示例
```
$ ./entropy /bin/ls
6.24471
$ ./entropy encrypted.bin
7.98812
```
## 注意事项
- 仅凭熵值并不能证明数据已加密——已经压缩过的格式(PNG、JPEG、ZIP)的得分也同样高。它只是一种筛选信号,而非最终判定。
- 对于文件末尾那些短于 `block-size` 的块,仍然会根据其实际长度进行测量,而不会进行填充。
## 许可证
MIT,详见 `LICENSE`。
标签:C++, 云资产清单, 信息熵计算, 恶意代码分析, 数据擦除, 逆向工程, 配置文件