Skip to content

Commit f0f9bd5

Browse files
committed
修改 encryptionvm.md
1 parent 69672e4 commit f0f9bd5

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

docs/manual/encryptionvm.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,20 @@ Obfuz使用一个确定性的随机算法,根据一个初始的随机种子,
3131

3232
- `EncryptionVMSettings.CodeGenerationSecretKey`中配置这个初始的随机化种子。
3333
- `EncryptionVMSettings.EncryptionOpCodeCount`中配置了加密指令集的指令个数。
34-
- `EncryptionVMSettings.CodeOutputPath`中配置了生成的`GeneratedEncryptionVirtualMachine`类的输出代码文件路径。
3534

3635
EncrytpionOpCodeCount必须为2的幂(如64、128、256、1024),默认值为256。最小值为64,最大值虽然没有限制,但不建议超出1024,因为会导致生成的`GeneratedEncryptionVirutalMachine`类的代码过大。
3736

37+
生成算法会随机出每条指令使用的加密指令原语以及该加密原语的随机化参数。
38+
39+
## 生成 EncryptionVM代码
40+
41+
运行菜单`Obfuz/GenerateEncryptionVM`生成加密虚拟机代码,在`EncryptionVMSettings.CodeOutputPath`中配置`GeneratedEncryptionVirtualMachine`类的输出代码文件路径。
42+
默认生成的代码文件为`Assets/Obfuz/GeneratedEncryptionVirtualMachine.cs`
43+
3844
一般来说,GeneratedEncryptionVirutalMachine需要放到AOT程序集中。这样既提高了加密性能,同时也利用il2cpp会将代码编译为机器指令的特点,增加破解难度。
3945

4046
如果没有任何AOT混淆程序集,GeneratedEncryptionVirutalMachine也可以放到热更新程序集中,这样可以实现最大程度的灵活性,每次发布热更新代码时加密虚拟机都不一样。不过放到热更新代码中
4147
不仅会导致加密性能较差,还容易被逆向,因此不推荐这么做。
48+
49+
建议每次发布新主包时修改`CodeGenerationSecretKey`,生成全新的EncryptionVM,以增大破解难度。如果使用了代码热更新技术且`GeneratedEncryptionVirutalMachine`在AOT程序集中,
50+
那么在发布热更新代码时不要修改`CodeGenerationSecretKey`,否则会导致被混淆的热更新程序集执行解密代码出错!

0 commit comments

Comments
 (0)