探究——C# .net 代码混淆/加壳
背景:
保密。
过程:
先查询一下常见的加壳工具:
- DotFuscator,官方自带,据说免费版混淆程度不高
- Virbox Protector,很好很优秀,但是收费
- NET Reactor,可能会被识别为病毒
- Obfuscar,开源,可以用dotnet tool或项目构建的方式进行使用
那就先用Obfuscar试试水。
方式一:nuget安装(推荐,这种方式可以针对性下载各.net版本对应工具包)
1、在项目中使用nuget安装obfuscar

2、在项目根目录下找到packages\Obfuscar.2.2.38\tools,将Obfuscar.Console.exe拷到要加密文件的文件夹中

3、新建一个Obfuscar.xml 文件放到相同目录下,内容如下:

<?xml version='1.0'?>
<Obfuscator>
<Var name="InPath" value="." />
<Var name="OutPath" value=".\Obfuscar" />
<Var name="KeepPublicApi" value="true" />
<Var name="HidePrivateApi" value="true" />
<Var name="HideStrings" value="true" />
<Var name="UseUnicodeNames" value="true" />
<Var name="ReuseNames" value="true" />
<Var name="RenameFields" value="true" />
<Var name="RegenerateDebugInfo" value="true" /> <Module file="$(InPath)\Logic.dll" /> </Obfuscator>
下图中,Logic.dll是要加密的类库:

4、用命令提示符cmd进入到目录下(可以在cmd里用cd指令跳转,也可以直接打开目标文件夹,然后在上方的文件路径那里直接替换成cmd后enter)

5、执行>Obfuscar.Console.exe Obfuscar.xml

6、在生成的Obfuscar文件夹中可以找到被加壳后的同名Logic.dll

上述得到的Logic.dll即可被其他项目直接引用。
方式二:dotnet tool(.net 6)
1、新建一个Obfuscar.xml 文件放到类库所在目录,内容如下:

<?xml version='1.0'?>
<Obfuscator>
<Var name="InPath" value="." />
<Var name="OutPath" value=".\Obfuscar" />
<Var name="KeepPublicApi" value="true" />
<Var name="HidePrivateApi" value="true" />
<Var name="HideStrings" value="false" />
<Var name="UseUnicodeNames" value="true" />
<Var name="ReuseNames" value="true" />
<Var name="RenameFields" value="true" />
<Var name="RegenerateDebugInfo" value="true" />
<Module file="$(InPath)\PlanManager.dll" />
<Module file="$(InPath)\MapManager.dll" /> <AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\6.0.9\" />
<AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.9\" />
</Obfuscator>
其中,Module对应填入想要加壳的类库,可以添加多行,AssemblySearchPath根据自己.net的路径进行配置。
2、在cmd中进入到上述目录中,执行命令:dotnet tool install --global Obfuscar.GlobalTool
3、在cmd中执行命令:obfuscar.console Obfuscar.xml
4、在上述目录中找到自动生成的Obfuscar文件夹,加壳后的类库就存放在里面,拷贝出来即可使用。
PS:.net6的带WebAPI的exe好像加壳失败,待测试。
方式三:项目构建
1、在csproj 项目文件中添加安装Obfuscar的代码:

<ItemGroup>
<PackageReference Include="Obfuscar" Version="2.2.33">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
2、在项目中添加一个Obfuscar.xml 文件,内容跟方式一的类似,再在csproj 项目文件中设置更新

<ItemGroup>
<None Update="Obfuscar.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
3、在csproj 项目文件中设置自动构建

<Target Name="ObfuscarTask" AfterTargets="AfterBuild">
<PropertyGroup>
<ObfuscateCommand>$(Obfuscar) "Obfuscar.xml"</ObfuscateCommand>
</PropertyGroup>
<Exec WorkingDirectory="$(OutputPath)" Command="$(ObfuscateCommand)" />
</Target>
PS:这种方式还没测试过,待测试
结语:
懒得写。
探究——C# .net 代码混淆/加壳的更多相关文章
- .net破解一(反编译,反混淆-剥壳)
大家好,前段时间做数据分析,需要解析对方数据,而数据文件是对方公司内部的生成方式,完全不知道它是怎么生成的. 不过还好能拿到客户端(正好是C#开发)所以第一件事就是用Reflector编译,但是没有想 ...
- net破解一(反编译,反混淆-剥壳,工具推荐)
net破解一(反编译,反混淆-剥壳,工具推荐) 大家好,前段时间做数据分析,需要解析对方数据,而数据文件是对方公司内部的生成方式,完全不知道它是怎么生成的. 不过还好能拿到客户端(正好是C#开发)所以 ...
- iOS 代码混淆
一般做了防调试的话,被调试进程会退出的,是防动态分析措施. 代码混淆加花这些是防静态分析措施. 反调试是防动态分析措施. 混淆的方法方法名混淆其实就是字符串替换,有2个方法可以,一个是#define, ...
- NET程序的代码混淆、加壳与脱壳
通常我们通过代码混淆.加密的形式达到软件保护的目的.在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆.加密从而实现对核心JS代码的保护.如果没有接触过的可以在这里简单了解一 ...
- .NET DLL 保护措施详解(非混淆加密加壳)
为什么要保护DLL,我就不多说了,各人有各人的理由.总的来说,就是不想核心逻辑泄露及授权验证被破解两大方面的因素.市面上的混淆加密工具对.NET源码保护的效果天差地别,很多网上下到的混淆工具破解版对. ...
- 【腾讯Bugly干货分享】Android Linker 与 SO 加壳技术
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57e3a3bc42eb88da6d4be143 作者:王赛 1. 前言 Andr ...
- AndroidLinker与SO加壳技术之下篇
点此查看上篇<AndroidLinker与SO加壳技术之上篇> 2.4 链接 链接过程由 soinfo_link_image 函数完成,主要可以分为四个主要步骤: 1. 定位 dynami ...
- 【转载】之 破解 (【原创】Xenocode Postbuild 2009 加壳破解 (不断更新中...))
声明 本文转载,感谢原作者dotNetSafe分享 [原创]Xenocode Postbuild 2009 加壳破解 (不断更新中...) http://bbs.pediy.com/showthrea ...
- Android中的Apk的加固(加壳)原理解析和实现
一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...
- Unity3D项目程序加密-VirboxProtector加壳工具
各位Unity3D的开发者,你还为你的代码被反编译而头疼, 混淆和加密已经失效,为内存dump代码而烦恼?是否辛苦制作的游戏被盗版被抄袭而烦恼? 是否害怕算法被别人参考要把算法写成C++而费劲周折? ...
随机推荐
- 基于JavaFX的扫雷游戏实现(一)——整体概述
我在不要更新挑战中坚持了一年,你也来试试吧(咕咕咕)! 好言归正传,本次更新带来的是经典游戏扫雷,基于JavaFX实现.篇幅有限,文章主要介绍核心操作实现,不会列出所有代码.需要完整源码或是想预览 ...
- SpringIoc容器之Aware
1 前言 Aware是Spring提供的一个标记超接口,指示bean有资格通过回调样式的方法由Spring容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一.实际的方法签名由各个子接口确定 ...
- VSCode 编辑器的基本配置
VSCode 编辑器的基本配置 在正式开始本文的内容之前,请允许我先做一些自我介绍: 严格来说,我是个自由职业者,经常会参与一些计算机专著的写作与翻译工作(主要作品如下图所示),业余偶尔也会有一些机会 ...
- CentOS 7 搭建NFS服务器
服务端安装 # 创建挂载目录 cd ~ cd data/ mkdir www-content cd www-content/ pwd # 安装软件 yum install nfs-utils yum ...
- 【技术积累】Vue.js中的事件【一】
Vue中的事件是什么 在Vue.js中,事件是用于处理用户交互的重要机制.Vue.js提供了一系列的事件处理方法和指令,使开发者能够方便地处理用户的各种操作. 1. 事件绑定:Vue.js通过v-on ...
- 用 Golang 从0到1实现一个高性能的 Worker Pool(一) - 每天5分钟玩转 GPT 编程系列(3)
目录 1. 概述 2. 设计 2.1 让 GPT-4 给出功能点 2.2 自己总结需求,再给 GPT 派活 3. 实现 3.1 你先随意发挥 3.2 你得让 Worker 跑起来呀 3.3 你说说 P ...
- Java stream流使用
1.使用filter()过滤List //查找身高在1.8米及以上的学生 List<StudentInfo> boys = studentList.stream().filter(s-&g ...
- linux 脚本:iptables-secure.sh
#!/bin/bash # 2022.2.28 by dewan # secutiry configuration. usage () { echo "$0 start # setup se ...
- 利用python分析pdf数据,分析上市公司财报
import re import os.path import matplotlib import matplotlib.pyplot as plt from pdfminer.pdfparser i ...
- jsp中的一些问题
jsp里的${pageContext.request.contextPath} 在JSP中,${pageContext.request.contextPath}是一个EL表达式(Expression ...