Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
silica — 对所有43亿条AArch64指令编码进行穷尽式差分验证。 | Kitploit
工具/GitHubGitHub/nathan-luevano/silica
静态分析动态分析 (沙盒)漏洞分析逆向工程模糊测试实用工具与框架二进制分析论文与研究
GitHubnathan-luevano/silica

silica

对所有43亿条AArch64指令编码进行穷尽式差分验证。

查看仓库
21天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

SILICA

一张完整的 AArch64 解码器与架构规范不一致之处的地图。

Silica 遍历全部 4,294,967,296 个可能的 A64 指令字, 将 Capstone、LLVM 和 Unicorn 与 Arm 的机器可读规范进行比对, 并将差异转化为可复现的证据。

Rust Python PyPI License: Apache 2.0 Goals verified Encodings swept


反汇编器说“有效”很容易。知道它是否正确则更难。 大多数差分测试可以揭示工具之间存在分歧,但如果没有独立的判定基准, 就无法确定正确答案。Silica 使用 Arm 的 XML 发布版本作为该判定基准。

A64 使一项异常彻底的实验成为可能:指令宽度恰好为 32 位,因此整个编码空间是有限的,并且可以实际枚举。 Silica 利用了这一点。下面的有效性结果不是估计值或模糊测试活动; 每一个可能的字都经过了检查。

Silica 发现了什么

这些结果使用 ISA_A64_xml_A_profile-2026-06_mc(Armv9.6-A)。扫描被 拆分为 256 个独立验证的分片,覆盖全部 2³² 个编码。

在编码是否有效方面与规范的一致程度:

解码器一致程度可视化
Capstone84.8%█████████████████████████░░░░░

巨大的有效性差距有可识别的原因。Unicorn 通过 执行指令并观察陷阱来测试有效性,而其他判定基准在不执行的情况下进行解码。 少数区域还受到解码时 UNDEFINED 条件的影响,而编译后的规范判定基准 不会对这些条件进行求值。Silica 记录这些局限性,而不是将它们从结果中抹平。

指令文本

比较渲染后的助记符和操作数比记录一个有效性位要昂贵得多。 因此,Silica 在一个确定性样本上评估文本,该样本包含 1,000,000 个字, 取自 1,266,064,016 个所有四个判定基准都认为编码有效的候选字。 这是一个抽样结果,并且被有意与穷举的有效性数据分开。

样本内的分类记录数占比
操作数渲染不同862,64886.3%
规范化需要审查137,35213.7%

该样本有助于定位规范化和呈现方面的工作; 它并不声称穷举覆盖了每一种文本渲染。

探索结果

扫描引擎会生成一个大型研究数据集。silica-scope 是配套的终端应用,用于让该数据集易于使用。它打开一个 已完成的 Silica 产物目录,让你可以浏览核心指标、查看 256 分片编码图、筛选分歧、查询任意 32 位字,以及 阅读可直接提交的复现用例。

使用 Python 3.11 或更高版本从 PyPI 安装:

root@kitploit:~
pipx install silica-scope

然后从 Silica 检出目录运行它,或将其指向一个产物目录:

root@kitploit:~
silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report

silica-scope 是一个纯 Python 读取器,没有原生解码器依赖。它 不会启动穷举扫描,并且能优雅地处理仓库中较小的已发布产物集。有关 各个面板、键盘控制和产物发现选项,请参阅终端读取器指南。

工作原理

root@kitploit:~
flowchart LR
    XML["Arm XML specification"] --> SPEC["compiled spec oracle"]
    SPEC --> SWEEP["parallel 32-bit sweep"]
    CAP["Capstone"] --> SWEEP
    LLVM["LLVM"] --> SWEEP
    UNI["Unicorn"] --> SWEEP
    SWEEP --> MAP["validity bitmaps"]
    MAP --> DIFF["exhaustive XOR comparison"]
    DIFF --> CORPUS["classified disagreement corpus"]
    CORPUS --> OUT["metrics · reproducers · result hash"]

高吞吐路径用 Rust 编写,并在进程内调用每个解码器。它 为每个判定基准的每个编码存储一个位,这使穷举比较保持紧凑, 并使分歧成为直接的位图操作。崩溃会被二分定位到确切的指令字。

Python 负责规范编译、规范化、报告以及 独立验证层。产物模式、抽样规则和已知 局限性记录在 docs/formats.md 中。

复现这项工作

创建固定环境并检查所需的本地输入是否 可用:

root@kitploit:~
micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor

Arm 的 XML 规范因其许可证而未随仓库提供。silica doctor 会报告 Silica 期望在哪里找到它,以及任何其他缺失的先决条件。

要从准备好的检出目录运行完整流水线:

root@kitploit:~
make all

这是一次完整的 2³² 扫描,不是快速的冒烟测试。它会生成编译后的 判定基准、分片记录、有效性位图、分歧语料库、已发布指标、 复现用例以及稳定的 SHA-256 结果哈希。

信任,但要验证

七个独立验证器从原始产物重新计算项目的各项声明。 它们不信任生成的摘要,并且每个验证器都有一个夹具,证明 它能够检测其所防范的缺陷。不存在被跳过或临时的 状态。

root@kitploit:~
micromamba run -p ./.venv silica verify

固定的解码器版本和重新计算的结果哈希使不同的运行 具有可比性。验证目标及其当前状态记录在 GOALS.yml 中。

范围

Silica 目前覆盖基础 A64 和 Advanced SIMD 解码。SVE、SVE2、SME、 A32/T32、RISC-V、汇编器往返以及一般执行测试不在 v1 研究范围内。

最接近的灵感来源是 Sandsifter, 它探索 x86 的变长指令空间。Silica 将同样的系统性怀疑精神 应用于 AArch64,在这里,定宽编码和独立的规范允许进行完整且有裁决的 比较。


Apache 2.0 — 参见 LICENSE

下载工具
结果数量占整个空间的比例
由 Arm 规范分配1,799,435,77641.9%
未由 Arm 规范分配2,495,531,52058.1%
发现的有效性分歧723,801,67816.9%
最小化的可上游复现用例10—
LLVM87.6%██████████████████████████░░░░
Unicorn88.3%██████████████████████████░░░░