首页
社区
课程
招聘
[求助]某.net控件的试用30天+强命名限制
发表于: 2014-9-10 15:17 4785

[求助]某.net控件的试用30天+强命名限制

2014-9-10 15:17
4785
这个控件有人在论坛理讨论过,小白还是没能去掉强命名
控件名字:SpreadsheetGear.dll,http://bbs.pediy.com/showthread.php?t=102233

请各位大神帮忙看看.

[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
收藏
免费
支持
分享
最新回复 (8)
雪    币: 8874
活跃值: (3951)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
回头下载看下,2009的版本应该不难
2014-9-10 23:27
0
雪    币: 23
活跃值: (198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大侠们帮着看看,感谢了!
2014-9-11 10:20
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
首先使用Reflector对该程序进行反编译,虽然该程序集使用了名称混淆技术,但只要耐心分析还是可以找到判断有效期的位置的。你也可以先使用Dis#对它进行反混淆,再和Reflector配合使用找到判断有效期的位置。

     然后就可以用.net自带的工具ildasm对它进行反汇编,以SpreadsheetGear为文件名把它转储到一个新建文件夹,我这里保存在C盘下名称为S的新建文件夹,再打开C:\S目录就可以看到刚才输出的所有文件。这时咱们只要修改SpreadsheetGear.il文件就行了,用普通的文本编辑器找开它,最好使用UltraEdit,这样快一些。

     下来就是去除强名称签名,强名称按照微软MSDN上介绍就是:

     
强名称是由程序集的标识加上公钥和数字签名组成的。其中,程序集的标识包括简单文本名称、版本号和区域性信息(如果提供的话)。强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。Microsoft® Visual Studio® .NET 和在 .NET Framework SDK 中提供的其他开发工具能够将强名称分配给一个程序集。强名称相同的程序集应该是相同的。

通过签发具有强名称的程序集,您可以确保名称的全局唯一性。强名称还特别满足以下要求:

强名称依赖于唯一的密钥对来确保名称的唯一性。任何人都不会生成与您生成的相同的程序集名称,因为用一个私钥生成的程序集的名称与用其他私钥生成的程序集的名称不相同。

强名称保护程序集的版本沿袭。强名称可以确保没有人能够生成您的程序集的后续版本。用户可以确信,他们所加载的程序集的版本出自创建该版本(应用程序是用该版本生成的)的同一个发行者。

强名称提供可靠的完整性检查。通过 .NET Framework 安全检查后,即可确信程序集的内容在生成后未被更改过。但请注意,强名称中或强名称本身并不暗含信任级别,例如由数字签名和支持证书提供的信任。

在引用具有强名称的程序集时,您应该能够从中受益,例如版本控制和命名保护。如果此具有强名称的程序集以后引用了具有简单名称的程序集(后者没有这些好处),则您将失去使用具有强名称的程序集所带来的好处,并依旧会产生 DLL 冲突。因此,具有强名称的程序集只能引用其他具有强名称的程序集。


只要找到.pulickey={......}然后删除它就行了,如果不去除强名称而修改程序集编译就通不过的。再就是修改有效期那一段IL汇编代码,这一工作需要对.net的IL汇编代码有一定程度的了解才行。修改完成后保存。

     最后通过ilasm进行编译,打开Visual Studio 2005 命令提示,输入如下命令行:ilasm /dll /res:C:\s\SpreadsheetGear.res C:\s\SpreadsheetGear.il,回车后会在C:\S下生成一个SpreadsheetGear.dll,这个就是爆破后的程序集。测试达到预期效果,有效期的限制成功破解。

     新方法:

      1.去除非.pulickey={.....}
      2.修改.assembly SpreadsheetGear.ver 3:1:1:0, 注:最后一位为0
      3.去除检查GetPublicKeyToken部分

参见http://www.cnblogs.com/yangguoyou/articles/1255751.html
2014-9-11 10:40
0
雪    币: 23
活跃值: (198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个帖子我看过,反成IL,没有找到pulickey={.....}

以前讨论的帖子:http://bbs.pediy.com/showthread.php?t=102233

帖子回复提到<这个强名称比较特别,用sn  -Vr  SpreadsheetGear.dll    取消强名称验证即可。>

不知道这位大侠用的用什么工具?
2014-9-11 15:31
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
应该是.net 中的 sn.exe 工具
此工具会自动随 Visual Studio 一起安装。 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示)。 有关详细信息,请参阅 Visual Studio 命令提示。
在命令提示符处,键入以下内容:
sn [-quiet][option [parameter(s)]]

详细使用请参照:
http://msdn.microsoft.com/zh-cn/library/k5b5tt23.aspx
2014-9-12 08:58
0
雪    币: 23
活跃值: (198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢studybird老师的耐心指导.用Visual Studio Tools -->Visual Studio 命令提示(2010)-->sn  -Vr  SpreadsheetGear.dll
强命名去掉了.
我把30天验证改了,没有提示30天试用期过了,但提示输入注册密码,能帮我看看吗
2014-9-12 11:44
0
雪    币: 128
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
称不上老师,也许比你还菜,很抱歉,帮不了你了
2014-9-13 15:31
0
雪    币: 23
活跃值: (198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
经过折腾终于搞定了,谢谢studybird
1.改年限制2010年7月为2111

Friend Shared Sub smethod_3()

                            Class1339.struct86_0.method_29(If((Class1339.int_1 < 100), " Beta", " Evaluation"))
                            Dim now As DateTime = DateTime.Now
                            If ((now.Year >= &H7DA) AndAlso ((now.Year <> &H7DA) OrElse (now.Month >= 7))) Then
2.改试用天不超过30天
                                            End Try
                                            Dim num7 As Double = (Struct9.smethod_8(now.Ticks, False) - num5)   'num7=3
                                            Class1339.int_2 = (-CInt(num7) + 30)
                                            If (num7 >= -1) Then
                                                If (num7 <= 30) Then
                                                    Class1339.bool_5 = True
                                                ElseIf (num7 <= 45) Then
                                                    Class1339.bool_6 = True
                                                End If
3.改运行有1分钟的提示"Please contact SpreadsheetGear to license SpreadsheetGear."透明浮动标签
      
checkShowTrialMessage = False

ElseIf WorkbookView._checkShowTrial30DayMessage Then
      Me.ToolTipManager.method_10(str, "Please contact SpreadsheetGear to license SpreadsheetGear.", &HFA0)
      Dim topLevelControl As Control = MyBase.TopLevelControl

强命名用sn  -Vr  SpreadsheetGear.dll或者RE自带强命名工具也可以删除掉.
2014-9-13 16:41
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册