VMP 虚拟化指令流加密

为你的 Lua 源码
套上虚拟机外壳

LutopMoonCrypt 把 Lua 字节码编译进一套随机化的虚拟指令集,密钥与 opcode 映射随构建变体变化。拆包者看到的不是你的代码,而是一堆无意义的字节。

0x59
VMP 指令流加密,取指现场解码,无整段明文窗口
≈85%
函数级虚拟化覆盖率,单函数回退不波及整文件
1.1×
ARM64 真机递归热点性能损耗,最差场景仍低于 2×
8
套独立变体运行时,opcode 映射随构建随机化
PROOF / 实证

同一份 main.lua,加密前后对比。右侧为真实加密产物在编辑器中的样子——容器头、随机化指令流、加密字符串,没有任何可读信息。

main.lua 加密前 · 明文
main.lua 加密后 · VMP
// 真实产物:PXF2 容器 + 0x59 虚拟指令流 + 逐文件子密钥 + 字符串常量加密
DEFENSE / 防线
每一层都按真实攻击路径设计

不堆砌名词。以下每一项都经过拆包、dump、重打包三类实测验证。

01

拆包静态分析 → 无密文以外的东西

全部 Lua 文件为 0x59 VMP 密文,字符串常量单独加密。反编译 APK 看不到一行源码、一个明文串。

02

随机化虚拟指令集 → 没有通用破解工具

opcode 置换与密钥种子随构建随机化。破解者必须先逆向你的 VM 解释器本身,工作量以周计。

03

string.dump 重打包 → 还原不出操作码序

噪声指令做有效操作码归一化与逐字编码,dump 往返后依旧无法恢复原始指令序列。

04

单点击穿 → 不扩散

函数级隔离:个别函数因方言回退原生指令流时,其余函数仍保持 VMP 保护,绝不整文件放弃。

05

逐文件子密钥 → 破一个不等于破全部

密钥按文件名派生,每个文件独立。即使极端情况下单文件被捕获,其余文件仍是黑盒。

06

垃圾指令 + 常量乱序 → 增加逆向噪音

打包端注入不可达垃圾指令并打乱常量表,纯打包端实现,运行时零开销。

ARCHITECTURE / 架构
三层防护,一次打包
L1

字节码混淆层

垃圾指令注入、常量表乱序、跳转修正——在字节码层面先搅浑一次。

obf engine
L2

VMP 指令流加密层

opcode 置换 + 位置相关掩码 + 循环移位,每条指令在取指瞬间现场解码。

0x59 wire
L3

容器加密层

逐文件子密钥 + 随机 nonce 流加密,密钥按文件名派生,文件间互不通用。

per-file key