Real-Fruit-Snacks/x86-x64-assembly-lab

GitHub: Real-Fruit-Snacks/x86-x64-assembly-lab

一个纯浏览器端的 x86 与 x86-64 交互式汇编模拟器和逆向工程学习实验室,提供单步执行引擎、可视化栈演练场、教程和工具集,无需任何安装或依赖。

Stars: 0 | Forks: 0

x86 & x64 Assembly Lab — an interactive assembly and reverse-engineering lab in the browser
**交互式 x86 与 x86-64 汇编模拟器和实验室。一个完全基于浏览器的从零开始学习汇编的环境——包含单步执行的 32 位模拟器、交互式 64 位演练场、带嵌套帧追踪的可视化栈演练场、寄存器问答游戏、28 个教程章节以及 7 个交互式工具。无后端,无构建步骤,无依赖。** [![License: MIT](https://img.shields.io/badge/License-MIT-63f2ab.svg)](LICENSE) [![Latest release](https://img.shields.io/github/v/release/Real-Fruit-Snacks/x86-x64-assembly-lab?color=6bdcff&label=release)](https://github.com/Real-Fruit-Snacks/x86-x64-assembly-lab/releases) [![Live demo](https://img.shields.io/badge/live-demo-f0c674)](https://real-fruit-snacks.github.io/x86-x64-assembly-lab/) [在线演示](https://real-fruit-snacks.github.io/x86-x64-assembly-lab/) · [更新日志](CHANGELOG.md) · [报告问题](https://github.com/Real-Fruit-Snacks/x86-x64-assembly-lab/issues)
## 概述 一个自包含的汇编教室。将任何 x86 代码清单粘贴到沙盒中并单步执行——寄存器、标志位、按字节寻址的内存和栈会实时更新,并提供 DEC/HEX/BIN 显示。沙盒可以读取真实的反汇编器表示法:段前缀(`ss:[ebp-4]`)、纯十六进制地址(`004940d8`)、`dword ptr` 大小提示,以及 IDA 风格的 `var_N`/`arg_N`。 一个独立的 **64 位引擎**为交互式 x64 演练场提供动力:通过操作按钮(push/pop、call/return、prologue/alloc/leave 以及自由格式执行)驱动一台真正的 `RAX`–`R15` 机器,并具备实时的调用链、撤销功能和场景。因为它是真正的 64 位(基于 `BigInt` 构建),所以真实的规则依然适用——像 `mov eax, 1` 这样的 32 位写入会将 `RAX` 的高半部分清零。 栈演练场包含四种模式(探索、单步执行、解谜、错误),并使用带颜色的边框以及 `main → caller → current` 调用链概览来追踪嵌套帧。寄存器问答游戏可生成涵盖三个难度级别的随机题目,并具备评分、连胜和最佳记录记忆功能。28 个教程章节涵盖了从基础到高级的主题——调用约定、struct、浮点数、动态内存、阅读真实的反汇编代码、XOR 去混淆、keygen 逆向顶点项目、缓冲区溢出以及 x64 差异——每一章都配有微型模拟器和练习挑战。 ## 核心功能 - **32 位模拟器:** EAX–EDZ 及其子寄存器 (AL/AH/AX) · ESI · EDI · EBP · ESP · ZF/CF/SF/OF。 - **64 位模拟器:** RAX–RDX/RSI/RDI/RBP/RSP + R8–R15,包含 32/16/8 位子寄存器 · BigInt 精确计算 · 32 位写入清零高半部分。 - **全面的指令集:** MOV(SX/ZX)、算术、按位、移位/循环移位、MUL/IMUL/DIV/IDIV、CBW/CWD/CWDE/CDQ、栈/分支/call/ret。 - **深入教程:** **28 个章节**,包含 39 个交互式微型模拟器和前后对比快照。 - **工具:** 7 个交互式实用工具,包括指令参考、数字/按位/字节序转换器、ASCII 表、标志计算器和地址计算器。 - **栈模式:** 探索、单步执行、解谜和错误模式,用于可视化学习调用栈。 - **x64 演练场:** 按钮驱动的操作、5 个场景、实时调用链追踪、撤销历史和自由格式执行。 - **终端工作台主题:** 石墨色表面、克制的 ANSI 风格装饰和等宽字体部分标签,强制要求 **深色 + 浅色模式** 以及持久的页眉切换按钮。 - **纯前端技术栈:** 原生 HTML/CSS/JS,绝对没有框架、构建步骤、依赖项,也没有 CDN——完全离线运行。 ## 快速入门 / 安装说明 只需在浏览器中打开 `index.html` 即可运行本实验室。 ``` git clone https://github.com/Real-Fruit-Snacks/x86-x64-assembly-lab.git cd x86-x64-assembly-lab # 选项 1 — 直接打开 open index.html # 选项 2 — 本地服务器 python -m http.server 3456 # -> http://localhost:3456 # 选项 3 — Node npx serve . -l 3456 ``` ## 用法 以下是一些关于如何与引擎交互的快速参考规范。 ### 支持的输入格式 - **十进制:** `mov eax, 42` / `mov eax, -5` - **十六进制 (0x):** `mov eax, 0xFF` / `mov eax, -0xFF` - **十六进制 (IDA):** `mov eax, 0FFh` / `mov eax, 0Ch` - **十六进制 (地址):** `mov eax, [004940d8]` - **二进制:** `mov al, 0b11001100` / `mov al, 11001100b` - **字符:** `mov al, 'A'` - **IDA 变量:** `mov eax, [ebp+var_4]` / `mov eax, [ebp+arg_0]` - **内存提示:** `mov dword ptr [ebp-8], 45` - **段前缀:** `mov edx, dword ptr ss:[ebp-4]` - **标签地址:** `lea eax, [case0]`(标签解析为代码地址) - **跳转表:** `jtable: dd case0, case1, case2` + `jmp [jtable + eax*4]` ## 架构 / 文件结构 ``` . index.html Single-page app with 40 sections tokens.css Terminal Workbench design tokens (dark + light) style.css App styles, built on the design tokens simulator.js 32-bit x86 engine: registers, flags, memory, stack, branches app.js 32-bit UI: sandbox, stack playground, quiz, mini-sims, tools simulator64.js 64-bit x86-64 engine (BigInt): RAX-R15, sub-registers, flags, stack app64.js x64 Playground UI: button-driven actions, scenarios, undo, call-chain docs/assets/ Dark + light logo SVGs ``` **关键模式:** 无框架。每个模拟器引擎都是一个从 `(state, instruction)` 到 `state` 的纯函数,这使得单步执行、演练场、解谜和问答在每个引擎上共享同一个唯一真相源。每个示例、演练、微型模拟和问答轮次都运行在同一个引擎上。64 位引擎是刻意分开的(`simulator64.js` / `app64.js`),因此 64 位的工作不会给 32 位实验室带来任何回归风险,同时保持了无构建、无依赖的模型。 ## 贡献指南 我们欢迎您的贡献!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取有关如何帮助改进项目的指南。同时请务必查阅我们的 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 ## 许可证 本项目基于 [MIT 许可证](LICENSE) 授权。
标签:x86-64架构, x86架构, 云资产清单, 后端开发, 多模态安全, 快速连接, 教学工具, 数据可视化, 汇编语言, 浏览器端, 逆向工程