Visual Studio(VS)发布自动使用Net Reactor给生成的DLL加壳


1. 安装 NET Reactor

 

2. 添加NET Reactor 环境变量

3. 测试加密命令

D盘下dll Reactor目录中有一个测试dll, 

在D:\dll Reactor目录下执行cmd命令 

dotNET_Reactor -file ".\test.dll" -targetfile ".\SecureBin\test.dll" 

执行过程中会有一个弹窗: 

不久后显示加密成功 

用 .net Reflector尝试反编译两个dll 

混淆成功 

 

4. NET Reactor命令行参数 

混淆的时候习惯性的勾选 

查看.net reactor安装目录下的帮助文件 

最终对应命令行如下: 

dotNET_Reactor -file ".\test.dll" -necrobit 1 -control_flow_obfuscation 1 -targetfile ".\SecureBin\test.dll" 

5. 集成到VS2017 

VS项目属性中有生成事件,可写脚本 

这里不适用了,因为在调试状态下是不希望对代码进行加密的,只有在发布后才对dll进行加密 

6. 写批处理脚本,以我手上的项目为例 

web项目,发布在PublishOutput目录中 

在发布目录[PublishOutput]中新建一个文本文档 ,并改名为Reactor.bat 

ECHO OFF 
set rootSource=.\bin 
set rootSecure=.\binSecure 
echo 删除 %rootSource%\*.pdb 
del %rootSource%\*.pdb 
echo 已经删除 %rootSource%\*.pdb 
echo 加密dll %rootSource%\vueAdminAPI.dll %rootSource%\vueAdminCore.dll %rootSource%\vueAdminLog.dll %rootSource%\vueAdminReports.dll %rootSource%\QYWX.dll 
dotNET_Reactor -file "%rootSource%\vueAdminAPI.dll" -satellite_assemblies "%rootSource%\vueAdminCore.dll/%rootSource%\vueAdminLog.dll/%rootSource%\vueAdminReports.dll/%rootSource%\QYWX.dll" -necrobit 1 -control_flow_obfuscation 1 -targetfile "%rootSecure%\vueAdminAPI.dll" 
echo ====================================== 
echo 加密完成 移动 %rootSecure%\*.dll 到 %rootSource%\*.dll 
move /y %rootSecure%\*.dll .\bin\ 
echo 移动完成 
echo 删除 %rootSecure% 
rd /s /q %rootSecure% 
pause 

复制以后注意空格,cmd命令 结尾 处最好 不要有空格,不然会发生异常

如图,第三行结尾处就多了个空格,造成下面Del语句的时候报错

异常信息:

这里应该不提示确认的,而且删除命令执行的有异常,

去除第三行的空格后,执行就正常了

 

当项目重新发布后,执行一下这个脚本,会混淆四个dll,并且替换 

脚本步骤分为: 

1. 删除dll编译带的.pdb文件 

2. 混淆.\bin中指定dll 到.\binSecure目录下 

3. 移动.\binSecure下的dll到.\bin中 

4. 删除.\binSecure目录 

问题处理, 

当再次发布以后,运行reactor.bat,却给出如下报错 

经过分析,得出引起这个报错原因是,尝试加密已经加密过的dll引起的, 

项目发布的时候,如果没有更新的dll不会替换,如图,只修改了vueAdminAPI项目,另外几个dll还是上次加密后的,所以发布后再次加密,只有vueAdminAPI一个是成功的 

解决办法有两种, 

第一种:发布前删除现有文件[不推荐] 

配置发布选项 

这样每次发布的时候会删除发布目录下的所有文件,不推荐理由是很不幸,我的reactor.bat是写在这个目录下,所以每次都被删掉,当然是可以放到目录意外的,不过感觉怪怪的 

第二种,编写VS项目生成事件 

由于每次发布操作,VS都会生成项目 

而VS项目支持绑定生成事件,所以我们在后期生成事件命令中添加一行指令,删除发布文件夹下的bin目录,这样就可以保证每次生成都会重新写入dll 

命令:

rd /s /q $(ProjectDir)\PublishOutput\bin\ 

这样,每次发布后,再加密,也不会报错了 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:DevExpress 组件 历史各版本下载地址【更新:V21.1.5】
下一篇:陈幼坚设计蓝月亮标识
评论列表

#1楼 123 2023-05-09 15:47
VSTO发布的时候加上NET Reactor加密后,客户端安装报错,说被处理的DLL文件打不开
发表评论

评论内容
昵称:
验证码:
验证码
关联文章

Visual Studio(VS)发布自动使用Net Reactor生成DLL
bat脚本:生成项目并自动发布
开源组件:DockPanelSuite(WeifenLuo.WinFormsUI.Docking)Visual Studio风格用户界面 使用
.NET DLL加密代码混淆 Eziriz .NET Reactor
.NET DLL反编译 .Net利器de4dot
Visual Studio(VS) 集成 Git 命令窗口 Git Bash
[.Net] .NET Reactor授权方法 .NET Reactor自定义注册机和获取机器码
Visual Studio(VS)生成错误:尝试访问已卸载 AppDomain。
Visual Studio 一些常用设置
.NET DLL反编译 JustDecompile
.NET Reactor代码混淆注意事项
Visual Studio 2019 远程调试工具(Remote Debugger)
Visual Studio(VS) web停止调试后关闭浏览器配置
解决:旧项目升级新版Unity2021导致Visual Studio无法使用
VS扩展插件推荐:EFCore.Visualizer (免费)
Visual Studio (VS) 使用Gulp报错 ReferenceError: primordials is not defined
LabVIEW生成.NETDLL——C#下调用NI数据采集设备功能一种方法 [原创www.cnblogs.com/helesheng]
未能载文件或程序集“CefSharp.Core.dll”或它某一个依赖项。
.NET Core生成后没有Nugetdll文件
C# 中使用JavaScriptPDF文档设置过期时间

热门标签
.NET Core .NET Reactor ag-grid AI发布 api安全 ASP.NET Core C#DLL加密 C#播放声音 C#代码混淆 C#代码加密 ChromeDriver Codex DateTime DBeaver devexpress devTool DLL混淆 edge.js EF EFCore Electron element-ui el-form el-table excel FastReport FileStream FolderBrowerDialog FolderSelectDialog form提交 git gridcontrol gridview input javascript json字符串 JS转换对象JSON jwt JWT授权 linq log Math MCP mitmproxy MVC MySQL Navicat netstat nginx node_modules NSwag Nuget Nuget镜像 number PowerShell pyinstaller python pythoncom python爬虫 python抓包 pywin32 redis Requests-html RestSharp Selenium sql SQL Server Swagger to-cms Visual Studio VSCode vue VueRouter vue路由 VUE页面通讯 Webpack Windows Windows服务 winform wmi xlrd yaml YESCMS YESWEB开发框架 白象 表单提交 播放声音 打开URL 代码混淆 弹窗提醒 端口占用 对象转换 分布式 公共字典 机器码 进程排查 静态资源 开发指南 路由参数 密钥 配置教程 配置文件 权限 人工智能 任务 任务调度 日期间隔 日志 日志记录 省市区 授权验证 数据库 四舍五入 文案 文件读取 文件夹选择 文件目录选择 问题排查 行政区域数据 页面通讯 中间件 CSharp 事务锁 工单系统 并发控制 重复提交 CMS Markdig Markdown markdown-it marked 技术选型 VS Code 开发工具 源代码管理 版本控制 Docker PostgreSQL 时区 部署排查 CMS架构 EF Core 主题系统 二次开发 插件系统 容器 运维命令 镜像清理 Linux NAS 远程挂载 飞牛 fnOS
联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码