大神论坛

找回密码
快速注册
查看: 1500 | 回复: 0

[原创] 最强混淆工具Eazfuscator.Net2024版无序列号全功能逆向破解爆破实战教程 Eazfuscator.Net破解

主题

帖子

0

积分

初入江湖

UID
786
积分
0
精华
威望
0 点
违规
大神币
68 枚
注册时间
2024-01-20 19:29
发表于 2024-06-09 16:20
本帖最后由 52HB 于 2024-06-09 16:20 编辑

最强混淆工具Eazfuscator.Net2024版无序列号全功能逆向破解爆破实战教程 Eazfuscator.Net破解

目前市场上最强的.Net混淆工具就是Eazfuscator.Net了。我自己试用了一下,感觉挺不错的。
先去官网下载最新的V2024版安装,安装完成后打开,因为我之前装过旧版试用过。这次打开直接就是提示这个了。
点安装License,突然发现自己啥Key都没有。那好吧,本着磨练技术的心态,今天就尝试一下无License全功能暴力破解
用dnSpy启动到入口点看看,发现它跳转到了Gapotchenko.Eazfuscator.NET.dll中,打开这个dll,找到Program下的main方法下断点看看。
反复观察,发现这里如果不执行直接返回默认值0,可以直接进到程序主界面,不再弹出上面的试用结束窗口。
那先改了再说。编辑这个方法的IL,在最前面加上以下IL指令:
0   0000    ldarg.0
1 0001 ldlen
2 0002 brfalse.s 9 (0013) ldc.i4.0
3 0004 ldarg.0
4 0005 ldc.i4.0
5 0006 ldelem.ref
6 0007 ldstr "--no-update-check"
7 000C call bool [mscorlib]System.String::op_Equality(string, string)
8 0011 brfalse.s 11 (0015) call class [System]System.Diagnostics.Stopwatch [System]System.Diagnostics.Stopwatch::StartNew()
9 0013 ldc.i4.0
10 0014 ret

改完后的代码长这样:

改完后,记得保存模块。然后重新启动,发现启动不了。
在程序目录找到Eazfuscator.NET Assistant.exe.config和Eazfuscator.NET.exe.config文件,将其中的bypassTrustedAppStrongNames设置为true保存即可。
再次重新启动,心心念念的主界面来了。可能此代码的作用是,首次运行时不检测是否授权。
很好!万里长征的第一步进展顺利。
拖一个dll进去看看,OMG,上面试用的弹窗又出现了。不要灰心,得想办法再次跳过试用检测才行。
在Program类中搜索Log.Default.Information,在找到的下面方法的其中一个方法调用删除。
if (!Program.\u000E(exportedValue))
{
u000E_u2002_u.\u000E\u2002\u2004\u2009\u200B\u2005\u2005\u000E(); //删除此行调用
注意这里也只能通过编辑方法IL的方式进行删除。 将鼠标置于待删除的方法调用所在行,右键选择编辑IL指令。
首先修改第57行的跳转,将原来跳转到59行改为跳转到61行。 然后删除下述两行指令:
59  00B4    ldloc.2
60 00B5 callvirt instance void '\u000e\u2002\u2004'::'\u000e\u2002\u2004\u2009\u200b\u2005\u2005\u000e'()
保存模块。重新启动,我们再拖个DLL进去看看,发现试用的弹框就完全去掉了,可以无限期试用了。
打开混淆后的dll文件,发现在类的入口点,被加入了下属代码。
点进去,可以看到具体的限制代码有下面两个:
尝试用不同类型的dll和exe文件去尝试混淆,发现最终的限制代码都是类似上面。
接下来,我们需要想办法去掉这些检测代码才行。
那么怎么去除呢? 这个貌似很难!!
不要害怕,思路很重要。回顾一下dll的整个混淆过程,无非就是将目标程序转换为IL后,再加入检测代码,最后再编译回来。
要转换,要加入代码,大概率涉及文件操作。我们不妨在TextWriter的WriteLine/Close/Dispose处下断点。看看写的临时文件在哪个地方。
单步跟踪一下,果然找到了目标路径:"C:\Users\用户名\AppData\Local\Temp\Eazfuscator.NET\Instances\of5lrwos.igu\15usox5o.wuy\Eazfuscator.Net.Test.il" 。
用文件编辑器打开这个路径下的IL文件,也同样发现目标检测代码:
找到这里,剩下的工作其实就简单了。在它生成IL文件后并进行编译之前,我们插一段代码进去,将其检测代码改掉不就可以了。
我们在Gapotchenko.Eazfuscator.NET.dll这个程序集中,用dnSpy点击添加类,类内容如下:
using System;
using System.IO;
using System.Text.RegularExpressions;


namespace EazfuscatorCrack
{
public class ILHandler
{
public static void ChangeILFile(string file)
{
try
{
if (File.Exists(file))
{
var fileChanged = false;
var fileContent = File.ReadAllText(file);
var pattern1 = @"(\.method.+bool.+\(bool.+\).+\n)\{[^\}]*get_UtcNow[^\}]*ldc\.r8\s+-21.[^\}]*AddDays[^\}]*\}";
var match = Regex.Match(fileContent, pattern1);
if (match.Success)
{
fileContent = Regex.Replace(fileContent, pattern1,
@"$1{
.maxstack 5
IL_0000: ldc.i4 0x1
IL_0005: ret
}");
fileChanged = true;
}

var pattern2 = @"(\.method.+void.+\(\).+\n)\{[^\}]*get_UtcNow[^\}]*ldc\.r8\s+-21.[^\}]*AddDays[^\}]*\}";
match = Regex.Match(fileContent, pattern2);
if (match.Success)
{
fileContent = Regex.Replace(fileContent, pattern2,
@"$1{
.maxstack 5
IL_0000: ret
}");
fileChanged = true;
}

if (fileChanged)
{
File.WriteAllText(file, fileContent);
}
}
}
catch
{
}
}
}
}
然后保存模块。然后在前面找到的定位点方法处,插入这段处理。
将鼠标放到最后面的\u000E = text4;这里,点编辑IL指令。
在最后的ret指令的前面按三个F插入3行,分别写上下述指令:
ldarg.1
ldind.ref
call void EazfuscatorCrack.ILHandler::ChangeILFile(string)

改完后,代码变成这样了。

点击保存模块。重启应用看看最终效果。
注意这个WARNING文本,其实也是能去掉的,有兴趣的话,可以去去除。我这就懒得弄了,反正不影响最终的功能。
我们拖个DLL进去看看最终结果吧。
效果很完美。大功告成!!

注:若转载请注明大神论坛来源(本贴地址)与作者信息。


返回顶部