主密钥是干嘛的?
1 若要创建有效的许可证文件,必须使用与用于生成受.NET Reactor保护的输出相同的主密钥来创建许可证。
2 主密钥是在创建项目时生成的!必须保存该项目才能保留原始密钥。
dll而不是exe
由于使用的是.net6 生成的代码。 而.net6 有跨平台的特性,这里的exe只是一个引导程序,
需要加密的是其对应的dll文件!!!!
.net reactor 插件
.Net Reactor 可以往vs中加入.net reactor 插件,选择自己的vs版本即可!
装好了之后,vs的工具中就会多一个选项,就是 .net reactor 插件:
点击这个按钮,会弹出如下框:
点击了OK之后,此时不会发生任何事情,但是通过git可以发现,工程文件发生变化:
点开工程文件,然后用git进行对比,发现这里多了一句:
有了这句之后,我们再次编译,就会发现此时的生产的dll就已经进行了代码的混淆了!
这就是加了混淆的代码,这些flag源代码都是没有的。
---------------2024年6月21日 补充--------------------
Options参数
参数 | 描述 |
反篡改 | |
-antitamp [1/0] | 此选项可防止受保护的程序集被黑客工具篡改。 [1] = Enable [0] = Disable {default} |
控制流混淆 | |
-control_flow_obfuscation [1/0] | 启用“控制流混淆”来破坏程序流程,使其他人很难理解程序逻辑。 [1] = Enable [0] = Disable {default} |
控制流混淆等级 | |
-flow_level [1/2/3/4/5/6/7/8/9] | 此选项使你可以控制流混淆的级别。“1”表示控制流混淆的最低级别,“9”{默认}表示最强级别。 |
本地EXE文件 | |
-nativeexe [1/0] | .NET Reactor能够为你的应用程序生成本机x86 EXE文件存根。这样就无法在反编译器中直接打开受保护的应用程序。反编译器将受保护的应用程序识别为本机EXE文件。 [1] = Enable [0] = Disable {default} |
NecroBit保护 | |
-necrobit [1/0] | 启用此选项以使用NecroBit保护。NecroBit可以与应用程序和库保护模式一起使用。在库保护模式下,将创建一个附加文件。 [1] = Enable [0] = Disable {default} |
NecroBit /反射兼容模式 | |
-necrobit_comp [1/0] | 如果你在NecroBit保护库上有反射问题,则应启用此选项。 [1] = Enable [0] = Disable {default} |
创建映射文件 | |
-mapping_file [1/0] | 启用映射文件以创建一个文件,该文件使用混淆的名称交叉引用未经混淆的名称,堆栈跟踪反混淆器(Stack Trace Deobfuscator)使用该文件。 [1] = Enable [0] = Disable {default} |
启用混淆 | |
-obfuscation [1/0] | 启用此选项可以混淆所有非公共类和成员名称。 [1] = Enable [0] = Disable {default} |
增量混淆 | |
-incremental_obfuscation [1/0] | 如果你希望.NET Reactor始终为你的类型和成员名称生成相同的混淆字符串,则需要启用此选项。 [1] = Enable [0] = Disable {default} |
排除 | |
-exclude_enums [1/0] | 排除 - 枚举 [1] = Enable [0] = Disable {default} |
-exclude_events [1/0] | 排除 - 事件 [1] = Enable [0] = Disable {default} |
-exclude_fields [1/0] | 排除 - 字段 [1] = Enable [0] = Disable {default} |
-exclude_methods [1/0] | 排除 - 方法 [1] = Enable [0] = Disable {default} |
-exclude_properties [1/0] | 排除 - 属性 [1] = Enable [0] = Disable {default} |
-exclude_types [1/0] | 排除 - 类型 [1] = Enable [0] = Disable {default} |
-exclude_serializable_types [1/0] | 禁用此选项可防止可序列化类型进行混淆处理。 [1] = Enable [0] = Disable {default} |
-regularexpressions | 排除 - 正则表达式 |
混淆公共类型 | |
-obfuscate_public_types [1/0] | 启用此选项可以对程序集中的所有类型和成员名称进行混淆处理。 [1] = Enable [0] = Disable {default} |
使用Uprintable字符 | |
-unprintable_characters [1/0] | 不可打印的字符使用不可打印的字符串来混淆类型和成员名称,但如果程序集必须作为安全代码运行,则不能使用。 [1] = Enable [0] = Disable {default} |
Pre-JIT方法 | |
-prejit [1/0] | 结合Native EXE文件功能和NecroBit,.NET Reactor能够将托管方法转换为REAL x86本机代码。只有不影响运行时和平台行为的方法(如属性getter / setter ...)才会转换为本机代码。 从本质上讲,此功能具有内置的组件修改保护。 [1] = Enable [0] = Disable {default} |
资源加密和压缩 | |
-resourceencryption [1/0] | 启用此选项可压缩和加密嵌入式资源。 [1] = Enable [0] = Disable {default} |
字符串加密 | |
-stringencryption [1/0] | 字符串加密伪装内化文本,使得解密CIL的交互变得更加困难。 [1] = Enable [0] = Disable {default} |
强名称删除保护 | |
-antistrong [1/0] | 此选项启用反强名称删除技术,可防止受保护的程序集被黑客工具篡改。注意:此选项可能会影响受保护程序集的运行时性能。 [1] = Enable [0] = Disable {default} |
Anti ILDASM /抑制反编译 | |
-suppressildasm [1/0] | 启用此选项可使用ildasm.exe工具禁止反汇编为IL。即使此选项设置为FALSE,你的源代码仍然是安全的。 [1] = Enable [0] = Disable {default} |
使用的例子:
2024年6月27日 踩坑记录
之前没有添加参数,发现加密后,程序出现问题:“prism” 框架,无法切换到主界面的问题。
后,我添加了参数:-obfuscation 0 之后,恢复正常。(这玩意儿,默认1!而非0)
最新参数说明,可以看官网文档 Command Line Parameters (eziriz.com)
软件其实可以根据界面自动生成参数!