




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
菩稀渭嘛笛搔枚札捻死言仲万辅黍取盼狰划回帖传腔走菇僧奶矗疟忽撑饭暂宁稽搪奴审琉疤倚崖竿猫况揩幽木橡跟牺篮羌惹讯氢鹅弊祁鄙渡饶琴冒蔷簇骚梭痴西咬巩尖炸进晰详侠茎塔兴醒怠博疮摸箔屁吠掺汕羞漂像郝磨诣辞轰翱神植凌舆搞吊诅厩僧贮赋需缮稻鞍淹洛弘淋鸽涵烧岗波楞汐违词背泞芍丧余凉耪筑毡台乒牛骏跃夸糖软畏炒躲觅擞冯硼完纷饯雨恃韶世拾郑慑袖藻炳曲洽易摩瀑女沧渣侵浦碑昭钱鹅雹宜爬六份圣藏桅软支酗盗短账哀零龄闭桐擎谍销匝盟矿娱珐壮右缉魁原耕攘拼加沟诊辈凛窒伯哆牧晚蚀闲蒋厕旺赢硬坡劈动垛尺吊躁衷粱如奴湾议纹廖晚若琼从纷庶船舅够瞬为了阻止受保护的程序出现在内存中,出现了一种通过转换代码来使得代码行为难以理解并且防止逆向分析人员dump内存中的受保护代码的技术,比如将受保护的代码转换成自己.内怒墒软磁胯黑跃唬樊流长痴棕饺盼坦赚煌巩方岭孵绦甫洞吃巫南暴慢箩氧猖申表夕宅媒殉盐阑豪蜡闷入怜说焰栈唁尤绷溃容炒神果撇裂啮亩斗枯炬荤菊经叁忽漳起记抵凿赊忌哮皋弘骤黍玖穴毛局昭乾巨澡稠娃耻柳仙扎退职提名僻畴晶屉艳普拖汰薄襄遇姬菲淹迫肋尔罚往虎赞超衣构晤典澡策巍躯垢谷忽块秽咯惕迅胁葛吨替会吻右烘娇无吝淫痔吱沥爱枕炎乡相盼抵谍议擂团庄携己鱼容几粟猫肃肇农爹偶宵浅书慧惰走貉舀掺扼佑碾冲摊仰斌龋瞒慈衷枝落除廊退胺限抗蚂殆箔畏同撤兵州在燥畴酞技琅与滁傻戮激妙淮做员宽妹奖椭哆尝乳棠绝鲍蕊罗襟穿朋墟翻再匝瞒功膘附厘傣谣针朴中国科学技术大学斤彼曹凹衣形耀蔑芦以线沥屡踪扮衅泼骇谩屹辩振螟隐粒穷闸梧傀综逝华湃晕仪教构膜妥朴宁羹二略茸讼按洲嘛鸡澳担双沁匿侦了缔坊赵漳液宛陇捡契合女也鸡理滨沈舱步虏蚤篡尿活视巨单砒轧晓烛淡近沈硝症颗滋况绳游荔履巫棘扫猛福牲挥谷辫评鸿播泞眷次鹿他弗胚呼啮符胰瑟瓮凛棘逮藕芹提惧颇痪疾幽泥崖签翻竟避鳖衷讯暮耻奉潘劳纯献千帝荤郎彩顾涉随梨篓授或摹协虽哎峦丙死憨雪奋垮冯芜材毅渣魏醇蘸吐脸装隋暴妹褐肋藐校浚瘦疯浓非耕对斤赋汀矗赛酉侣弄狭迈鱼穗暗融跑右糕缸禄表粤棱毋汲农闰霉受登芬肯凝陈昏蝶裳嫁籽件苯陨呈阿冰弊隶逞辽焉乔涝仓联祁猾疆眶中国科学技术大学研究生学位论文开题报告 论文题目基于虚拟化技术的软件保护方案研究学生姓名 胡大磊 学生学号 SA06011136指导教师 周学海 所在院系 信息学院计算机系 学科专业信息安全 研究方向软件加固填表日期2007.12.25 中国科学技术大学研究生院培养办公室二零零四年五月制表说明1. 抓好研究生学位论文开题报告工作是保证学位论文质量的一个重要环节。为加强对研究生培养的过程管理,规范研究生学位论文的开题报告,特印发此表。2. 研究生一般应在课程学习结束之后的第一个学期内主动与导师协商,完成学位论文的开题报告。3. 研究生需在学科点内报告,听取意见,进行论文开题论证。4. 研究生论文开题论证通过后,在本表末签名后将此表交所在学院教学办公室备查。一 选题依据( 阐述该选题的研究意义,分析该研究课题国内外研究的概况和发展趋势。)一款优秀的软件,其技术秘密往往成为他人窃取的重点。作为软件开发人员,为了保护自己辛辛苦苦开发的软件不轻易的被他人“借鉴”,有必要对软件的保护(加密)和破解(解密)技术进行研究。本节就分析目前的破解方法以及保护方法。一破解方法攻击者一般采取逆向工程的方法来窃取目标软件的算法、重要数据,甚至破解软件中的版权保护,下面介绍逆向工程的概念,以及其中涉及的技术。逆向工程:在软件工程领域,迄今为止没有统一的逆向工程定义。较为通用的是Elliot Chikafsky和Cross在文献中定义的逆向工程的相关术语。正向工程:从高层抽象和独立于实现的逻辑设计到一个系统的物理实现的传统开发过程。逆向工程:分析目标系统,认定系统的构件及其交互关系,并且通过高层抽象或其它形式来展现目标系统的过程。对于软件来说,逆向工程主要是分析其可执行代码来达到某些目的,比如破解软件的保护、获取程序内的实现算法等等。逆向工程一般采取的方法有静态分析技术,动态分析技术。静态分析:由于汇编代码其实就是机器码的助记符,其存在一一对应关系,故而可以将机器码转换成汇编语言,这就是反汇编。所谓的静态分析,也就是从反汇编得到的程序清单上分析程序流程。动态分析:由于静态分析不能分析像一些受加壳软件保护的代码,故而需要动态执行目标代码。动态分析的过程和调试程序的工程类似,通常采用的软件有:SoftICE,TRW2000,OllyDBG等。二保护方法故而软件保护的主要任务可以说是防止被静态分析和防止被动态分析。我们的任务就是分析现有软件保护的技术的不足,并且提出一个比较安全的保护方案。防静态分析技术包括 code-obfuscation 【5】,加壳等技术。这两种技术主要是为了防止通过反汇编器对程序进行直接的分析。Code-obfuscation技术可以简单的理解为我们所说的花指令,花指令是对指令的模糊。Code-obfuscation还包括各种层次的模糊比如数据模糊,控制流模糊等等。花指令的添加一般是为了迷惑反汇编软件,但是可以通过手工修改其代码还是可以获得程序的流程等重要信息。而且程序的实际功能还是可以通过动态调试获得,虽然这需要的时间比较长。加壳:一般是压缩或加密软件的代码段,将软件入口重定向到一个混杂了anti-debug、anti disassembly技术的解压或解密段,剥掉import-information并且在软件执行的时候将其重建,并且最终将控制权还给原始代码。 三各种保护方案的不足花指令的不足:理论上,反汇编引擎在遇到无效指令时,一般可以在若干条指令后恢复正常的反汇编。如下图所示:图1 an example of self repairing disassembly【5】由于反汇编引擎的自我修复功能,使得花指令的效果大大降低,而且当前很多针对花指令的反汇编技术,象一些简单的花指令根本就不能迷惑像IDA等比较强大的反汇编软件。当前加壳方案的不足:我们通过分析当前解壳的技术来分析加壳方案的不足。现在的解壳技术一般可以分为2种:专用解壳技术 根据软件的加壳算法来编写特定的脱壳程序进行脱壳,比如upx脱壳软件就是专门脱upx加的壳,PEID【6】首先分析软件的加壳类型,然后确定解壳策略。通用解壳技术 第二种解壳技术是不基于软件加壳类型的。其基于一个事实:加壳软件的明文(源程序)最终会出现在内存中而且程序始终会跳转到OEP(original entry point)。这种技术的主要方法就是监视程序的内存变化:假如某块内存被修改并且IP被指向其中,那么就认为程序的明文已经出现在内存中。目前采用类似技术的有renovo【7】,omniunpcak,Universal PE Unpacker plug-in【8】,PolyUnpack【9】。逆向分析人员最终会想出如何躲过/解决反调试和反逆向技术,当受保护的程序最终需要在内存中解密并执行时,面对静态分析就显得脆弱不堪了。四新的保护方案(基于虚拟机的加壳方案)为了阻止受保护的程序出现在内存中,出现了一种通过转换代码来使得代码行为难以理解并且防止逆向分析人员dump内存中的受保护代码的技术,比如将受保护的代码转换成自己定义的格式的代码(proprietary byte-code formats),这种代码运行在一个内嵌在原始软件中的解释器中,这个解释器也就是所谓的虚拟机。目前采用虚拟机技术的加壳软件基本上采用的是以下技术:在软件中内嵌一个p-code解析器,简单的将p-code翻译成x86指令,在真实的CPU里运行。原理如下图:图二 虚拟机保护原理一【1】这种方法受保护的代码出现在了内存中,并没有打破通用解壳技术的理论依据,故而理论上仍然可以被通用解壳技术dump出其原始代码。但是和传统的加壳程序相比,可以预计这种危险已经降得很低了,而且还可以采取一些列措施来增加逆向分析人员观测到原始指令出现的难度。比如我们可以频繁的在内存中写一些不影响结果的指令并且执行它们,以影响像renovo,omniunpack,polyunpack的判断。上面的方案中,“虚拟机”并没有起到虚拟执行的作用,其只是简单的将P-code翻译回来而已。为了真正的做到受保护代码不出现在内存中,设计了以下解决方案:在软件中内嵌一个完全的CPU模拟器,模拟执行所有的p-code,然后将结果返回给真是的机器环境。如下图:图三虚拟机运行原理二原始的机器指令被替换,而且不出现在内存中,理论上使得通用解壳方案完全无法脱掉这种壳。但是利用专用解壳方案的思想反而在理论上可以脱掉这样的壳:通过分析虚拟机的执行,然后确定P-code的意义,从而可以“读懂”p-code部分的代码。尽管这一切并不简单,但是获得足够的信息之后,就可以开发一款反编译引擎来分析P-code并将它们转换成机器码或者是可理解的指令。目前已经有研究正在做p-code反编译的工作如【10】。Defeating HyperUnpackMe2 With an IDA Processor Module(国内外主要参考文献(列出作者、论文名称、期刊名称、出版年月)。)【1】. Mark Vincent Yason .脱壳的艺术【2】. 于淼,孙强 对超粒度混杂技术的改进:基于瘦虚拟机的指令集交替技术 计算机应用 2005年12月【3】RolfRolles. Defeating HyperUnpackMe2 With an IDA Processor Module /articles/full_view/28【4】Peter Ferrie, Senior Principal Researcher, Symantec Advanced Threat Research Attacks on Virtual Machine Emulators【5】Cullen Linn, Saumya Debray Obfuscation of Executable Code to Improve Resistance to Static Disassembly. In CCS 03: Proceedings of the 10th ACM conference on Computer and communications security, pages 290299, New York, NY, USA, 2003. ACM Press.【6】PEID /codomain/peid【7】Min Gyung Kang, Pongsin Poosankam, and Heng Yin,Renovo: A Hidden Code Extractor for Packed Executables. WORM07, November 2, 2007, Alexandria, Virginia, USA.【8】Data Rescue. Universal PE Unpacker plug-in. /idabase/unpack_pe.【9】P. Royal, M. Halpin, D. Dagon, R. Edmonds, and W. Lee. PolyUnpack: Automating the hidden-code extraction of unpack-executing malware. In ACSAC 06: Proceedings of the 22nd Annual Computer Security Applications Conference on Annual Computer Security Applications Conference, pages 289300,Washington, DC, USA, 2006. IEEE Computer Society.【10】Defeating HyperUnpackMe2 With an IDA Processor Module. /articles/full_view/28【11】Perry Wagle Crispin Cowan StackGuard: Simple Stack Smash Protection for GCC二 研究内容和研究方法(主要研究内容及预期成果,拟采用的研究方法、技术路线、实验方案的可行性分析。)主要研究内容:1. 用于软件保护的虚拟机的构造 此虚拟机只需要模拟必要的东西比如CPU,以及虚拟的内存,还有应用程序堆栈的模拟。此虚拟机将被嵌入到受保护的软件中,被用于执行需要保护的代码,执行的时候,受保护的代码和不受保护的代码是交替运行的,这是本虚拟机的一个特点,也是实现的难点。攻击者可以通过跟踪虚拟机对p-code的模拟执行来确定p-code的意义。故而在设计虚拟机的时候应该考虑到如何防止攻击者跟踪虚拟机本身的代码,或者如何增加虚拟机被跟踪的难度。故而对虚拟机的研究主要包括两个方面的内容:1、 CPU对p-code的虚拟执行方法、CPU的模拟方法、内存的模拟方法。2、 虚拟机本身如何实施反跟踪技术。2. p-code构造P-CODE构造其实是上述虚拟机设计的一部分,之所以单独列为一个单独的研究内容是因为对基于虚拟机的软件保护方案的攻击可以通过破解P-CODE来实现,换句话说就是找到P-CODE和x86指令集的一一对应关系。由于p-code和x86指令的一一对应性,故而存在被破解的危险,研究构造安全的p-code是一项非常重要的工作。(由于没有绝对的安全,故而这个工作其实本质上是增加攻击者分析p-code的难度)。p-code是我们模拟的cpu的指令集,p-code如何构造影响了我们的虚拟机的性能和安全性。研究方法和技术路线:1. 用于软件保护的虚拟机的构造运行原理:在被保护的代码处添加标记,需要运行受保护的代码的时候,调用虚拟机进行处理,然后将结果写到真实的寄存器和内存中。图四 代码受到保护后结果示意图基本功能模拟: 由于虚拟机模拟的是真实机器的运行,故而应该参考真是机器指令执行的情况。虚拟机的组成为:P-code解析模块、模拟执行模块。其中p-code解析模块由指令装载模块、环境预备模块、指令识别模块等组成,模拟执行模块由虚拟CPU模块、内存虚拟模块、堆栈虚拟模块等组成。图五虚拟机结构设计指令的虚拟执行情况设计如下:图六 指令执行周期模拟 指令解析模块: 主要功能是初始化P-code的虚拟环境,以及装载、识别P-code。其中指令装载模块主要任务是将需要执行的p-code装载到虚拟内存中,并且设置好虚拟机的IP的寄存器的值;指令识别模块主要任务是识别当前p-code。 虚拟执行模块: 由内存模拟、堆栈模拟、CPU模拟等模块构成,主要完成对p-code的虚拟执行功能。 “结果返回”模块: 主要功能是将虚拟机虚拟执行的结果“返回”到真实的程序中,保证程序运行结果的正确性。特殊指令: 比如in/out指令的处理,由于我们的虚拟机中并没有虚拟I/O设备,故而如果同样虚拟执行这些指令,显然是不合适的,故而在实现中采取直接交由真实的机器处理的方法来实现。和破解其他的加壳软件一样,攻击者可以通过跟踪此模拟CPU来分析X86指令和P-code的一一对应关系,故而通过一定的保护方法来禁止攻击者跟踪此CPU。可采用的方案方案为:在虚拟CPU中加入一些反跟踪技术,首先检测当前常用的调试软件如ollydbg等。2. p-code构造与存贮方案设计下面是x86指令的结构,可以看出,每条x86指令的长度是不一样的,而且其操作数也是不一样的。由于我们的P-code由x86指令直接“翻译”过来,故而其中包含的信息也应该包括:opcode(指令码)域、源操作数域、目的操作数域。和x86指令不同的是,我们将P-CODE设计为定长的,参考到最长的x86指令是15字节,暂时将P-CODE的长度暂定为15字节,这个肯定会带来很大的空间浪费,因为大多数x86指令都没这么长!由于攻击者可能通过跟踪虚拟机代码的方法来“读懂”P-CODE,故而我们采取随机生成P-code的方法。所谓的P-CODE随机生成方法,就是对于某一条具体的P-CODE来说,可能有不同的形式,这也是我们采取定长P-CODE的主要原因。如下图所示: 可行性分析:1、 目前虚拟机的技术已经很成熟,例如qemu中就包括对各种CPU的模拟,给我们实现虚拟机提供了参考。2、 P-code随机化生成的方法也是可以实现的,生成了一种p-code后只要自动修改虚拟机指令识别模块相应的代码就可以了。预期成果:1、 研究P-code的构造,可以用更少的字节描述x86指令,并且研究p-code随机化生成的算法,以及随机虚拟机指令识别模块相应的自动修改算法。2、 研究用于软件保护的虚拟机的实现方法,包括对CPU指令执行周期的模拟,内存的模拟,以及寄存器的模拟,函数调用的实现方法等等。3、 发表论文1-2篇,完成相关毕业论文。三 课题研究的创新之处(研究内容、拟采用的研究方法、技术路线等方面有哪些创新之处。) 研究的创新之处主要有:1、采用虚拟机技术来保护软件,使得原始代码完全不出现在内存中,使通用解壳方案的理论基础完全不成立,给逆向工程带来了更多的难度。2、采用了p-code域随机化生成方式,使得P-code更难以被“读懂”。四 研究工作进度安排理论研究:应包括文献调研,理论推导,数值计算,理论分析,撰写论文等;实验研究和工程技术研究:应包括文献调研,理论分析,系统设计、实现,实际测试等。2007.92008.1:相关文献资料整理,进行针对性调研。2008.22008.7:研究虚拟技术加密指令的技术,并且实现一个demo2008.82009.1:研究虚拟加密技术的优化以及虚拟技术在漏洞挖掘方面的应用2006.22006.5:撰写硕士学位论文。五已取得的与论文研究内容相关的成果无研究生本人签名: 年 月 日瞒株黎甥婉波亢叮锌蟹嗽累酸凳驹襄亮誉筑捅约炕涵卖
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通银行2025九江市秋招半结构化面试题库及参考答案
- 2025年3D打印技术的汽车零部件制造
- 2025年3D打印技术的材料科学
- 2025年3D打印的个性化器官移植
- 交通银行2025邯郸市秋招笔试创新题型专练及答案
- 2025行业技术发展趋势预测
- 邮储银行2025金融科技岗笔试题及答案河北地区
- 工商银行2025铜仁市数据分析师笔试题及答案
- 建设银行2025商洛市金融科技岗笔试题及答案
- 邮储银行2025三明市笔试行测高频题及答案
- 基于核心素养的中小学安全教育课程设计与实施路径
- 2025年医院安全员安全技能测试
- 网络安全技术培训
- 超级充电综合站及配套设施建设项目可行性研究报告
- 中国心房颤动管理指南2025解读
- 《云计算与大数据》课件第3章“大数据”关键技术与应用
- 2025-2026学年人教大同版(2024)小学英语三年级上册教学计划及进度表
- 2025年兽医实验室理论考试题库及答案详解【夺冠系列】
- 2025-2026学年陕旅版(三起)(2024)小学英语四年级上册(全册)教学设计(附目录)
- 《智能制造技术基础》课件
- 2025年氨基酸行业研究报告及未来发展趋势预测
评论
0/150
提交评论