典型二进制翻译系统---用户级翻译
目录
QEMU
补充
Valgrind
包括
CrossBit
补充
Strata-ARM
Box86
HQEMU
SymQEMU
QEMU
是一个开源的多平台的虚拟器,能够在软件中模拟一台机器
KVM(Kernel-based Virtual Machine)是 Linux 内核的一个模块,使 Linux 成为一个虚拟机监控器。它允许用户在 Linux 系统上创建和管理虚拟机
QEMU可以与Xen和KVM管理程序集成,以提供仿真硬件,同时允许管理程序管理CPU
当QEMU直接模拟cpu时,它能够在不同的机器(例如x86_64 PC板)上运行为一台机器
QEMU还能够为Linux和BSD内核接口提供用户空间API虚拟化。这使得针对一种体系结构ABI(例如Linux PPC64 ABI)编译的二进制文件可以在使用不同体系结构ABI(例如Linux x86_64 ABI)的主机上运行。这不涉及任何硬件仿真,只涉及CPU和系统调用仿真。
补充
Xen 和 KVM 是两种流行的虚拟化技术,它们允许在单一物理硬件上同时运行多个虚拟机(VM)
Xen 是一个开源的虚拟机监控器(hypervisor)
API(应用程序编程接口,Application Programming Interface)是一组定义了软件应用程序之间交互的规则和协议。API 允许不同的软件组件之间进行通信,简化了软件开发的过程
Valgrind
基于VEX IR(VEX Intermediate Representation)中间表达式转换, 重量级代码插桩与分析工具
是一个用于构建动态分析工具的框架
使用平台:
- X86/Linux - AMD64/Linux - PPC32/Linux - PPC64/Linux - ARM/Linux - x86/MacOSX - AMD64/MacOSX - S390X/Linux - MIPS32/Linux - MIPS64/Linux
包括
The Valgrind distribution currently includes six production-quality
tools:
a memory error detector, (内存错误检测器)
two thread error detectors,(两个线程错误检测器)
a cacheand branch-prediction profiler, (一个缓存分支预测分析器)
a call-graph generating cache abdbranch-prediction profiler, (一个调用图生成缓存分支预测分析器)
a heap profiler. (堆分析器)
It also includes three experimental tools:
a heap/stack/global array overrun detector, (堆/堆栈/全局数组溢出检测器)
a different kind of heap profiler, (一种不同类型的堆分析器)
a SimPoint basic block vectorgenerator.(SimPoint基本块矢量生成器)
CrossBit
源平台:MIPS, x86, Sparc
目标平台: Power, x86, Sparc
是一个与逆向工程和漏洞分析(动态分析和静态分析)相关的工具或框架,帮助分析和理解二进制文件(如可执行文件和库)
支持多平台(如 x86、ARM 等)
有GUI界面,减少命令行依赖
多线程翻译, 基于Vlnst低层次的虚拟中间表示层
补充
Vlnst(Vulnerability Instantiation)是一个专注于漏洞分析的工具或框架,通常用于帮助安全研究人员和开发者识别、分析和修复软件中的安全漏洞
Strata-ARM
源平台:ARM ARM
目标平台:IA-32 D
动态翻译应用于嵌入式系统, 间接跳转优化
Box86
在非x86 Linux系统上运行x86 Linux程序(比如游戏),比如ARM(主机系统需要是32位小端)
大多数x86游戏都需要OpenGL,所以在ARM平台上,像gl4es这样的解决方案可能是必要的。
应该安装ccache并用它来构建Box86
您应该安装ccache并用它来构建Box86。(以ccmake为例。)要启用TRACE(即转储所执行的所有单个x86指令,并转储寄存器),您还需要在系统上提供Zydis库。
If you are serious about developing Box86, you should install ccache and build Box86 with it. (Use ccmake for example.) To enable TRACE (i.e. dumping to stdout all individual x86 instructions executed, with dump of registers), you'll also need Zydis library available on your system.
源平台:x86, x86-64
目标平台:ARM64, RISC-V
HQEMU
是一个多核可重目标的多线程动态二进制转换器
它集成了QEMU和LLVM作为其构建块
HQEMU可以实现较低的翻译开销和良好的翻译代码质量。
HQEMU支持进程级仿真和全系统虚拟化。它提供了在一个进程中运行QEMU转换器和LLVM优化器的转换模式,或者将LLVM优化器作为独立的优化服务器运行
SymQEMU
一个基于QEMU和SymCC的纯二进制符号执行器
灵活性强
源平台:x86-64, AArch64
目标平台:x86-64, AArch64
接受指向SymCC源代码和二进制文件的指针