vobst/coderec

GitHub: vobst/coderec

一个基于统计学的机器码检测工具,用于在二进制与内存转储中高效定位可执行代码。

Stars: 2 | Forks: 2

# coderec 在二进制文件或内存转储中查找机器码。示例: Cisco IOS 固件镜像: ![](https://blog.eb9f.de/media/coderec/C800-UNI-159-3.M2_w81920_regions.png) Cisco 启动 ROM 内存转储: ![](https://blog.eb9f.de/media/coderec/ffc31000_ffd2b000.dump_w4096_regions.png) ## 安装 将数据块包含在版本控制中是一个糟糕的主意。因此你必须 下载当前的语料库并解压,然后才能构建可执行文件。 一键命令如下: ``` curl --proto '=https' --tlsv1.2 -sSf https://valentinobst.de/a13f15d91f0f8846d748e42e7a881f783eb8f922861a63d9dfb74824d21337039dd8216f0373c3e5820c5e32de8f0a1880ec55456ff0da39f17d32f567d62b84/cpu_rec_corpus.tar.gz -o cpu_rec_corpus.tar.gz && tar xf cpu_rec_corpus.tar.gz && rm cpu_rec_corpus.tar.gz ``` 构建此项目需要 [`pkg-config`](https://en.wikipedia.org/wiki/Pkg-config) 和 `libfontconfig1`。在基于 Debian 的系统上,可以通过以下方式安装: ``` apt install libfontconfig1-dev pkg-config ``` 然后你可以像其他 `cargo` 基础的 Rust 项目一样安装: ``` cargo install --locked --path . ``` ### 打包 Arch 系列发行版用户可以通过 [AUR](https://aur.archlinux.org/packages/coderec) 安装 `coderec`。 ## 如何阅读图表 有两种图表:字节图表和区域图表。在字节图表中,每个 点对应文件中的一个字节;X 值为字节偏移量,Y 值为其数值。使用颜色来指示该字节所属区域的检测结果。以下是一个字节图表示例: ![](https://valentinobst.de/31c929c36d54d2670a97f8485f09f99c43266e6b5ac51f2b322178d03c2c5f00/bfc00000_bfc90000.dump_w4096_regions.png) 对于较大的文件,字节图表不再实用。此时可以使用区域图表。这些图表以两个彩色条形的形式显示目标文件每个区域的检测结果,分别对应顶部和底部的质量指示条,表示三元组和二元组检测的质量。条形的颜色用于指示该区域的二元和三元组检测结果是否一致。以下是一个区域图表示例: ![](https://valentinobst.de/e97aabb102c6fc5b241a3eef5772511c7e4089ad5dd12bc859075e442a47fe95/c2800nm-adventerprisek9_sna-mz.124-22_core_02_cropped_w73728_regions.png) 默认生成字节图表;使用 `--big-file` 标志可切换为区域图表。 ## 关于 检测机器码和语料库的方法来源于 [`cpu_rec`](https://github.com/airbus-seclab/cpu_rec/)。此代码库是 [`cpu_rec_rs`](https://github.com/trou/cpu_rec_rs) 的一个硬分支。 为什么要使用这个而不是 `cpu_rec_rs`?原因如下: - 利用所有 CPU 核心(在大文件上速度显著更快), - 生成美观的图表, - 更易用,因为语料库已内嵌(将二进制文件加入 PATH 即可直接使用), - 不同的假阳性过滤启发式算法, - 针对大文件使用不同的窗口大小策略(由于利用所有核心,可以使用更小的窗口以获得更好结果), - 更佳的高熵和字符串区域检测, 更多详细信息请参考我们的 [博客文章](https://blog.eb9f.de/2024/11/24/coderec.html)。 注意:由于该方法基于统计学,误报是可能发生的。你应该交叉验证其他来源,并使用反汇编器验证结果。
标签:Cargo, Ruby on Rails, Rust, SEO: 二进制文件识别, SEO: 机器码查找, 二进制分析, 二进制发布, 二进制文件扫描, 云安全运维, 云资产清单, 代码检测, 内存转储, 区域检测, 可视化分析, 可视化界面, 固件分析, 固件逆向, 字节级分析, 开源工具, 数据库接管, 文件格式分析, 机器码识别, 熵分析, 系统运维工具, 网络流量审计, 逆向工程, 通知系统