項(xiàng)目介紹
JIEJIE.NET 是一個(gè)功能強(qiáng)大、輕量級(jí)、快速的 .NET 程序集混淆工具,適用于需要保護(hù)其軟件版權(quán)的開(kāi)發(fā)者。通過(guò)提供多種混淆和保護(hù)功能,JIEJIE.NET 可以有效防止軟件被破解和非法復(fù)制,保障開(kāi)發(fā)者的經(jīng)濟(jì)利益。同時(shí),作為開(kāi)源工具,JIEJIE.NET 可以免費(fèi)使用和修改,適合各種規(guī)模的開(kāi)發(fā)者使用。
開(kāi)發(fā)背景
許多.NET 開(kāi)發(fā)者擔(dān)心他們的軟件被破解,版權(quán)被侵犯,因此他們使用一些工具來(lái)混淆 IL 代碼,比如 PreEmptive dotfuscator。但有時(shí)候,這還不夠。
適用場(chǎng)景
- 軟件版權(quán)保護(hù): 開(kāi)發(fā)者可以使用 JIEJIE.NET 對(duì)其 .NET 程序集進(jìn)行混淆,增加軟件逆向工程的難度,從而保護(hù)其軟件版權(quán)。
- 商業(yè)軟件安全: 對(duì)于商業(yè)軟件,使用 JIEJIE.NET 可以有效防止軟件被破解和盜版,保障開(kāi)發(fā)者的經(jīng)濟(jì)利益。
- 敏感信息保護(hù): 混淆后的程序集可以隱藏內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)和敏感信息,如算法、密鑰等,提高軟件的安全性。
效果展示


方法混淆前后對(duì)比
混淆前
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;
}
開(kāi)源地址
https://github.com/dcsoft-yyf/JIEJIE.NET?
閱讀原文:原文鏈接
該文章在 2025/9/12 11:31:24 編輯過(guò)