JIEJIE.NET:一个功能强大、轻量级、快速的 .NET 程序集混淆工具
				
									
					
					
						|  | 
							admin 2025年9月11日 20:49
								本文热度 1457 | 
					
				 
				项目介绍
JIEJIE.NET 是一个功能强大、轻量级、快速的 .NET 程序集混淆工具,适用于需要保护其软件版权的开发者。通过提供多种混淆和保护功能,JIEJIE.NET 可以有效防止软件被破解和非法复制,保障开发者的经济利益。同时,作为开源工具,JIEJIE.NET 可以免费使用和修改,适合各种规模的开发者使用。
开发背景
许多.NET 开发者担心他们的软件被破解,版权被侵犯,因此他们使用一些工具来混淆 IL 代码,比如 PreEmptive dotfuscator。但有时候,这还不够。
适用场景
- 软件版权保护: 开发者可以使用 JIEJIE.NET 对其 .NET 程序集进行混淆,增加软件逆向工程的难度,从而保护其软件版权。
- 商业软件安全: 对于商业软件,使用 JIEJIE.NET 可以有效防止软件被破解和盗版,保障开发者的经济利益。
- 敏感信息保护: 混淆后的程序集可以隐藏内部的实现细节和敏感信息,如算法、密钥等,提高软件的安全性。
效果展示


方法混淆前后对比
混淆前
public int RemoveByControl(object control)
{
    if (control == null)
    {
        throw new ArgumentNullException("control");
    }
    if (CheckOwner() == false)
    {
        return -1;
    }
    int result = 0;
    lock (this)
    {
        for (int iCount = _Tasks.Count - 1; iCount >= 0; iCount--)
        {
            if (_Tasks[iCount].Control == control)
            {
                _Tasks.RemoveAt(iCount);
                result++;
            }
        }
        if (_CurrentTask != null && _CurrentTask.Control == control)
        {
            _CurrentTask = null;
        }
    }
    return result;
}
混淆后
public int RemoveByControl(object control)
{
 //Discarded unreachable code: IL_000b, IL_0073
 //IL_000b: Incompatible stack heights: 1 vs 0
 //IL_0073: Incompatible stack heights: 1 vs 0
 int num = z0ZzZzgw.z0kh;
 bool flag = default(bool);
 int num4 = default(int);
 int result = default(int);
while (true)
 {
  switch (num)
  {
  default:
  {
   if (control == null)
   {
    throw new ArgumentNullException(z0ZzZzow.z0rj);
   }
   if (!z0rk())
   {
    goto IL_0049;
   }
   int num2 = 0;
   z0ZzZzjw.z0uk(this);
   try
   {
    int num3 = z0ZzZzgw.z0ah;
    while (true)
    {
     switch (num3)
     {
     default:
      num2++;
      goto IL_0097;
     case 3:
      if (flag)
      {
       z0ik = null;
      }
      break;
     case 4:
     case 5:
      {
       num4 = z0bk.Count - 1;
       goto IL_009e;
      }
      IL_009e:
      if (num4 < 0)
      {
       flag = z0ik != null && z0ik.Control == control;
       num3 = z0ZzZzgw.z0wj;
       continue;
      }
      if (z0bk[num4].Control == control)
      {
       z0bk.RemoveAt(num4);
       num3 = z0ZzZzgw.z0sh;
       continue;
      }
      goto IL_0097;
      IL_0097:
      num4--;
      goto IL_009e;
     }
     break;
    }
   }
   finally
   {
    Monitor.Exit(this);
   }
   result = num2;
   break;
  }
case 0:
case 1:
case 3:
   break;
  }
break;
  IL_0049:
  result = -1;
  num = z0ZzZzgw.z0wj;
 }
return result;
}
开源地址
https://github.com/dcsoft-yyf/JIEJIE.NET
阅读原文:原文链接
该文章在 2025/9/12 11:31:24 编辑过