首页
社区
课程
招聘
[分享].net 传统名称混淆的最高境界。。。
2006-2-12 00:22 4355

[分享].net 传统名称混淆的最高境界。。。

2006-2-12 00:22
4355
我本来是想学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了,还有比这更高的手段吗,大家来聊聊。

[培训]《安卓高级研修班(网课)》月薪三万计划

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JasonNET 2006-2-12 00:59
2
0
贵兄此方法,问题N多。。。 一年前我就做过,曾经 MaxtoCode 也加过此功能。
不过问题太多了,实在不能用,所以就去掉了

混淆,还是使用专业的混淆软件好,因为你不知道,在。net 里,许多 String 是 Shared 的,这样会产生许多问题
雪    币: 222
活跃值: (72)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
Bi11 2 2006-2-12 11:53
3
0
最初由 JasonNET 发布
贵兄此方法,问题N多。。。 一年前我就做过,曾经 MaxtoCode 也加过此功能。
不过问题太多了,实在不能用,所以就去掉了

混淆,还是使用专业的混淆软件好,因为你不知道,在。net 里,许多 String 是 Shared 的,这样会产生许多问题


我的作法是将#~里面用到的字符串索引全列出来,将要混淆的索引去掉,其余的索引原样复制回去(从原来的索引复制到0结束),这样就不会产生共享的问题了。

#String 除了 #~里面引用, 还有别的地方引用吗,我还真没仔细查。如果除了#~还有别的地方引用#String,还请指点,我才开始玩.net没多久。
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JasonNET 2006-2-12 18:09
4
0
找个大的程序一试便只
雪    币: 222
活跃值: (72)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
Bi11 2 2006-2-12 22:57
5
0
不是自己写的也不清楚什么地方用了Reflect,随便擦了肯定玩完。
游客
登录 | 注册 方可回帖
返回