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, 虚拟机分析, 解密算法, 逆向工具, 逆向工程, 静态分析