ParkWardRR/arm64-symbolic-execution-tracer

GitHub: ParkWardRR/arm64-symbolic-execution-tracer

一个轻量级 ARM64 符号执行追踪引擎,通过将原始指令流转换为数学符号 AST 来揭示寄存器值背后的完整计算逻辑。

Stars: 2 | Forks: 0

# arm64-symbolic-execution-tracer ![许可证](https://img.shields.io/badge/license-Blue_Oak-blue.svg) ![构建](https://img.shields.io/badge/build-passing-brightgreen) ![Go 版本](https://img.shields.io/badge/Go-1.21+-00ADD8?logo=go) ![架构](https://img.shields.io/badge/arch-ARM64-orange) ## 高层概述 动态二进制插桩(DBI)引擎非常适合追踪具体的执行过程,但它们很难解释在复杂算法中,某个特定的寄存器是*为什么*或*如何*获得其值的。 **ARM64 符号执行追踪器**通过将具体的 ARM64 指令流转换为抽象的符号 AST(抽象语法树)来解决这一问题。它不会仅仅计算出 `W0 = 5`,而是追踪执行过程以证明 `W0 = (InputBuffer[0] ^ 0x42) + 3`。这对于自动化去混淆、漏洞发现以及密码学算法识别具有无与伦比的价值。 该引擎被设计为完全独立且与框架无关。它通过通用接口解析原始的 ARM64 操作码和内存状态。 ## 架构 ``` graph TD A[Concrete ARM64 Opcode] --> B(Opcode Parser) B --> C(Symbolic Register State Update) B --> D(Symbolic Memory State Update) C --> E{Constant Folding} D --> E E --> F[Simplified Mathematical AST] ``` ## 科学基础 符号执行通过用符号变量替换具体值(例如原始整数)来运行。随着 CPU 执行指令,该引擎使用表示计算的数学表达式来更新架构状态(寄存器和内存)。追踪器会自动折叠常量、简化按位算术运算,并将复杂的循环折叠为参数化的符号数组。 ## 功能 ## 用法 请参阅提供的测试套件(例如 `symbolic_flow_test.go`)以获取有关使用该追踪器的示例。 ## 许可证 本软件基于 [Blue Oak Model License 1.0.0](LICENSE) 提供。 ## 概念解析 想象一位厨师正在按照食谱一步一步地烤蛋糕(具体执行)。最后,你看到了蛋糕,但除非你密切关注,否则你不会知道面粉和糖的确切比例。 **符号执行追踪器**不仅是在烤蛋糕,它还会写下每一步的代数方程。它不会说“我加了 2 杯糖”,而是写下“总糖量 = 初始糖量 + 2”。在该过程结束时,你得到的不仅仅是一个蛋糕,还有一个完整的数学公式,精确证明了每一种原料是如何相互作用以创造出最终产品的。这使得逆向工程师能够立即理解一个复杂的、经过混淆的程序实际上在做什么,而无需手动阅读数千行汇编代码。
标签:EVTX分析, 日志审计