我想制作一个混淆器

时间:2009-09-09 18:26:43

标签: .net edit cil

这是一个两部分问题。但它都与同样的事情有关。

我想使用应用的IL代码来应用补丁。我想知道什么是正确的方法。显然我可以反编译它并读取和编辑il代码文件然后重新编译。但有没有办法在文件中将其作为msil代码读取。并且可能实时编辑它。

我试图编辑可执行文件的反编译代码。但每次我重新编译它都会导致执行问题。就像它再也找不到它的切入点了。我该如何计算?我猜我需要知道命令及其参数的长度,或者使入口点成为Label或其他东西。如果有像这样的Visual Studio模板,我会很高兴。

2 个答案:

答案 0 :(得分:6)

作为已经多次阅读ECMA-335规范的人以两种不同的语言实现了CLI图像加载器(在一次完整的IL分析中),我会说这会对我来说仍然是一项挑战性的任务。我这样说是因为看起来两者都是1)你没有这样做2)你正在寻找一个简单的答案。规范绝对应该是你的起点。

minimal 程序将是:

  • 加载PE图像(exe或dll)
  • 解析所有方法的字节码并解析符号
  • 应用代码转换(当然最小化是单个转换,例如重命名私有方法)
  • 将结果另存为新的PE图像

编辑:这不会让您不必了解.NET程序集的详细结构,但它可以节省您在实际实现中的一些时间,并帮助您将混淆器逻辑与加载器完全分离。

答案 1 :(得分:1)

要阅读MSIL,请确保this thread

ildasm.exe - 中级语言反汇编程序。您可以使用此工具在MSIL级别查看已编译的代码。

可以在Microsoft SDK中找到。