电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

.NET程序加壳原理

5页
  • 卖家[上传人]:飞***
  • 文档编号:2059614
  • 上传时间:2017-07-19
  • 文档格式:TXT
  • 文档大小:9.40KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、.NET程序加壳原理摘要介绍了软件加壳技术的基本知识,给出了.NET环境下桌面软件的一种新的加壳技术,阐述了在这种技术下,软件发布与用户注册流程与实现的有关技术,最后,给出了加壳了的.NET软件运行时,脱壳的关键技术与实现的部分代码。关键词加壳;脱壳;DLL;DES;NET;MSIL1引言为了保护自己的软件的技术内核不被他人轻易盗用,软件开发人员使用了各种加密技术来保障软件的版权不被侵犯,壳便是我们常用的一种软件保护手段。对于Win32 中软件加壳技术已经有非常成熟的商业产品,然而,对于.NET环境下软件,由于.NET程序的编译结果不是机器语言代码,而是一种MSIL中间代码,因此不能使用传统的加壳技术。目前, 对.NET软件实 加壳的商业软件 要有MaxtoCode, ,SafeNet 出了 软件保护产品 最新的 壳 , 了软件开发商的一 。 壳加密 自 成对 行 件的加密 程, 而 开发商 便 成软件加密权理的 。本 介绍了.NET环境下一种的软件加壳技术,currency1技术使用了“MSIL代码fifl加密 技术, 的软件保护。与MaxtoCode,这种技术的是” 软件非 , 对

      2、机件权(”件 中 不的识,CPU 的序 ,下 ),对于 版, 非本 器的 户 。2 识壳壳是对加密软件的一 的 , ,壳是软件 部的一件 ,是软件的保护 障。有了, 在对软件 编后, 软件的核 代码。壳是一段程序, 于程序运行,壳在运行后 了currency1软件 权,用 保护能对软件行 保护。壳的 原理 是” 运行壳程序,壳 加密的 程序( 程序原来的待加壳的程序,下 )代码解密内存中,运行 中应能,并 程序的 权交还给 程序。本 中研究的加壳技术正是基于这种原理,只是壳 是用.NET编写的,加密与解密密钥与用户的机器件有关,而不是固定的密钥,所 软件非 ,更的保护 。3本加壳技术的原理原来的 程序编译成DLL,再编写一 壳程序,编译成EXE,并 程序的运行入口(main函)移壳中来,由壳开始 行整 程序。首 , 用自编的加密 ,在软件发布前 所有DLL 件分行加密(输入特定的密钥),在壳加载DLL时临时 解密内存中,并加载运行。由于解密DLL的结果只存在于内存,所 解密后的DLL,除非他能 DLL的解密密钥。 时,为了避免分析 壳程序的逻辑, 中寻 解密密钥,还 壳编译成EXE 件

      3、后,再用第三 软件行fifl(”XenoCode)或加密(”MaxtoCode),这样 了解DLL加密的及处理逻辑。 而,更有效保护 程序DLL。加壳与脱壳的原理图1所示。图 1 NET软件加密型加壳的原理4软件发布与用户注册流程为了 广软件,开发商一般会 软件的试用版放在 上, 用户自由下载试用,用户基本 后再注册正式版。软件发布与用户注册的流程图2所示。5软件发布与用户注册的实现5.1 注册申请为了软件 的能,开发商必须为不 的用户不 的 装 件,一套程序只能在一台机器上运行。为此,开发商在 装 件时,必须取 软件 要运行的目标机器的用户的位称,对于有应用程序 器的 版软件,只需要取 应用 器的。据 由用户使用特定的程序取 ,并通 短 或邮件的 式告知开发商。的提取有两种 ” 一,通 软件的试用版。试用版中设申请注册的模块,用户通 此模块提取本机的据。软件的试用版 件的不是 对目标机器的的, 在任何机器上运行。为了Cracker DLL的解密密钥后, 试用版破解。通常 对试用版软件设置能限(”去掉部分关键代码),这样使试用版被破解, 投入正式的应用。 二”使用 用于注册申请的程序。

      4、对于 版的应用 程序,果没有用户界面,或 须试用的用户,只能使用由开发商提供的 用注册程序来提取机器。5.2 注册码这种加壳技术本来 省去输入注册码手 注册这 程,因为每一 发布的版本只能在定的机器上运行,但为了定用户位 及对用户行限,还是要有注册 程的。注册码是由用户位机器及用户限 经 加密处理后 的,处理 用自的注册码 来实现。5.3 加密DLL 件本加壳技术的核 之一是加密DLL 件,加密 程 用自的加密 成。加密 选择.NET框架中提供任何加密或自行设加密。 不用 开的,因为加密解密都是在自己的程序中行。因此,此 案的 性 由开发商自己保证,而不依赖于第三 。5.4 装 之前,只需用 为此用户加密的DLL 件及权 件 替换 装 程中应的 件,再生成 装 。装 中 独存放一份加密DLL 件权 件, 备 户升级正式版时用户 。一般而言, 装 件中不能 包含注册码或权 件的,但在这种技术下, 权 件打包 装中,因为,使 装 件被复, 在非权的机器上运行。5.5 正式版 装对于没有 装 试用版的机器, 使用 装 装正式版。对 装 试用版的机器, 用 装 中的正式版 件替换应 件 成正式

      5、版。5.6 用户注册调用正式版中帮助“关于“注册能,输入注册码或选择权 件行注册。由于 装 件中包含权 件, 在正式版首次运行时,通 权 件自 注册,免去了手 注册的 程。6 程序运行时脱壳的实现脱壳实际上是 加密的程序代码解密并加载内存程序区,脱壳需要特定的解密密钥或特定的解密。对于较的程序,果只有一两 DLL, 由壳程序行一次性脱壳, 部放在内存中,这没有什么技术上的难 ,只是内存消耗较多。对于有多 DLL的程序,DLL不一定都要使用,有时 能只用 中部分,所没有必要一次脱壳, 部占据在内存中, 据需要来脱壳。脱壳 及DLL解密DLL调用请 的 技术。6.1 DLL的解密一般的加壳技术使用与用户 关的密钥,密钥是固定中壳代码中的,所 脱壳 在任何一台机器上实现,实现软件 。而在本 案中,DLL加密密钥与用户机件关, 然解密密钥 不是壳代码中固定的,而需要临时 目标机上提取生成密钥, 能解密,所 脱壳只能在权的机上行,而 软件的非 。解密密钥的是由件生成的,的提取与申请注册时提取的 ,并 ,通 的保密 换后生成加密解密密钥。因此,的提取存在于壳 用的注册申请程序 软件的试用版中,为了

      6、这 的破解,需要使用第三 (”XenoCode,MaxtoCode)对这 程序的MSIL代码行fifl或加密。对于 版软件,解密密钥最 是由壳临时 应用程序 器取;但为了 , 解密密钥存入权 件中,权 件经加密后 户 软件一 装,脱壳时 权 件中提取解密密钥。DLL的解密只能在内存中行,不能生成临时 件,避免Cracker 解密后的DLL。这 要用 件流与加密流的技术,脱壳的部分代码下”public static Assembly asmload(string asmName) Assembly asmsvr = null;FileStream fsr = null;byte byVec=new byte16, byKey=new byte32;/asmName待加载的程序 ,由 入string toLoad=AppDomain.CurrentDomain.BaseDirectory+asmName +e.dll;if ( ! File.Exists( toLoad ) ) return null;fsr = new FileStream( toLoad, FileMode.Open,

      7、 FileAccess.Read );byte rawAssembly = new byte fsr.Length ;/提取机器并生成DES加密密钥与 createDesKeyVec( ref byVec,ref byKey );SymmetricAlgorithm des=SymmetricAlgorithm.Create();CryptoStream encStream=new CryptoStream(fsr, des.Create Decryptor ( byKey, byVec), CryptoStream Mode.Read );/ 取并解密 区encStream.Read( rawAssembly, 0, (int)fsr.Length );encStream.Close();fsr.Close();asmsvr = AppDomain.CurrentDomain.Load(rawAssembly );6.2 DLL调用请 的 据需要来脱壳 是 程序 被调用时,临时脱壳并加载,程序 一 加载, 后需要调用 中的能时 内存中运行,这 避免了内存的 不会 程序运行 。关键是程

      8、序 的调用不一定壳中调用, 任何一 已经运行的程序 中调用, 么 能 程序 的调用请 首 要了解应用程序, 由AppDomain对 来示,为 行代码提供载 currency1界。多应用程序 在一 程中运行;但是,在应用程序程之间没有一对一的关“。多 程 于一 应用程序,给定的程并不限于一 应用程序,但在任何给定时间,程都在一 应用程序中 行。每 程序运行时,便会自 fifl应用程序。AppDomain实 用于加载 行程序 (Assembly),AppDomain 实现一件,这 件使应用程序 在加载程序 载应用程序或引发处理的 常时行 应。本 案中 是通 件AssemblyResolve来 程序 调用请 的。实现 是”首 ,在壳的main()函中注册件AssemblyResolve的 应代码, ”AppDomain.CurrentDomain.AssemblyResolve += newResolveEventHandler( CurrentDomain_AssemblyResolve );然后,再编写一段件 应代码,来实现程序 脱壳与加载。这样,在调用任何程序 时, 调用了,因为程序 的脱壳会自 行。下面是件 应的部分代码”/ 的或临时加载的程序 private static Assembly CurrentDomain_AssemblyResolve (object sender, ResolveEventArgs args)Assembly ret = null;tryAppDomain dm=(AppDomain)sender;string dllName= args.Name.Split(,)0;/用xx开的 件示加密 DLL,区于 的DLLif (dllName.StartsWith(xx)&!dllName.EndsWith (resources) )ret = asmload( dllName );catch (Exception ae ) MessageBox.Show(加载据 + args.Name + 时出 ); return ret;7 ”结上软件保护 案的 性能由DES(用)机器的 性定

      《.NET程序加壳原理》由会员飞***分享,可在线阅读,更多相关《.NET程序加壳原理》请在金锄头文库上搜索。

      点击阅读更多内容
    TA的资源
  • 人教版一年级下册数学第二单元20以内的退位减法测试卷精品【考试直接用】

    人教版一年级下册数学第二单元20以内的退位减法测试卷精品【考试直接用】

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷(实用)word版

    人教版一年级下册数学第二单元20以内的退位减法测试卷(实用)word版

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷及答案(夺冠)

    人教版一年级下册数学第二单元20以内的退位减法测试卷及答案(夺冠)

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷(典型题)

    人教版一年级下册数学第二单元20以内的退位减法测试卷(典型题)

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷精品(a卷)

    人教版一年级下册数学第二单元20以内的退位减法测试卷精品(a卷)

  • 人教版一年级下册数学第二单元20以内的退位减法测试卷及答案【精品】

    人教版一年级下册数学第二单元20以内的退位减法测试卷及答案【精品】

  • 部编版二年级上册道德与法治期中测试卷 (考试直接用)

    部编版二年级上册道德与法治期中测试卷 (考试直接用)

  • 部编版二年级上册道德与法治期中测试卷 带答案(培优)

    部编版二年级上册道德与法治期中测试卷 带答案(培优)

  • 部编版二年级上册道德与法治期中测试卷 含答案(精练)

    部编版二年级上册道德与法治期中测试卷 含答案(精练)

  • 部编版二年级上册道德与法治期中测试卷 及答案【各地真题】

    部编版二年级上册道德与法治期中测试卷 及答案【各地真题】

  • 部编版二年级上册道德与法治期中测试卷 及完整答案【名校卷 】

    部编版二年级上册道德与法治期中测试卷 及完整答案【名校卷 】

  • 部编版二年级上册道德与法治期中测试卷 【考点精练】

    部编版二年级上册道德与法治期中测试卷 【考点精练】

  • 部编版三年级上册道德与法治期末测试卷 (重点)

    部编版三年级上册道德与法治期末测试卷 (重点)

  • 部编版三年级上册道德与法治期末测试卷 (模拟题)word版

    部编版三年级上册道德与法治期末测试卷 (模拟题)word版

  • 部编版三年级上册道德与法治期末测试卷 附答案(预热题)

    部编版三年级上册道德与法治期末测试卷 附答案(预热题)

  • 部编版三年级上册道德与法治期末测试卷 附参考答案(b卷 )

    部编版三年级上册道德与法治期末测试卷 附参考答案(b卷 )

  • 部编版三年级上册道德与法治期末测试卷 答案下载

    部编版三年级上册道德与法治期末测试卷 答案下载

  • 部编版三年级上册道德与法治期末测试卷 含答案【夺分金卷 】

    部编版三年级上册道德与法治期末测试卷 含答案【夺分金卷 】

  • 部编版三年级上册道德与法治期末测试卷 含完整答案【网校专用】

    部编版三年级上册道德与法治期末测试卷 含完整答案【网校专用】

  • 部编版三年级上册道德与法治期末测试卷 及答案(最新)

    部编版三年级上册道德与法治期末测试卷 及答案(最新)

  • 点击查看更多
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.