首页
社区
课程
招聘
[原创]强命名的延迟与关联在.net程序集保护中的作用及其逆向方法
发表于: 2006-9-15 13:33 15129

[原创]强命名的延迟与关联在.net程序集保护中的作用及其逆向方法

2006-9-15 13:33
15129
private void button1_Click(object sender, EventArgs e)
        {
            a.Class1 newa=new a.Class1();
            newa.showMsg();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            b.Class1 newb=new b.Class1();
            newb.showMsg();
        }

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
2
等我C盘空间超过2G,我也来搞dotNET
2006-9-15 13:43
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
3
同搞同搞
2006-9-15 14:01
0
雪    币: 97697
活跃值: (200834)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
sustain.
2006-9-15 14:10
0
雪    币: 215
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
请问楼主 researcher .net 哪里可以 download ?
2006-9-15 18:00
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
.
关联强名(程序集强名称)并不是这样就可以破解掉的,

单个程序文件如果没有了强名,就无法加载到CLR运行了,而整个程序就报废了,没法在CLR中运行起来。

如果程序因混淆或者Native Code而不能重新反编再编译一次的话,
文中的方法还是不能解决程序集的强名认证问题。只是绕了一圈又回来了。
再就是,商业软件很多自己设置了必须通过强名认证,即强制强名。

解决的方法应该是重新签署新的强名,而不是抹掉强名。
签署新的强名,如果爆破的话,算法不是一般的难,因为不可逆。

个人观点,请指正,贻笑大方了。
2006-9-15 18:54
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
7
嗯,等到不搞不行再搞
2006-9-15 19:11
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
8
多谢lccracker,一直想和你联系,你一直没上

你说的有的地方我也不明白,比如:单个程序文件如果没有了强名,就无法加载到CLR运行了,而整个程序就报废了,没法在CLR中运行起来。
单个程序文件(比如就一个文件的exe),直接用工具去除就可以运行啊。

还有,强制强命名?没接触过。除非程序中有代码进行检测,可这也是能patch的。

lccracker请和我联系,把QQ号发到dotnetreverseteam[at]126[.]com中。


另应观众要求,上传researcher.net(可能早就失传了这个东东,不过可以自己写)
上传的附件:
2006-9-15 20:00
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
搞,搞
2006-9-15 20:24
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
10
刚看到,spices.net加了个"temper-proof",是否所谓的强制命名?还没时间看是啥东东。
2006-9-15 21:03
0
雪    币: 175
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习,真的不错。
2006-9-15 21:21
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
最初由 tankaiha 发布
多谢lccracker,一直想和你联系,你一直没上

你说的有的地方我也不明白,比如:单个程序文件如果没有了强名,就无法加载到CLR运行了,而整个程序就报废了,没法在CLR中运行起来。
单个程序文件(比如就一个文件的exe),直接用工具去除就可以运行啊。

还有,强制强命名?没接触过。除非程序中有代码进行检测,可这也是能patch的。

lccracker请和我联系,把QQ号发到dotnetreverseteam[at]126[.]com中。


根据.NET Framework环境的运行机制,程序员编程时可以给一组相关联的文件签发一个“集体强名称”,大概叫 Group Stronge Signature Name,用来保证这一系列存在调用关系的文件版本能够协调一致,同时可以拒绝不属于该程序集的外部代码调用其内部的未授权私有过程函数来达到非常规之目的。拥有强名的程序集在运行时,必须被加载到CLR中运行。只有具有强名的Assembly才能够被加载到CLR里面去,或者说,运行在CLR中的程序不能调用处在CLR之外的模块。对于单个文件,和这种程序集是不一样的。

强制强名是程序员人为加上了一个对程序进行强制性强名验证的 Method,具体忘了,大家可以去MSDN查查,使用强制验证强名后,通过注册表设定的忽略强名验证设置不再有效。同时加大了反向的难度。当然,这个应该是几个字节就能搞掉的功能。

上面这些不知能不能读明白,因为当时看的是大堆大堆的英文,很多东西都忘得差不多了,有的用汉语不知表达准不准确。其实这些应该都有中文资料,很早了,当时写给程序员学编程的。

还有,
最初由 tankaiha 发布
3、就是利用Patch系统文件的形式。这种形式不推荐,毕竟强命名还有判别版本差异及文件完整性的作用,整个Patch了不大方便。

Patch系统的方法只是去掉了因强名验证加载不到CLR的限制,版本识别机制不会被破坏。如果是商务性应用,机器不会装几个.NET的程序,文件完整性大可不必担心。至于被你破解的程序本身,完整不完整自己都知道。
2006-9-15 22:15
0
雪    币: 174
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了...强贴..以前就在零散的看看.NET..突然对它更有兴趣了..打算深入学习下~!
2006-11-5 02:30
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
对于关联强命名,看起来楼主的办法不太可行,那要如何解决?
2006-12-12 00:36
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
对于dotNet系统机制还不是很清楚
学习
2006-12-12 01:08
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不错学习了。
2009-11-26 14:33
0
游客
登录 | 注册 方可回帖
返回
//