MoriartyPuth/MalwareTech-VM1-Lab

GitHub: MoriartyPuth/MalwareTech-VM1-Lab

一个展示如何通过静态分析和Python模拟器逆向自定义8位虚拟机并解密隐藏flag的逆向工程实验项目。

Stars: 0 | Forks: 0

# 🫧 实验室:MalwareTech VM1 — 虚拟机分析 ## 🖥️ 虚拟机规格 * 实验室名称:MalwareTech VM1 * 实验室类型:静态分析 * 语言:x86_64 * 平台:Windows 64-bit * 难度:中等 * 下载:https://labs.malwaretech.com/files/virtualization/vm1.rar * 密码:MalwareTechLabs ### 概述 本实验室专注于逆向一个自定义的 8 位虚拟机 (VM),该虚拟机用于混淆隐藏的 flag。目标是对 `ram.bin` 文件执行静态分析,以理解 VM 的内部架构,解码其指令集,并在不执行二进制文件的情况下解密 flag。 ### 技术分析 1. 内存布局 通过分析原始十六进制转储(见下图),我识别出了 507 字节 `ram.bin` 文件的内存分段: * 数据区 (0x00 - 0xFE):使用加密数据及 VM 内部状态的空间进行初始化。 * 字节码区 (0xFF - 0x1FB):“指令指针” (IP) 从此处开始。VM 使用 3 字节的固定宽度指令格式。 2. 虚拟机架构 VM 遵循经典的 Fetch-Decode-Execute(取指-译码-执行)循环。基于引擎的反汇编,指令格式为: `[Opcode (1 byte)] [Operand 1 (1 byte)] [Operand 2 (1 byte)]` 通过模拟,我映射了以下指令集架构 (ISA): | Opcode | Instruction | 逻辑 | | :--- | :--- | :--- | | 0x01 | SET | RAM[Operand1] = Operand2 | | 0x02 | LOAD | Register = RAM[Operand1] | | 0x03 | XOR | RAM[Operand1] = RAM[Operand1] ^ Register | 3. 模拟逻辑 (伪代码) 我推导出以下逻辑来描述 VM 如何处理字节码: ``` counter = 0 while running: # 3-byte Fetch starting at offset 255 byte_1 = bytecode[counter + 255] byte_2 = bytecode[counter + 256] byte_3 = bytecode[counter + 257] counter += 3 decode_and_execute(byte_1, byte_2, byte_3) ``` ### 解决方案执行 我没有运行恶意软件,而是编写了一个基于 Python 的模拟器 (solver.py) 来静态处理 ram.bin 文件。该脚本模拟了隐藏在字节码中的 XOR 循环,该循环使用存储在数据区的密钥就地解密 flag。 最终 Flag: `FLAG{VIRTUAL-MACHINE-UNDERSTANDING}`
标签:8位虚拟机, CTF解题, DAST, DNS 反向解析, MalwareTech, Python模拟, SecList, x86_64汇编, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码混淆, 仿真脚本, 内存取证, 恶意软件分析, 指令集架构, 自定义VM, 虚拟机分析, 解密算法, 逆向工具, 逆向工程, 静态分析