一些商业混淆器声称他们可以崩溃ILDASM(以及其他类似工具,如Reflector)
关于他们如何实现这一点的任何想法
正如在这里的众多主题中所述,有足够动力/时间/技能的人总能找到一种方法来阅读你的代码(即如果它是可运行的,它是可以反编译的),但在我看来,大多数随意的代码阅读器都不会打扰我的反编译如果Reflector无法为它们执行代码.
这个级别的保护我的知识产权(即,除了那些可能会找到解决方法的人之外,任何人都可以找到解决方法)对我来说肯定是足够的.
有些可能会引入CLR能够运行但ILDASM等无法处理的无效IL.在我看来这是一个坏事 - CLR可能会在未来抱怨它.
其他的可能会创建有效的IL,由于在某种程度上意外,它恰好碰到了ILDASM和Reflector.作为一个愚蠢的例子,假设一个标识符包含一个不可打印的字符.根据我的记忆,这是有效的,因为CLR将标识符视为不透明的blob,但尝试显示它们的东西可能会失败.这可能只是一个临时的帮助 - 虽然ILDASM经常不更新,但Reflector经常更新,我希望开发人员在发现它们时能解决这类问题.
有助于防止高级反编译而不是反汇编的第三种方法是创建IL,它在C#/ VB中没有明显的模拟,但是完全有效.实际上,迭代器块有时已经这样做了(看近文章的底部).
我希望任何合法的,保证可以运行的东西可以在现在或至少某个时间被拆卸(urgh).现在崩溃反射器(或者更确切地说,当编写营销模糊时)并不是未来崩溃的良好迹象.