-
-
[分享].net 传统名称混淆的最高境界。。。
-
发表于:
2006-2-12 00:22
4789
-
我本来是想学Dotfuscator玩玩混淆,因为他经常给我混出来废品。通过他的生成日志应该是ildasm反汇编,字串替换,再ilsam编译。我没这么多闲工夫,因为我的目的很简单,只是替换命名,应该把编译出来的exe里面的字串换掉就行了。
省略无聊的多次UltraEdit尝试,我发现把名称全擦成零照样运行!
主要用名称的有TypeDef MethodDef FieldDef ParamDef表,TypeDef里的TypeNamescope照样可以擦,EventDef和PropertyDef里面也有名称,我还没尝试。
Exe文件,TypeDef MethodDef FieldDef 里面除了SpecialName 和 RTSpecialName 以外都能擦,ParamDef应该可以全灭。
Dll嘛,要被引用的就不要擦了(废话),根据可见性来区分擦不擦也是一种方法。
还有一点,实现接口的名称不能改,比如从Stream继承出的类,Write等方法的名称不能擦,擦了就“不会实现xxx了”。
用0擦光后(别把其他Table要用的字符串也干了,相同字符串是合并一起使用的),用Reflector打开,大片的空白,看起来比Relector4.2的Unicode方框混淆还爽~ 点下Derived Types,Reflector就没响应了。。。
如果愿意,还可以修改各个要混淆的表行里的索引列,挖掉可能存在的顽固分子~最后,如果有StrongName记的StrongNameSignatureGeneration重签一下。
连 ~String内容 带 索引 我都给你干成0x00了,还有比这更高的手段吗,大家来聊聊。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课