.Net“破解”新招——如何使用不带私钥的程序集?
来源:互联网 发布:centos防火墙配置文件 编辑:程序博客网 时间:2024/06/07 14:17
关键字:.net,程序集,破解,crack,StrongKey,强名称,签名,公钥,私钥,DevExpress,DXperience
看来是时候要专门写一篇文章来说明一下如何使用不带私钥的程序集了。最近发布了 DevExpress.NET.v3 for 2003汉化包 和 DXperience 6.2.4-2005破解研究 这两篇文章中,都间接地提到了“使用了不带私钥的程序集”,引起了一些网友的关注。
如果阁下对本文中某些术语不了解,可参考相应的网页:
◆ 具有强名称的程序集
◆ 如何:对程序集进行签名 (Visual Studio)
◆ 如何:延迟为程序集签名 (Visual Studio)
◆ 全局程序集缓存
◆ 全局程序集缓存工具 (Gacutil.exe)
◆ 强名称工具 (Sn.exe)
不带私钥的程序集的由来:
◆ 在项目中使用了延迟签名选项 [assembly: AssemblyDelaySign(true)],项目生成的文件不具有私钥;
◆ 由 ildasm 工具反汇编生成的 .IL 文件,再由 ilasm 编译后,生成的文件不具有私钥;
◆ 由其它汉化工具,如 Passolo、Visual Localize等,汉化后成生的本地资源文件程序集不具有私钥;
◆ 使用了由 sn -e 选项提取出来的公钥文件;
◆ 其它途径……
在 具有强名称的程序集 网页中,我们可以看到以下描述:
强名称依赖于唯一的密钥对来确保名称的唯一性。任何人都不会生成与您生成的相同的程序集名称,因为用一个私钥生成的程序集的名称与用其他私钥生成的程序集的名称不相同。
强名称保护程序集的版本沿袭。强名称可以确保没有人能够生成您的程序集的后续版本。用户可以确信,他们所加载的程序集的版本出自创建该版本(应用程序是用该版本生成的)的同一个发行者。
强名称提供可靠的完整性检查。通过 .NET Framework 安全检查后,即可确信程序集的内容在生成后未被更改过。但请注意,强名称中或强名称本身并不暗含信任级别,例如由数字签名和支持证书提供的信任。
好了。看到以上信息,我们似乎对此应该止步了。但 强名称工具 (Sn.exe) 中下面的话更让我们急流勇进: -Vr assembly [userlist] [infile] 注册 assembly 以跳过验证。或者,可以指定用逗号分隔的用户名列表。如果指定 infile,则验证保持启用,但 infile 中的公钥将用于验证操作。可以 *, strongname 的形式指定程序集,以注册所有具有指定强名称的程序集。 Strongname 应指定为十六进制数字的字符串以表示标记形式的公钥。参见 -t 和 -T 选项以显示公钥标记。 仅在开发期间使用此选项。将程序集添加到跳过验证列表会产生安全漏洞。如果将某程序集添加到跳过验证列表中,则恶意的程序集可以通过使用该程序集的完全限定程序集名称来隐藏身份,完全限定程序集名称由程序集名称、版本、区域性和公钥标记组成。这使恶意程序集也可以跳过验证。
警告
看到没?sn -Vr 就是我们的突破口。即然有了眉目,OK,行动吧!!!
接着 DXperience 6.2.4-2005破解研究 一文继续前进。使用 ilasm 编译后(注意:不要使用 /key 参数),程序集不具有私钥,一般情况下是无法使用的。要使用,就必须在强名称工具中注册为跳过验证。
以下为详细的步骤:
1、打开 SDK 命令提示 窗口,即“开始菜单—程序—Microsoft Visual Studio 2005—Visual Studio Tools—Visual Studio 2005 命令提示”;
2、输入命令“sn -Vr *”,为所有程序集注册了跳过验证;
3、输入命令“gacutil /i <assemblyFile> /f”,将程序集安装到全局程序集缓存;
4、输入命令“sn -Vu *”,注销所有程序集,不跳过验证。
到此,你的程序即已安装到全局程序集缓存中,其它项目便可以使用了,即使你注销了所有的跳过验证,重新启动计算机,该程序集依然有效。你说,这样一来 DXperience 是不是就被“破解”了?
netken
- .Net“破解”新招——如何使用不带私钥的程序集?
- Radmin密码破解的新招
- .net 程序的破解
- 如何防止.net程序被破解
- NET程序集反编译/破解
- VB的程序如何破解
- .NET程序使用资源文件中的光标文件另一招
- 转:NET程序的破解(二)
- 初次接触.NET程序的破解
- 破解一个网络验证的.NET程序
- NET程序的破解(二)
- 一个.net程序的简单破解
- .NET程序的汉化与破解
- 防止.NET程序集被破解办法
- 如何破解PB6.5编译的程序
- ..NET程序破解仅需三步
- 新手破解.NET程序
- 如何保护我们的.NET程序集?
- HTML标记一览
- 解析方法体中的 IL 代码
- 如何拓扑发现路由器,交换机和打印机
- 几个 C++ 的数据结构类(下载)
- library linking on LINUX
- .Net“破解”新招——如何使用不带私钥的程序集?
- 如有DXperience源代碼,如何編譯
- Effective C++之15
- web3.0
- 用js控制表格的隐藏与显示
- MFC中消息循环处理的几个函数之间的区别
- PB 数据窗口中自动显示当前分组的组的行数。
- How Google Works
- asp防盗链