我一直在尝试反转一些混淆的代码,但我偶然发现了一个棘手的DLL,该DLL在byte []数组中具有“方法体”(IL代码),后来通过动态调用它调用。分析MSIL是这里唯一的方法吗? 您如何处理这些?
我花了数小时在网上研究工具,以使我能够从字节数组中的IL生成C#代码(至少是一些基础知识)。真的没有吗?
ldarg.0
ldarg.1
add
如果那里存在某种东西,那将是很好的,如果像上面这样的基本MSIL可能会生成+ b。
答案 0 :(得分:0)
MZ64,您好,欢迎光临!
不幸的是,您要的是反编译服务/ API /工具,而该工具根本没有内置于.NET框架中。您可能要为此检查各种第三方解决方案。
在过去, .NET Reflector 是用于此目的的#1工具。如今有各种各样的工具,尤其是 dotPeek -Reflector应该仍然存在。您将不得不为其中的大多数支付一些钱,但是您可能会找到一个不错的免费工具(我尝试并失败了)。
但是,如果要将IL代码作为纯文本并尝试运行它,则应使用内置的ILGenerator.Emit()。我能想到的最简单的方法应该是将纯文本映射到OpCode /变量,并逐行发出IL。我不知道是否有帮助,但从理论上讲应该有可能。
看这里的例子: