.net wpf混淆

混淆要求

1、把exe所用到的依赖dll都合并到exe中

2、使用反编译工具无法得到源代码

混淆方式

1、.net Reactor

优点:可以dll到exe中,也能防止反编译,但是要注意Quick Settings尽量勾选完毕

缺点:争对WPF程序无法使用Native EXE File,但是Winform可以

2、Confuser

优点:可以防止反编译,也能防止反编译工具查看程序集名称

缺点:无法把依赖的dll合并到exe中

3、Costura.Fody

优点:可以合并dll到exe中,也能防止反编译,和.net reactor类似,但是可以使用nuget包安装到exe项目中,只需要重新生成一下,就能把其他依赖的dll放到exe中

缺点:反编译不够彻底,反编译工具能看到exe项目的代码,但是不能看到依赖的dll的代码,这个也不错了

总结

推荐使用Costura.Fody+.net Reactor或者Confuser,先合并后混淆exe

部署

主要目的是为了部署,去除多余的.pdb .config .xml文件

1、在sln同级目录下创建Directory.Build.targets文本文件

2、内容如下

csharp 复制代码
   <Project>
     <PropertyGroup Condition="'$(Configuration)'=='Release'">
       <DebugType>None</DebugType>
       <DebugSymbols>false</DebugSymbols>
       <GenerateDocumentationFile>false</GenerateDocumentationFile>
       <DocumentationFile></DocumentationFile>
     </PropertyGroup>
     <Target Name="StripDllConfig" AfterTargets="Build" Condition="'$(Configuration)'=='Release'">
       <ItemGroup>
         <_CfgToDel Include="$(OutDir)**\*.dll.config" />
       </ItemGroup>
       <Delete Files="@(_CfgToDel)" />
     </Target>
     <Target Name="StripSymDoc" AfterTargets="Build" Condition="'$(Configuration)'=='Release'">
       <ItemGroup>
         <_SymToDel Include="$(OutDir)**\*.pdb" />
         <_XmlToDel Include="$(OutDir)**\*.xml" />
       </ItemGroup>
       <Delete Files="@(_SymToDel)" />
       <Delete Files="@(_XmlToDel)" />
     </Target>
   </Project>

3、重新生成

4、注意,一定是Release,debug包需要这些调试文件

5、在使用Inno SetUp软件打包成安装包给客户就好了(百度一下)

6、这样一来,从混淆到部署,应该可以了,如果有软件加密,则采用非对称加密方式,私钥在自己手里面,程序安全性就得到了保障

6、一定不要大意,总有小人搞破坏

相关推荐
玩泥巴的14 分钟前
把AI编码从自由生成到受约束声明:微信生态 .NET SDK 中用源生成器压制 AI 编码幻觉的工程实践
微信·.net·aot·roslyn
Jeff-Tsai25 分钟前
Day 10:多数据库支持:CRUD 与结构升级
.net·架构设计·erp·definition-driven
1-1=01 小时前
C# 特性(Attribute)
c#·.net·.netcore
IT规划师2 小时前
Redis 数据类型全解 - Bitmap 生产实战:把位视图讲准、用对、守住红线(六)
redis·.net
samble19 小时前
从零搭建半导体设备上位机(四):单实例、启动流程与配置文件,App 里那 526 行到底在干什么
wpf·配置文件·单实例
1-1=01 天前
C# 反射
c#·.net·.netcore
一叶星殇1 天前
版本即契约:.NET 6 WebAPI 多版本治理与 Swagger 文档分治实践
mvc·.net
Jeff-Tsai1 天前
Day 9:数据与定义分家,表单不必各自建类型
.net·架构设计·erp·definition-driven
步步为营DotNet1 天前
.NET 可观测性选型:Metrics、ActivitySource、EventSource 到底该用哪个
c#·.net·metrics·可观测性
CSharp精选营1 天前
我把 Ant Design Blazor 翻了一遍:Blazor 中后台组件库到底能不能用
.net·blazor·ant design blazor·中后台系统·mudblazor