File tree Expand file tree Collapse file tree 8 files changed +93
-7
lines changed Expand file tree Collapse file tree 8 files changed +93
-7
lines changed Original file line number Diff line number Diff line change 2
2
3
3
本工程演示如何将Obfuz与HybridCLR一起使用,完整示例项目参见[ WorkWithHybridCLR] ( https://github.com/focus-creative-games/obfuz-samples/tree/main/WorkWithHybridCLR ) 。
4
4
5
- 详细文档见[ 与HybridCLR协同工作] ( ../manual/work-with-hybridclr ) 。
5
+ 详细文档见[ 与HybridCLR协同工作] ( ../manual/hybridclr/ work-with-hybridclr ) 。
6
6
7
7
## 安装
8
8
Original file line number Diff line number Diff line change 2
2
3
3
本工程演示如何将Obfuz与XLua一起使用,完整示例项目参见[ WorkWithXLua] ( https://github.com/focus-creative-games/obfuz-samples/tree/main/WorkWithXLua ) 。
4
4
5
- 详细文档见[ 与XLua协同工作] ( ../manual/work-with-xlua ) 。
5
+ 详细文档见[ 与XLua协同工作] ( ../manual/xlua/ work-with-xlua ) 。
6
6
7
7
## 安装
8
8
Original file line number Diff line number Diff line change @@ -166,3 +166,13 @@ Obfuz提供了极其丰富的配置选项和灵活的混淆规则配置文件,
166
166
| -| -|
167
167
| Min Instruction Count Of Basic Block To Obfuscated| 被混淆的[ 基本块] ( https://en.wikipedia.org/wiki/Basic_block ) 的最小指令数|
168
168
| Rule Files| 加密规则文件列表。可以为0到多个。如果为空会对所有常量进行混淆。详细配置规则见[ 函数调用混淆] ( ./call-obfuscation ) 。|
169
+
170
+ ### PolyMorphic Dll Settings
171
+
172
+ 多态dll相关设置。 补充文档见[ 多态dll文件] ( ./hybridclr/polymorphic-dll ) 。
173
+
174
+ | 选项| 描述|
175
+ | -| -|
176
+ | enable| 是否开启多态dll支持。开启后会在` HybridCLR/ObfuzExtentions/GenerateAll ` 生成支持多态dll的代码。|
177
+ | codeGenerationSecretKey| 生成多态dll代码时使用的随机化密钥|
178
+ | ** disableLoadStandardDll** | ** 是否禁止加载标准结构的dll** 。开启此项后` Assembly.Load ` 或者` RuntimeApi.LoadMetadataForAOTAssembly ` 必须传入多态dll,如果传入标准dll,会返回错误。|
Original file line number Diff line number Diff line change
1
+ # 多态dll文件
2
+
3
+ 默认情况下` Assembly.Load ` 需要传入标准的dll文件,意味着恶意破解者有办法获得完整的原始dll文件,或者加载恶意的第三方dll,这给开发者带来巨大的安全风险。
4
+ 即使对dll文件进行加密,恶意破解者只要hook了` Assembly.Load ` 入口位置,仍然可以dump出完整的原始dll文件。
5
+
6
+ obfuz通过支持多态dll文件,有效对抗这种dump或者篡改dll的行为。
7
+
8
+ ## 特性
9
+
10
+ - 全新的dll文件结构,无法再被ILSpy等常规dll反编译工具打开。
11
+ - 全新的metadata结构,无法再被轻易还原为原始的CLI metadata数据。
12
+ - ** 支持dll文件结构和metadata结构随机化** ,几十个metadata结构和几百个元数据字段完全随机化,每个开发者的最终dll结构都不一样,巨幅提高恶意破解者的破解成本。
13
+ - 支持禁止加载标准的dll文件,阻止通过调用` Assembly.Load ` 加载恶意dll。
14
+
15
+ ## 设置
16
+
17
+ ` ObfuzSettings.PolymorphicDllSettings ` 中包含多态dll相关设置,详细见文档[ 设置] ( ../configuration ) 。
18
+
19
+ ::: tip
20
+
21
+ HybridCLR自v8.4.0版本起支持自定义dll文件结构,要开启多态dll支持,要求HybridCLR版本不低于` v8.4.0 ` 。
22
+
23
+ :::
24
+
25
+ ### codeGenerationSecretKey
26
+
27
+ codeGenerationSecretKey是生成多态dll代码时使用的随机化密钥。** 请不要使用默认值** ,长度在10以上并且使用较复杂的字符组合。
28
+
29
+ 修改codeGenerationSecretKey后会生成完全不同的dll文件结构,这个文件结构固化在二进制代码中,在发布App后完全固定。
30
+ 发布热更新dll时请** 不要** 修改这个值,会导致加载失败!
31
+
32
+ 建议是发布新App包时更换这个值。如果同时存在多个版本的App包,并想使用相同的多态dll,请保持codeGenerationSecretKey一致。
33
+
34
+ ### disableLoadStandardDll
35
+
36
+ 是否禁止加载标准结构的dll。开启此项后Assembly.Load或者RuntimeApi.LoadMetadataForAOTAssembly必须传入多态dll,如果传入标准dll,会返回错误。
37
+
38
+ 开启此选项可以有效对抗恶意破解者运行时注入第三方dll,因为它们很难构造出符合多态dll结构的dll,大幅提高注入成本。
39
+
40
+ ## 让HybridCLR支持多态dll
41
+
42
+ 已经在` HybridCLR/ObfuzExtension/GenerateAll ` 命令中插入了生成多态dll代码的调用。只要` PolymorphicDllSettings.enable ` 为true就会自动在` GenerateAll ` 时
43
+ 生成相关代码。
44
+
45
+ 如果想主动调用生成,可以调用` ObfuscateUtil::GeneratePolymorphicCodes(string libil2cppDir) ` 函数。
46
+
47
+ ## 生成多态dll
48
+
49
+ 调用` ObfuscateUtil::GeneratePolymorphicDll(string originalDllPath, string outputDllPath) ` 生成多态dll。
50
+
51
+ 普通热更新程序集、DHE程序集、** 补充元数据程序集** 都可以使用多态dll。
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ HybridCLR工作流并未考虑到代码混淆的情况,如果直接使用会
7
7
### 同时安装Obfuz和HybridCLR后dnlib插件冲突的问题
8
8
9
9
Obfuz和HybridCLR插件都包含了dnlib插件。对于Unity 2021及更早版本,当两个package中包含同名插件时会产生错误。
10
- 解决办法为将这两个插件之一(不必两个都改为本地安装)改为本地安装,即将Obfuz或HybridCLR下载到本地 ,移除其中包含的dnlib.dll,再放到Packages目录下。
10
+ 解决办法为将HybridCLR下载到本地 ,移除其中包含的dnlib.dll,再放到Packages目录下。
11
11
12
12
### 被混淆的AOT程序集的裁剪问题
13
13
@@ -38,3 +38,7 @@ obfuz4hybridclr提供了适合混淆工作流的GenerateAll命令,请在构建
38
38
obfuz4hybridclr提供了同时完成编译和混淆热更新代码的命令,请替换` HybridCLR/Generate/ActiveBuildTarget ` 为` HybridCLR/Obfuz/Extension/CompileAndObfuscateDll ` 。
39
39
40
40
如果是代码中调用` HybridCLR.Editor.Commands.CompileDllCommand.CompileDll ` ,则替换为` Obfuz4HybridCLR.PrebuildCommandExt.CompileAndObfuscateDll ` 。
41
+
42
+ ## 使用多态dll
43
+
44
+ 多态dll是一种全新的支持随机化的自定义文件结构,可以有效对抗恶意破解和篡改。详细文档见[ 多态dll文件] ( ./polymorphic-dll ) 。
Original file line number Diff line number Diff line change 4
4
5
5
::: warning
6
6
如果你正在使用HybridCLR,强烈使用` com.cod-philosphy.obfuz4hybridclr ` package,因为它已经提供所有HybridCLR热更新需要的代码,使用更方便简单。
7
- 详细文档见[ 与HybridCLR协同工作] ( ./work-with-hybridclr ) 。
7
+ 详细文档见[ 与HybridCLR协同工作] ( ./hybridclr/ work-with-hybridclr ) 。
8
8
:::
9
9
10
10
## 生成需要被混淆的dll
Original file line number Diff line number Diff line change @@ -20,7 +20,7 @@ xLua注册C#类型时并不是直接使用类型名字符串,而是调用了Ty
20
20
但很显然,如果注册类型很多,极容易写错。另外随着类型名重构,也很有可能忘了同步修改这儿的代码。
21
21
22
22
幸运的是,` ObfuscationInstincts::RegisterReflectionType ` 提供一种非常便捷的注册方式,你使用` ObfuscationInstincts::RegisterReflectionType<My.TestClass>() ` 即可
23
- 正确注册类型名与原始名的映射关系。这其中有一些黑科技,具体原理见[ ObfuscationInstrincts] ( ./obfuscation-instincts ) 。
23
+ 正确注册类型名与原始名的映射关系。这其中有一些黑科技,具体原理见[ ObfuscationInstrincts] ( .. /obfuscation-instincts ) 。
24
24
25
25
::: warning
26
26
Original file line number Diff line number Diff line change @@ -71,8 +71,29 @@ const sidebars: SidebarsConfig = {
71
71
'manual/serialization' ,
72
72
'manual/reflection' ,
73
73
'manual/impact-dll-size' ,
74
- 'manual/work-with-hybridclr' ,
75
- 'manual/work-with-xlua' ,
74
+ {
75
+ type : 'category' ,
76
+ label : 'HybridCLR' ,
77
+ link : {
78
+ type : 'generated-index' ,
79
+ slug : '/manual/hybridclr' ,
80
+ } ,
81
+ items : [
82
+ 'manual/hybridclr/work-with-hybridclr' ,
83
+ 'manual/hybridclr/polymorphic-dll' ,
84
+ ]
85
+ } ,
86
+ {
87
+ type : 'category' ,
88
+ label : 'xLua' ,
89
+ link : {
90
+ type : 'generated-index' ,
91
+ slug : '/manual/xlua' ,
92
+ } ,
93
+ items : [
94
+ 'manual/xlua/work-with-xlua' ,
95
+ ]
96
+ } ,
76
97
'manual/deobfuscate-stacktrace' ,
77
98
] ,
78
99
} ,
You can’t perform that action at this time.
0 commit comments