Zydis|把 x86-64 反汇编做到零分配、线程安全

📅 2026/8/27 16:22:44
Zydis|把 x86-64 反汇编做到零分配、线程安全
Zydis把 x86-64 反汇编做到零分配、线程安全【免费下载链接】zydisFast and lightweight x86/x86-64 disassembler and code generation library项目地址: https://gitcode.com/gh_mirrors/zy/zydisZydis 是一个轻量级 x86-64 反汇编库。它把反汇编把机器码还原成汇编指令做到零内存分配且天生线程安全。连 libc 都不依赖任何 C11 平台都能编译。它凭什么快零分配解码器的四个硬指标零动态分配解码全程不向系统申请内存结果直接写进你给的结构体。无锁线程安全设计上没有共享状态多线程并发解码不用加锁。零第三方依赖它是个纯正的 C11 反汇编库连 libc 都不要内核或 UEFI 环境里也能编译。体积开销小相比常见反汇编库它给二进制带来的膨胀很小。五分钟跑通第一个例子克隆仓库、构建、安装Linux 下四行命令就够git clone --recursive https://gitcode.com/gh_mirrors/zy/zydis cd zydis mkdir build cd build cmake .. make sudo make install下面摘录自仓库示例的解码主循环ZyanU8 data[] {0x51, 0x8D, 0x45, 0xFF}; ZyanU64 addr 0x7FFFFFFF400000; ZyanUSize off 0; ZydisDisassembledInstruction insn; while (ZYAN_SUCCESS(ZydisDisassembleIntel( ZYDIS_MACHINE_MODE_LONG_64, addr, data off, sizeof(data) - off, insn))) { printf(%s\n, insn.text); addr insn.info.length; off insn.info.length; }这段代码从缓冲区头部逐条解码打印 Intel 风格文本。指针每轮按指令长度前进解码失败就退出循环。真实世界里它被用来做什么调试器集成x64dbg 和 Firefox 的 JS 引擎都拿它当反汇编引擎把内存实时渲染成汇编。逆向分析解码速度快适合扫大体积二进制、提取调用关系和控制流。运行时改写编码器能重新生成机器码字节方便你在指令处插入挂钩。用之前先想清楚的三件事传给解码器的runtime_address别随手填 0。相对跳转的目标地址由它推算填错就全偏移了。输出格式有 Intel 和 ATT 两种口味选一种就坚持用。格式化层还能挂钩子替换操作数文本。多线程下你可以直接共享库实例但每个线程要各自持有结果结构体别交叉写。下一步往哪走想抠细节读include/Zydis/下的头文件。要改格式化输出或重新编码翻examples/目录。tools/里的命令行工具可直接跑当参考实现。【免费下载链接】zydisFast and lightweight x86/x86-64 disassembler and code generation library项目地址: https://gitcode.com/gh_mirrors/zy/zydis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考