.net程序源代码如何避免被反编译

C#加壳工具做代码加密保护 当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码、桌面应用程序的 winform 、Unity3d 的逻辑脚本都在使用。C# .net 具备强大的便捷特性,使得开发成本极低。而作为一款.net 语言,也有它让开发者头疼的弊病——非常容易被反编译。市面上的 Dnspy, ILspy,de4dot等工具可以非常容易反编译出被混淆保护的C# .net 程序。 解决方案 深思自... 阅读详情

许多开发人员仍然不知道可移植的可执行文件(PE)文件是可以被编译成可读的源代码。在学习如何防止或使反编译器难以对源代码进行反向编译之前,我们需要了解一些基本概念。


什么是可移植的可执行文件?

当源代码被执行时,它会生成一个可移植的可执行文件。可移植的可执行文件(PE)不是DLL就是EXE。PE文件包含MSIL (Microsoft中间语言)和元数据。MSIL最终由CLR转换为处理器能够理解的本机代码。元数据包含装配信息,如程序集名称、版本、文化和公钥。

如何从DLL或EXE获取源代码?

是的,我们可以从DLL或EXE获取源代码。为了演示这一点,让我们先创建一个简单的应用程序。

打开Visual Studio,创建一个新的项目并选择基于控制台的应用程序。

添加一些简单的代码:

using System; 
namespace MyConsoleApp
{  internal class Program
  {    private static void Main(string[] args)
    {
      Console.WriteLine(PublicMethod());
      Console.WriteLine(PrivateMethod());
    } 
    public static string PublicMethod()
    {      // Your source code here
      return "Public Method";
    } 
    private static string PrivateMethod()
    {      // Your source code here
      return "Private Method";
    }
  }
}

现在编译这个工程,会在bin/debug目录下生成一个exe文件

现在我们试着从EXE文件获取源代码。

首先,打开Visual Studio命令提示符窗口:


键入ildasm 然后点击回车键。 IL DASM is MSIL 是个反编译程序,可以用来查看中间语言。


会打开IL DASM 窗口,现在我们打开刚刚编译生成的Exe文件:


如上图所示,IL DASM会犯编译EXE文件,很多有用的信息可以被查看,尽管它并没有完全提供原始的源代码。我们可以使用市场上免费的反编译器,比如Telerik JustDecompile和Jet brain dotPeek,通过这些工具我们可以将中间语言转换成原始的源代码。

如我们在上面的截图中看到的,当我们打开EXE和Telerik JustDecompile,我们能够看到原始的源代码,这可能致使软件被盗版,最终会对你造成损失。


如何防止EXE和DLL被反编译?


保护EXE和DLL不被反编译到原始源代码的方法称为混淆。有很多付费和免费的软件可以提供混淆代码的功能,让.Net程序集代码变得模糊,不易理解。Dotfucator是一个流行的混淆工具,这工具的社区版是免费的,并且包含在Visual Studio中。如果您有兴趣购买其他版本,请查看此比较。Dofuscator社区版的功能有限,专业版非常昂贵。因此,一般我们不会通过使用他们而获得利润,相反,我们会在混淆问题上花很多钱。


混淆的最好的替代工具之一是ConfuserEx——它是一个完全免费的开源软件。你可以去网上下载。

下载后,将zip解压到一个文件夹中,然后运行ConfuserEx.exe。


将您想要保护的EXE拖放到ConfuserEx中,或者您可以手动选择基础目录、输出目录并添加DDL或EXE。

一旦您完成了设置目录并添加DLL或EXE,请到ConfuserEx的Settings选项卡。您可以向Gobal设置添加规则,也可以为每个DLL或EXE设置单独的规则。

点击“+”按钮,你会看到规则下的“True”。现在点编辑规则(下面的按钮“-”)。

单击编辑规则,将出现一个新窗口,如下所示。点击“+”按钮。

您可以选择不同的方法来增加保护级别。

只选择“Anti - IL Dasm”和“Anti - Tamper”,这足以使它足够强大,阻止反编译。



点击Done后,点击“Protect ”Tab页,然后点击“保护”按钮。

您可以在选择的输出目录中找到受保护的DLL或EXE。


测试运行一下ConfusedEx生成的EXE或DLL,并检查它是否工作正常。现在尝试用反编工具反编译。

正如我们所看到的,由ConfuserEx生成的混乱的DLL或EXE不能再被反编译。

原文地址:

https://www.codeproject.com/Articles/1245244/Protect-your-Source-Code-from-Decompiling-or-Rev



.NET 产品版权保护方案 (.NET源码加密保护) 武汉.NET俱乐部 , 培训讲议点击这里下载 Office版讲义文件.NET 产品版权保护方案 (.NET源码加密保护) 一.   前言大家好,我是康世杰,大家可以叫我Jason。我和大家一样,都是搞技术出身,也未当过讲师,所以口材有限,如果讲得不好之处,还希望大家多多海含,谢谢。今天是我们第一次见面,能认识你们,真的很高兴。下面我们不要耽误大家的宝贵时间,让我们马上开始上课吧。 DotNet 是 阅读详情

相关推荐

C#程序反编译防护工具集

混淆技术(Obfuscation Technology)是一种软件保护技术,其目的是使得软件的逆向工程变得困难,从而增加对软件的保护。在C#程序开发中,混淆技术通常通过代码转换、符号替换等手段使得原本清晰的程序代码变得难以理解,这样即便攻击者获取到了软件的可执行文件,也会因为代码的复杂性而难以进行逆向分析。混淆能够保护程序源代码的逻辑结构不被轻易解读,它适用于各种安全需求场景,从基本的防止软件盗版到保护高度机密的应用程序,如金融和医疗行业的软件系统。

weixin_36277197的博客 865

.net预防反编译

Dotnet是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由DotNet编译器 JIT 解释映象为本机代码并交付CPU执行。它和Java是一种机制的语言。这种语言的优点就是您不需要去考虑您的程序在那里运行,您只需要把功能做出来,虚拟机会在任何地方实现您的功能。这是一个很好的趋势和想法,但虚拟机的中间语言由于带了大量的“元数据metadada”信息,所以也极容易被反编译。 

无名剑 2792

智能车竞赛走马观碑组:赛道元素与目标板识别策略解析

本文深入解析了智能车竞赛走马观碑组别的核心挑战与策略。重点探讨了如何应对PVC赛道的光照、磨损及无边界线等复杂环境,并详细阐述了基于红色引导区的目标板高效识别流程。通过平衡轻量化模型选择、实时决策与精准控制,实现赛道元素适应性与目标板识别策略的优化,为参赛者提供了一套完整的系统集成与实战调参思路。

x8y9z0的博客 458

wpf之编译错误

截图如下: 解决方案如下:按照下面的修改,据说可以 结果如下:

806

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

机械臂速成小指南(七):从旋转矩阵到齐次变换——机械臂位姿的数学表达

本文详细介绍了机械臂位姿描述的数学基础,包括旋转矩阵、欧拉角和齐次变换等核心概念。通过解析旋转矩阵的几何意义和合成方法,以及欧拉角的直观描述,帮助读者理解机械臂位姿的数学表达。文章还探讨了齐次变换在工程实践中的应用,并提供了数值稳定性、坐标系约定和计算效率等实用建议。

cuda7parallel的博客 835

如何保护.net中的dll文件(防止破解、反编译dll)

如何保护.net中的dll文件(防止破解、反编译dll)  http://www.5icoding.com/n16058.aspx  .net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行。中间语言很容易被反编译,所以研究下如何有效的保护dll文件。我大致的方法为 :强签名+混淆+加密。强签名

巴萨,足球的艺术 1457

AGV避坑指南:海康控制系统与Modbus设备对接的那些‘坑’

本文深入解析海康AGV控制系统与Modbus设备对接中的常见问题及解决方案,涵盖通信协议对接、信号干扰、硬件层问题和软件优化策略。通过真实案例和实用技巧,帮助工程师规避典型陷阱,提升系统稳定性和效率。

l3m4n的博客 740

dnspy反编译工具c下载仓库:助力.NET开发者的高效工具

dnspy反编译工具c#下载仓库:助力.NET开发者的高效工具 【下载地址】dnspy反编译工具c下载仓库 dnspy反编译工具c#版本是一款专为.NET开发者设计的强大工具,能够快速反编译和修改.NET程序源代码。该工具在原有基础上进行了优化,操作更加便捷,适用于多种开发场景。它支持多种.NET程序的反编译,提供直观的...

gitblog_06709的博客 622

别再手动算K值了!ZEMAX中两种锥透镜建模方法详解(标准面 vs. 轴锥面)

本文详细解析了ZEMAX中锥透镜的两种建模方法:标准面与轴锥面。通过对比两者的精度、计算效率和适用场景,帮助工程师在激光整形、光束匀化等应用中做出最优选择,并提供了参数设置和异常排查的实用技巧。

weixin_42548874的博客 320

同物种,不同版本之间的坐标转化

是最常用的工具,如果有可用的链文件,这通常是最便捷的方法。CrossMap是一个功能强大的替代工具,支持多种文件格式和物种。自定义生成链文件适用于没有现成资源的情况,虽然复杂一些,但可以满足特定需求。Ensembl 和 Gramene提供的工具适用于支持的物种,尤其在植物基因组领域可能更具优势。选择合适的方法取决于你正在处理的物种、基因组版本以及现有的资源。

qq_40256654的博客 1852

dnspy反编译工具c 下载仓库

dnspy反编译工具c# 下载仓库 【下载地址】dnspy反编译工具c下载仓库 dnspy反编译工具c#版本是一款专为.NET开发者设计的强大工具,能够快速反编译和修改.NET程序源代码。该工具在原有基础上进行了优化,操作更加便捷,适用于多种开发场景。它支持多种.NET程序的反编译,提供直观的界面和便捷的操作体验,具备代...

gitblog_06750的博客 382

精密加工零件自动报价智能体设计与实现

摘要 本文设计并实现了一个精密加工零件自动报价智能体系统。该系统通过计算机视觉和几何分析技术,自动读取3D图纸(STEP/STL格式),提取影响加工成本的几何特征,实现精准报价。系统采用模块化设计,包含3D模型解析、特征提取、成本计算和报价生成四个核心模块。关键技术包括:使用PythonOCC处理STEP文件,Trimesh处理STL网格;实现体积、表面积、包围盒等基础几何量计算;开发特征提取算法识别复杂曲面、深孔等加工难点;基于规则库进行可加工性评分和成本估算。相比传统人工报价方式,该系统能显著提高报价效

AI的内部世界的博客 111

【C#.NET】监测文件夹里面文件变化情况

如果你看到这段文字,说明您正使用RSS阅读或转自《一棵树-博客园》,原文地址:http://www.cnblogs.com/atree/archive/2011/05/09/net-auto-FileSystemWatcher.html 最近遇到一个项目,在项目之中想监测一个文件夹里面文件的变化情况,另外想做成开机启动,并且能够提醒客户,便于客户做出相应的动作。 在网上搜集了不少的东西,对这个...

weixin_30502157的博客 241

Arcgis使用NDVI值遥感反演叶面积指数(LAI)

经验模型反演操作不难,主要是要多看文献,了解公式。本文中的公式我也不清楚是哪个作物的NDVI和LAI的关系(别人提供的),继续看文献整理吧。后续会在下面罗列更新一下主要公式。

所有专家都曾始于新手 8430

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

.net wpf混淆

推荐使用Costura.Fody方式,更简单,也能防止反编译。

qq_37800416的博客 611

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C#代码如何有效防止反编译破解

1.在编码过程中尽量使用private/internal关键词修饰class、方法和字段名称 2.编码过程尽可能少地使用public修饰class、方法和字段名称 3.避免使用反射和序列化,反序列化操作 4.添加生成事件,调用Dotfuscator 进行代码混淆 if $(ConfigurationName)==Debug "C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator a

DavidLiu的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C# 如何防止反编译?C#程序加密混淆保护方法大全

C# 如何防止反编译?C#程序加密混淆保护方法大全

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 9573

C# : 软件加密机制以及如何防止反编译

背景 .net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行。中间语言很容易被反编译,有必要研究下如何保护dll文件。 常见的反编译工具有很多,比如DotNetReflector就可以反编译 IL ( Intermediate Language ,是指.NET包括C#在内编译后的中间语言)到 C# 。 纵观文献,常用的防止反编译方法:强签名+混淆+加密。 强签名  强命名程序集,可以确保你的程序集唯一,而不被篡改、..

shileimohan的专栏 7353

Obfuscar实战:WPF应用程序混淆完整流程与问题排查

Obfuscar是一款开源的.NET程序集混淆工具,专门为保护.NET应用程序中的商业秘密和知识产权而设计。对于WPF开发者来说,掌握Obfuscar的完整混淆流程至关重要,它能够有效防止反编译工具对代码的逆向分析。 ## 🔍 为什么WPF应用需要代码混淆? WPF应用程序通常包含大量的业务逻辑、数据绑定和用户界面代码,这些代码一旦被反编译,核心算法和商业秘密将完全暴露。Obfuscar通过

gitblog_00047的博客 523

c#写的代码如何防止被反编译

与此同时,无法确保下载的软件是否是破解版。如果你下载的软件没有来自官方渠道,就存在一定的风险,可能是破解版或者携带有恶意软件。如果从非官方渠道下载软件,存在一定的风险,可能会下载到破解版或者携带有恶意软件的软件。:将程序的关键部分依赖于特定的硬件信息,比如CPU序列号或者硬件加密模块,这样即使代码被反编译,也无法在其他环境中运行。:在代码中添加反调试的技术,当程序处于调试状态时采取相应的措施,比如退出或者改变程序行为。:将关键的代码逻辑生成为动态的IL代码,并在运行时动态加载和执行,使得代码更难以分析。

2243

【.Net】exe加密/加壳工具.Net Reactor

用WPF开发的桌面应用,编译后得到的项目启动项exe文件是未加密的,使用ILSpy等反编译工具能够直接看到该exe内的文件源码! 如下图: 可以使用.Net Reactor(有破/解版)等工具对exe文件进行加密。 官网 http://www.eziriz.com/dotnet_reactor.htm 使用教程 http://www.liangshunet.com/ca/201404/9341...

weixin_34235105的博客 423

.NET单机软件保护策略(1)防反编译

.NET单机软件的保护有两大难点,分别是: 编译的结果不是机器码,而是IL代码,反编译非常容易。 不联网的软件没听说过不能破解的。 所以,我们的保护策略也不是说绝对的安全,只是能防多少是多少。 首先对于第一点,我们先看一个例子,以产生直观的感受。假设我们写了一个简单的软件,代码如下所示: static void Main(string[] args) { if (!CheckVerify("my_password")) { return;

lweiyue的专栏 1696

2020最新版Net加壳工具

Virbox Protector 发布最新版本 Net加壳工具:Virbox Protector 2 . Virbox Protector 为.NET Framework编写的软件做代码保护,防止代码被反编译,防止 IL 代码在内存被 Dump。同时可配合授权产品实现软件的许可管理。 加密技术 Virbox Protector .NET版通过多种保护方式来防止反编译,加密后可让任何现有工具都无法反编译。 JIT 加密 将 .NET 所有方法的 IL 指令经过加密,仅在 .NET 虚拟机进行 J.

Firshare-分享值得的分享 2988
上一篇: 微服务架构与传统SOA几个主要区别
下一篇: 企业进军区块链的七个问题
codinghello
博客等级 码龄25年 47粉丝 33原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值