zoukankan      html  css  js  c++  java
  • 使用Dotfuscator混淆你的.net程序

    简介

    众所周知C#等net框架的程序是无法防止反编译的,但可以通过混淆,让反编译出来的代码非常难看.
    Dotfuscator是微软推荐使用的第三方混淆器,用来保护你的net程序.可以在安装VS的时候顺带安装它,也可以从官网下载到独立安装包.
    官网

    本文将简单的测试它的效果,并记录测试过程

    首先写段代码用来测试

    新建个winform工程,添加个定时器,设为100毫秒触发一次:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp2
    {
    	public partial class Form1 : Form
    	{
    		public Form1()
    		{
    			InitializeComponent();
    		}
    		private void Form1_Load(object sender, EventArgs e)
    		{
    
    
    		}
    
    		//一段注释
    		private void timer1_Tick(object sender, EventArgs e)
    		{
    			var datetime = DateTime.Now;
    
    			var strprogress = "";
    			var second = DateTime.Now.Second;
    			for (var i = 0; i < second; i++)
    			{
    				strprogress += "■";
    			}
    			Text = $"当前时间为:{datetime.ToString("HH:mm")} {strprogress}";
    		}
    
    	}//End Class
    }
    

    编译出EXE

    用ILSpy打开

    可以看到,代码除了注释,都是可以反编译出来的.

    安装Dotfuscator

    在VS安装工具中找到它

    如果你用的版本和我一样是VS2017的话,你应该能在安装工具里找到这个:

    安装它!

    在VS的菜单中找到它

    上一步完成后,你将发现这里多了这个:

    打开它!

    注册试用版

    第一次运行Dotfuscator会收集你的信息用来注册试用版,你可以在这填写信息,并获取一个注册码(会发到你的邮箱)
    你也可以不填写,也能正常试用Dotfuscator

    混淆过程

    将编译出来的程序添加进去

    左边菜单,点击"输入",将切换到这个界面,点绿色加号,添加文件:

    如果添加文件时,界面显示很奇怪,比如添加的文件不显示,可以试试先保存配置,再读取配置.

    生成

    点击这里,可开始混淆:

    输出目录

    可以看到输入exe所在的目录多了个文件夹

    里面是混淆过的EXE:

    查看效果

    测试混淆的程序是否可正常运行

    尝试反编译


    可以看到 已编译的 .NET 应用内的类型、字段、属性、方法和参数名称 被改成了无法从名字认出作用的符号.
    由于该软件是收费软件,我使用的只是试用版,如果购买正式版,能开放更强的混淆功能,如"字符串加密"等功能.如果有需要,建议使用正式版.

    找一个大点的程序试试

    由于上面使用的程序测试代码比较短,看不出多好的效果,我这找了个相对比较大的net程序,来试试:

    混淆前的代码:

    混淆后的代码

    可以看到很多地方简直面目全非,认不出啥是啥了.给修改带来了很大的困难

  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    22. Generate Parentheses (backTracking)
    21. Merge Two Sorted Lists
    20. Valid Parentheses (Stack)
    19. Remove Nth Node From End of List
    18. 4Sum (通用算法 nSum)
    17. Letter Combinations of a Phone Number (backtracking)
    LeetCode SQL: Combine Two Tables
    LeetCode SQL:Employees Earning More Than Their Managers
  • 原文地址:https://www.cnblogs.com/DragonStart/p/9336300.html
Copyright © 2011-2022 走看看