ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 8568|回复: 8

关于VSTO 加载项的破解

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-21 17:23 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:VSTO开发
本帖最后由 liucqa 于 2013-5-25 22:15 编辑

大家都知道,.net程序最大的问题是源代码不能保密,vsto开发的程序,自然存在这个问题。


(具体技术不方便公开 ,大家可以看这个样例及破解后的图片。已删除)

下面俺就简单讲一下原理:

1、vsto的部署是通过程序集清单文件(manifest)来进行的,在msdn上可以找到相关的文章。
http://msdn.microsoft.com/zh-SG/library/bb757477%28v=vs.90%29.aspx
程序集的清单均执行以下功能:
    枚举构成该程序集的文件。
    控制对该程序集的类型和资源的引用如何映射到包含其声明和实现的文件。
    枚举该程序集所依赖的其他程序集。
    在程序集的使用者和程序集的实现详细信息的使用者之间提供一定程度的间接性。
    呈现程序集自述。

程序集名称、版本号、区域性和强名称信息构成了程序集的标识,vsto正是通过这个程序集清单文件来识别vsto程序的合法性的。

程序集清单文件替代的以前的dll注册,避免了不同版本之间的冲突。但是,由于程序集清单文件是个文本文件,造成手工替换相关信息成为可能。

2、vsto的合法性检验
普通的vsto程序合法性检验是通过强名称进行的,如果你在开发程序的时候,给你的程序指定的snk,那么这个强名称就会成为识别程序合法性的依据。
强名称签名是在.NET Framework的一个标识结构标识的程序集。            
它通常用于验证从已传递的数据完整性的公钥数字签名(签名者)以使收件人(满足)。  此签名用作一个唯一标识为引用的程序集并确保程序集不是明确。  程序集签名作为生成过程的一部分然后验证了何时加载。  
强名称签名帮助防止恶意用户篡改程序集然后重新签名程序集与原始签名者的键。            
但是,强名称密钥不包含有关出版商的任何可靠信息,也不包含一个证书层次结构。强名称签名不保证对程序集进行签名或指示人员的可信度该用户是否为键的合法所有者;它仅指示键的所有者签名的程序集。  因此,建议不要使用强名称签名为安全验证程序。信任第三方代码。  
Microsoft Authenticode是推荐的使用方式验证代码。


  
      
创建强名称程序集,看这个链接
http://msdn.microsoft.com/zh-cn/library/vstudio/xwb8f617.aspx


3、由于强名称不具备第三方检验的能力,所以更换强名称就可以突破vsto程序的安全性检查(在没有数字签名的情况下)


更换强名称破解vsto程序的步骤:
1、反编译并修改你要破解的程序il代码,并保存成一个新文件
2、创建一个强名称签名,即snk文件
3、给新文件更换强名称
4、在.manifest文件和.vsto文件中将原来的强名称替换成新的强名称


具体技术不做详细阐述。涉及到的知识包括:反编译、il代码、强名称重签、vsto的加载过程



如果要保证你的程序不被非法破解,建议采用第三方的数字证书和强名称代码签名,并在你的代码中对此做检验,具体技术比较复杂。

ClickOnce安全和部署
http://msdn.microsoft.com/zh-cn/library/vstudio/t71a733d.aspx


下面这个链接介绍了数字证书的知识
http://msdn.microsoft.com/zh-cn/library/vstudio/ms172240%28v=vs.100%29.aspx
“Authenticode”是一种 Microsoft 技术,该技术使用行业标准的加密技术,采用数字证书对应用程序代码进行签名,数字证书用于验证应用程序发行者的真实性。  通过对应用程序部署使用 Authenticode,ClickOnce 可降低特洛伊木马程序入侵的风险。特洛伊木马程序是一种病毒或其他有害程序,恶意第三方将其伪装为来自已确认且可信任的源的合法程序。  用数字证书为 ClickOnce 部署签名是一个可选步骤,用于验证是否未篡改程序集和文件。







  


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-21 18:02 | 显示全部楼层
看俺写的破解步骤,感觉像是有人问:
怎么把大象塞进冰箱?答:把冰箱门打开,把大象塞进去,把冰箱门关上!


哈哈

TA的精华主题

TA的得分主题

发表于 2013-5-21 19:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-6-19 08:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-6-19 08:48 | 显示全部楼层
yaa5.zip (68.77 KB, 下载次数: 64)

TA的精华主题

TA的得分主题

发表于 2013-6-19 08:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-19 11:49 | 显示全部楼层
wqfzqgk 发表于 2013-6-19 08:49
看看这个破解后是什么

Reactor 4.2混淆

里面没啥值得看的代码呀

Private icontainer_0 As IContainer
    <AccessedThroughProperty("Button1")> _
    Private ribbonButton_0 As RibbonButton
    <AccessedThroughProperty("Button4")> _
    Private ribbonButton_1 As RibbonButton
    <AccessedThroughProperty("Button3")> _
    Private ribbonButton_2 As RibbonButton
    <AccessedThroughProperty("Button2")> _
    Private ribbonButton_3 As RibbonButton
    <AccessedThroughProperty("CheckBox1")> _
    Private ribbonCheckBox_0 As RibbonCheckBox
    <AccessedThroughProperty("Group1")> _
    Private ribbonGroup_0 As RibbonGroup
    <AccessedThroughProperty("Tab1")> _
    Private ribbonTab_0 As RibbonTab

几个按钮而已

TA的精华主题

TA的得分主题

发表于 2013-7-10 16:49 | 显示全部楼层
Net代码显然都可以被破解这个10年前就已经有人完全证明了,这个代码在内存中运行的时候 几乎就是明文了,工具已经不在少数了,
防止被破解需要依靠更为灵活的算法,在更多的函数中周旋,破解者只是懂得修改检测标志,而不懂数学!一名合格的Cracker需要把算法写出来,而不是做一个Path.

点评

希望更多知识,请去看雪论坛  发表于 2013-9-23 09:48

TA的精华主题

TA的得分主题

发表于 2015-11-9 16:13 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天学会一个新技能

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2019-8-26 14:53 , Processed in 0.102882 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表