探究——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++而费劲周折? ...
随机推荐
- php发起支付加密数据供获取订单状态使用
<?php//作者主页: https://www.bz80.comnamespace Index\Controller; class PayController extends BaseCont ...
- Unity的Console的控制类LogEntries:深入解析与实用案例
使用Unity Console窗口的LogEntries私有类实现自定义日志系统 在Unity开发过程中,我们经常需要使用Console窗口来查看程序运行时的日志信息.Unity内置的日志系统提供了基 ...
- Tauri-Admin通用后台管理系统|tauri+vue3+pinia桌面端后台EXE
基于tauri+vite4+pinia2跨端后台管理系统应用实例TauriAdmin. tauri-admin 基于最新跨端技术 Tauri Rust webview2 整合 Vite4 构建桌面端通 ...
- 02LED灯
目录 一.LED灯是什么 二.原理图 三.对LED进行操作 1.点亮第一个LED灯 2.LED双数点亮 3.LED流水灯 四.延迟函数的生成 一.LED灯是什么 LED是一个发光二极管,当一段为高电平 ...
- Spring-配置文件(引入其他配置文件,分模块开发)
引入其他配置文件 实际开发,Spring的配置文件内容非常多,这就导致了Spring配置很复杂且体积很大,所以可以将配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载 & ...
- java 线程等待和唤醒方法
java线程状态变迁图 从图中可以看出Java 线程等待方法是将线程从Runnable状态转换为Waiting状态,Java线程的唤醒方法是将线程从Waiting状态唤醒进入Runnable状态 在J ...
- Linux 命令:diff
用途 示例 备注 查看区别 diff file_1 file_2 不加选项 并排输出 diff file_1 file_2 -y -W 50 类似vimdiff 生成patch diff -ruN f ...
- GitLab 无仓库 中了勒索病毒
坑爹的记录一下,并没有解决 Gitlab 昨天(2021-11-29)打开之后看不到项目了,下面这个吊样子 最后发现中病毒了,一堆的这个吊毛文件,复制一个打开看了一下 你别说这个黑客网页写的还不错,这 ...
- git: 解决每次操作git时都要输入账户、密码
解决方案 $ git config --global credential.helper store 使用该命令即可解决问题
- 简述分布式链路追踪工具——Jaeger
1.简介 1.1 Jaeger是什么 Jaeger 是受到 Dapper 和 OpenZipkin 启发的由 Uber Technologies 作为开源发布的分布 ...