在前面几章我们已经能够去掉被加密程序原始的IL字节码了。
这些字节码是十六进制的,人脑直接来阅读是非常困难的。
这一章主要介绍将字节码翻译成 可阅读的 MSIL 汇编代码,以及前几章的遗留问题解决。
阅读全文……
MaxToCode 对.Net程序加密的原理及解密探讨四(翻译IL字节码) [ 2006-09-29 | 原创作品 | rick@博客园 ]
MaxToCode对.Net程序加密的原理及解密探讨三(实例解密) [ 2006-09-28 | 原创作品 | rick@博客园 ]
上一回我们试验了通过反射的方式获取method的源代码。
这次我们就用一个实例来演示dump一个程序集中的所有类型和方法的IL源代码。
首先打开VS2005 新建一个C#的windows程序:
在窗体添加添加一个2个 button,2个label,一个textbox,一个 checkbox,一个savefiledialog。
阅读全文……
这次我们就用一个实例来演示dump一个程序集中的所有类型和方法的IL源代码。
首先打开VS2005 新建一个C#的windows程序:
在窗体添加添加一个2个 button,2个label,一个textbox,一个 checkbox,一个savefiledialog。
阅读全文……
MaxToCode对.Net程序加密的原理及解密探讨二 [ 2006-09-14 | 原创作品 | rick@博客园 ]
自上次写第一篇文章到现在不知不觉两个月过去了,这篇文章我们将介绍怎么获取解密后的IL字节代码。
我们先回顾一下前文,在上一回我们提到“InFaceMaxtoCode.Startup 正常启动后,在整个程序集中只会运行一次。”。
当时这种说法是很武断的,如果 “InFaceMaxtoCode.C______(num2, num3)” 的返回值总是 false的话,该函数就会被执行多次,
不过根据后来动态调试的结果,我们证实了“InFaceMaxtoCode.C______(num2, num3)” 的返回值为 true,因此上次的说法是正确的。
阅读全文……
我们先回顾一下前文,在上一回我们提到“InFaceMaxtoCode.Startup 正常启动后,在整个程序集中只会运行一次。”。
当时这种说法是很武断的,如果 “InFaceMaxtoCode.C______(num2, num3)” 的返回值总是 false的话,该函数就会被执行多次,
不过根据后来动态调试的结果,我们证实了“InFaceMaxtoCode.C______(num2, num3)” 的返回值为 true,因此上次的说法是正确的。
阅读全文……