确定一个二进制文件所使用的 CPU 架构

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/trou/cpu_rec_rs

cpu_rec_rs

相关技术点

  • 二进制文件的CPU架构识别
  • 基于统计学的方法
  • 使用滑动窗口进行特征提取
  • Rust语言实现

项目用途

cpu_rec_rs 是一个用于识别二进制文件所使用CPU架构的工具,它使用基于统计学的方法来识别二进制文件的CPU架构,主要包括以下步骤:

  1. 提取二进制文件的特征
  2. 根据预先构建的语料库,将特征与所有已知CPU架构进行比较
  3. 输出与特征最匹配的CPU架构

该工具可以帮助安全研究人员快速确定二进制文件所使用的CPU架构,从而更好地进行后续分析。但是,由于该方法是基于统计学的,因此存在误识别的风险,需要与其他来源进行交叉验证。

cpu_rec_rs

该项目用于确定一个二进制文件所使用的CPU架构。

示例:

$ cpu_rec_rs /bin/bash /usr/lib/firmware/rtlwifi/rtl8821aefw*
Loading corpus from cpu_rec_corpus/*.corpus
----------------------------------------------------------------------------------------
                      File                       |     Range     | Detected Architecture
----------------------------------------------------------------------------------------
/bin/bash                                        | Whole file    | X86-64
/usr/lib/firmware/rtlwifi/rtl8821aefw_29.bin     | 0x3200-0x4400 | 8051
/usr/lib/firmware/rtlwifi/rtl8821aefw_29.bin     | 0x4600-0x5000 | 8051
/usr/lib/firmware/rtlwifi/rtl8821aefw_29.bin     | 0x6000-0x6600 | 8051
/usr/lib/firmware/rtlwifi/rtl8821aefw_29.bin     | 0x6600-0x6c00 | 8051
/usr/lib/firmware/rtlwifi/rtl8821aefw.bin        | Whole file    | 8051
/usr/lib/firmware/rtlwifi/rtl8821aefw_wowlan.bin | Whole file    | 8051
----------------------------------------------

注意:该项目基于统计方法,因此误判的可能性是存在的。您应该与其他来源进行交叉验证,并使用反汇编器验证结果。

特别是,较小的文件更容易出现误判,以及更小的滑动窗口。常见的误判包括:

  • xmos_xs2a
  • NDS32

关于

cpu_rec_rs 是原始项目 cpu_rec 的 Rust 重新实现。为什么要重新实现它?

  • 性能
  • 代码简化
  • Rust 实践

原始的 cpu_rec 包含了许多用于实验和更新语料库的代码。如果您想尝试各种预测设置,请使用 cpu_rec。它还包含文档和与其理论相关的链接(SSTIC 演示文稿)。

标签:工具分享