本帖最后由 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进去看看最终结果吧。 效果很完美。大功告成!!
注:若转载请注明大神论坛来源(本贴地址)与作者信息。
|