(计算机应用技术专业论文)基于控制转换的目标代码混淆器的研究与设计.pdf_第1页
(计算机应用技术专业论文)基于控制转换的目标代码混淆器的研究与设计.pdf_第2页
(计算机应用技术专业论文)基于控制转换的目标代码混淆器的研究与设计.pdf_第3页
(计算机应用技术专业论文)基于控制转换的目标代码混淆器的研究与设计.pdf_第4页
(计算机应用技术专业论文)基于控制转换的目标代码混淆器的研究与设计.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(计算机应用技术专业论文)基于控制转换的目标代码混淆器的研究与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

彳 4 擎 ad i s s e r t a t i o ns u b m i t t e dt og u a n g d o n gu n i v e r s i t yo f t e c h n o l o g yf o rt h ed e g r e eo fm a s t e ro fe n g i n e e r i n g r e s e a r c ha n dd e s i g no b f u s c a t o ro fo b j e c t ec o d e b a s e do nt h ec o n t r o lf l o wt r a n s f o r m a t i o n m a s t e rc a n d i d a t e :w a n gz h e n h u a s u p e r v i s o r :p r o f w uw e i m i n m a y2 0 1 0 f a c u l t yo fc o m p u t e r g u a n g d o n gu n i v e r s i t yo ft e c h n o l o g y g u a n g z h o u ,g u a n g d o n g ,p r c h i n a ,5 1 0 0 0 6 1舢y 摘要 摘要 反编译和逆向分析技术的发展,提高了对程序代码的分析能力,较好解决了代 码移植、程序优化、系统安全等方面的疑难问题,同时也大大降低了软件的安全性。 除了各国政府出台保护软件安全的相关法律法规,软件开发人员不断提出好的软件 保护方法来保证软件安全。代码混淆技术通过混淆转换算法,提高代码分析和阅读 的难度和代价,而控制转换混淆是代码混淆中最重要的技术。 本文在总结常见的软件保护方法和控制流混淆算法基础上,提出了变形花指令 混淆转换算法和p e 节段动态加密方法,目的是提高逆向分析的难度和阻止反拷贝 操作。 为验证算法有效性,进行了变形花指令算法实验。利用代码块间隙来确定可以 插入花指令的待选块,应用无条件跳转指令扩充法对指定代码段内的指令进行混淆 变换,再应用反条件跳转指令替换法对代码段内条件跳转指令进行变换,最后在代 码段中的无条件跳转指令后随机添加花指令。 本文实现了p e 动态加密。通过在p e 中生成新的节段,将需要加密的重要代码 或数据添加到该代码节段中,然后通过内存查找定位到这个段并对其进行加密解密 操作。调用保护代码段后,再进行加密还原,防止代码被d u m p 出内存进行分析而 获得控制信息。 在上述的工作基础上,设计了一个目标代码混淆器。该软件集成了p e 格式文 件操作、反汇编操作和混淆转换算法操作。开发反汇编器的目的是为了较好翻译转 换p e 格式的目标代码,提取其控制信息,方便进行控制流混淆操作。所利用到的 反汇编算法为线性扫描和递归遍历相结合的混合扫描算法,为提高反汇编结果的正 确率,采用线性扫描和递归遍历相结合的混合扫描算法。 本文最后给出了算法实验结果分析,并对本文的研究工作出了总结,算法产生 的花指令带有很大的随机性,即使存在一些特征值,但特征值的数量巨大,完全列 举所有情况需要巨大的工作量。实验结果显示,文中算法有较好的抗静态分析能力, 不易找到特征码而被去花器删除。 在代码混淆方面,采取添加花指令和加密相结合的算法,较好地增强了c c + + 编译生成的p e 软件代码的安全性,有效的提高了逆向分析的难度,达到了课题研 究的预期效果。 关键词:软件保护;代码混淆;控制转换;混淆器 a bs t r a c t w h i l et h ed e v e l o p m e n to fr e c o m p i l a t i o na n dr e v e r s ea n a l y s i ss k i l le n h a n c et h e c a p a b i l i t i e so f c o d ea n a l y s i s ,a n db e t t e rs o l u t i o nt ot h ed i f f i c u l tp r o b l e m so f c o d e m i g r a t i o n ,p r o g r a mo p t i m i z a t i o n ,a n ds y s t e ms e c u r i t ya n ds oo n ,b u ta l s og r e a t l yi n c r e a s e t h ei n s e c u r i t yo fs o f t w a r e g o v e r n m e n t sh a v ei n t r o d u c e dl a w sa n dr e g u l a t i o n sr e l a t e dt o s o f t w a r es e c u r i t y ,a n ds o f t w a r ed e v e l o p e r sc o n t i n u et om a k eg o o dp r o t e c t i o nm e t h o d st o e n s u r es o f t w a r es e c u r i t y c o d eo b f u s c a t i o nt e c h n o l o g yi m p r o v e st h ed i f f i c u l t ya n dc o s t o fc o d ea n a l y s i sa n dr e a d i n gb yo b f u s c a t i n gt r a n s f o r m a t i o na l g o r i t h m ,w h i c hi st h em o s t i m p o r t a n tt e c h n o l o g yi nt h ef i e l do f c o d eo b f u s c a t i o n b a s i n go ns u m m a r i z i n gt h ec o m m o nm e t h o d so fs o f t w a r ep r o t e c t i o na n dc o n t r o l f l o wo b f u s c a t i o na l g o r i t h m s ,t h i sp a p e rp r o p o s e so b f u s c a t i o na l g o r i t h mo fd e f o r m a t i o n j u n kc o d ea n dm e t h o do fp es e g m e n td y n a m i ce n c r y p t i o n ,a i m st oi m p r o v et h ed i f f i c u l t y o fr e v e r s ea n a l y s i sa n dp r e v e n ta n t i c o p yo p e r a t i o n s t ov e r i f yt h ev a l i d i t yoft h i sa l g o r i t h m ,a ne x p e r i m e n tf o ra l g o r i t h mo fd e f o r m a t i o n j u n kc o d ei st a k e n i nt h i se x p e r i m e n t ,w eu s e t h eg a po f c o d eb l o c k st od e t e r m i n et h a t c a nb ei n s e r t e dj u n kc o d eo fs e l e c t i n gb l o c k s ,a p p l yt h em e t h o do fn o n c o n d i t i o n a lj u m p i n s t r u c t i o n se x t e n s i o nt oo b f u s c a t i n gt r a n s f o r m a t i o nw i t h i ni n s t r u c t i o n so fs p e c i f i e dc o d e b l o c k s ,t h e nu s et h em e t h o do fa n t i c o n d i t i o n a lj u m pr e p l a c e m e n tf o rt r a n s f o r m a t i o n i n s t r u c t i o n so f j u m pc o n d i t i o n sw i t h i nc o d eb l o c k s ,a d dj u n kc o d eb yr a n d o mt ot h ec o d e b l o c ka f t e rn o n c o n d i t i o n a lj u m pi n s t r u c t i o n sa tt h ee n d t h i sp a p e ra c h i e v e dd y n a m i ce n c r y p t i o np e b yg e n e r a t e dn e ws e g m e n t si np et o e n c r y p tt h ek e yc o d eo rd a t ar e q u i r e dt oe n c r y p t e da n dp l a c ei nt h en e ws e g m e n t ,a n d t h e nn a v i g a t em e m o r yt os e a r c ht h i ss e g m e n ta n di m p l e m e n te n c r y p t i o no rd e c r y p t i o n o p e r a t i o n s a f t e rc a l l i n gt h ec o d ep r o t e c t e da n dt h e nr e s t o r e st h ee n c r y p t i o n ,t op r e v e n t t h ec o d eb e i n gd u m p e do u to fm e m o r yt oa n a l y s i sa n do b t a i nt h ec o n t r o lf l o w i n f o r m a t i o n t od e s i g na no b f u s c a t o rf o ro b j e c tc o d eb a s e do na b o v ew o r k i ti n t e g r a t e st h ep e f o r m a to p e r a t i o n ;d i s a s s e m b l eo p e r a t i o na n da l g o r i t h mo fo b f u s c a t i n gt r a n s f o r m a t i o n i i i f e a t u r e so fv a l u e ,b u tc o m p l e t e l yl i s t i n go fa l lt h ec i r c u m s t a n c e sr e q u i r eag r e a ta m o u n t o fw o r k t h er e s u l t ss h o wt h a tt h ea l g o r i t h mh a sg o o dr e s i s t a n c et os t a t i ca n a l y s i s c a p a b i l i t i e s ,n o te a s yt of m dt h es i g n a t u r et h a tw a s t ob er e m o v e db yt h ej u n kc o d e r i nt h ea s p e c to fc o d eo b f u s c a t i o n ,u s i n ga l g o r i t h mo fa d d i n gj u n kc o d ec o m b i n e d w i t he n c r y p t i o na l g o r i t h m ,e n h a n c e st h es e c u r i t yo ft h es o f t w a r ec o d ew e l lw h i c hi s g e n e r a t e db yc c 抖c o m p i l e r ,a n da l s oe f f e c t i v e l yi n c r e a s e st h ed i f f i c u l t yo fr e v e r s e a n a l y s i s ,w h i c ha c h i e v e st h ei n t e n d e de f f e c to f t h i sr e s e a r c h k e y w o r d s :s o f t w a r ep r o t e c t i o n ;c o d eo b f u s c a t i o n ;c o n t r o lt r a n s f o r m a t i o n ;o b f u s c a t o r i v 目录 目录 摘要i a b s t r a c t i i i 第一章绪论1 1 1 研究背景1 1 2 代码混淆技术2 1 2 1 发展现状3 1 2 2 研究内容4 1 3 课题的提出5 1 4 论文的组织6 第二章软件保护及相关技术7 2 1 序列码验证机制7 2 2 基于硬件的保护方式8 2 3 加壳保护技术1 0 2 4 网络认证保护技术1 1 2 5 篡改检验技术1 2 2 6 代码混淆技术1 3 2 7 本章小结。一1 4 第三章p e 文件格式和静态反汇编分析1 6 3 1p e 文件格式1 6 3 1 1p e 文件结构1 6 3 1 2 名词解释18 3 1 3 内存映射关系1 9 3 1 4 地址转换一2 0 3 2 静态反汇编算法一2 1 3 2 1 线性扫描算法2 l 3 2 2 递归遍历算法2 2 3 2 3 扩展线性扫描算法2 3 3 2 4 混合扫描算法2 4 3 2 5 静态反汇编器构造2 5 3 3 本章小结一2 9 v 广东工业大学硕士学位论文 第四章控制混淆转换算法设计3 0 4 1 变形花指令混淆3 0 4 1 1 基本思想3 0 4 1 2 算法表示3 l 4 1 3 总体架构3 5 4 2 目标代码节段动态加密3 7 4 2 1p e 节段加密的特点3 7 4 2 2 加密思想3 9 4 2 3p e 动态加密实现4 0 4 3 本章小结4 4 第五章目标代码混淆器的设计与实现4 5 5 1 目标代码混淆器系统架构4 5 5 1 1 系统主要功能4 6 5 1 2 系统结构4 6 5 2 控制流混淆实验4 7 5 2 1 实验数据对比4 8 5 2 2 混淆对原程序影响分析5 3 5 2 3 实验结果分析5 3 5 3 本章小结5 5 结 仑5 6 参考文献5 7 攻读硕士学位期间发表的论文6 0 独创性声明6 l 药【谢6 2 v i c o n t e n t s co n t e n t s c h i n e s ea b s t r a c t i e n g l i s ha b s t r a c t i l l c h a p t e r1p r e f a c e 1 1 1r e s e a r c hb a c k g r o u n d 1 1 2c o d eo b f u s c a t i o nt e c h n i q u e s 2 1 2 1d e v e l o p m e n ts t a t u s 3 1 2 2r e s e a r c hc o n t e n t 4 1 3p r o j e c tp r o p o s a l 5 1 4p a p e r so r g a n i z a t i o n 6 c h a p t e r2s o f t w a r ep r o t e c t i o na n dr e l a t e dt e c h n o l o g i e s 7 2 1s e r i a ln u m b e rv e r i f i c a t i o nm e c h a n i s m 7 2 2h a r d w a r e b a s e dp r o t e c t i o nm e t h o d s 8 2 3p a c k e r sp r o t e c t i o n 1 0 2 4n e t w o r ka u t h e n t i c a t i o np r o t e c t i o n 1l 2 5t a m p e r i n gw i t he x a m i n a t i o nt e c h n i q u e s 1 2 2 6c o d eo b f u s c a t i o nt e c h n i q u e s 13 2 7s u m m a r y 1 4 c h a p t e r3p ef i l ef o r m a ta n d s t a t i cd i s a s s e m b l ya n a l y s i s 1 6 3 1p ef i l ef o r m a t 1 6 3 1 1p ef i l es t r u c t u r e 1 6 3 1 2t e r m se x p l a i n e d 18 3 1 3m e m o r ym a p p i n g 1 9 3 1 4a d d r e s st r a m f o r m a t i o n 2 0 3 2s t a t i cd i s a s s e m b l ya l g o r i t h m 2 1 , 3 2 1l i n e a rs w e e pa l g o r i t h m 2 1 3 2 2r e c u r s i v et r a v e r s a la l g o r i t h m 2 2 3 2 3t h w a r t i n gl i n e a rs w e e pa l g o r i t h m 2 3 v i i 4 2 2e n c r y p t i o ni d e a 3 9 4 2 3t oi m p l e m e n td y n a m i ce n c r y p t i o np e 4 0 4 3s u n u n m 3 4 4 c h a p t e r 5d e s i g na n d i m p l e m e n t a t i o no fo b j e c tc o d eo b f u s c a t o r 4 5 5 1a r c h i t e c t u r eo f o b j e c tc o d eo b f u s c a t o r 4 5 5 1 1m a i nf u n c t i o no f t h es y s t e m 4 6 5 1 2s y s t e ms t r u c t u r e 4 6 5 2c o n t r o lf l o wo b f u s c a t i o ne x p e r i m e n t s 4 7 5 2 1c o m p a r i s o no f e x p e r i m e n t a ld a t a 4 8 5 2 2a n a l y s i si m p a c to f o b f u s c a t i n gt h eo r i g i n a lp r o g r a m s 5 2 5 2 3e x p e r i m e n tr e s u l t sa n a l y s i s 5 2 5 3s m m 舢y 5 5 c o n c l u s i o n 5 6 r e f e r e n c e s 5 7 p u b f i c a t i o n sd u r i n gm a s t e r ss t u d i e s 6 0 o r i g i n a lc r e a t i o nd e c l a r e 6 1 a c h n o w l e d g e m e n t s 6 2 v i i i 第一章绪论 第一章绪论帚一早珀t 匕 代码混淆技术是一种有效的软件代码保护机制捌,利用混淆算法对受保护的代 码进行变换,使得转换后的代码不易进行静态分析以及阅读和理解,从而不能够对 代码进行突破使用限制或者破解,以达到对代码进行保护的目的。代码混淆技术研 究起步较晚,随着软件保护需求的日益提高,代码混淆技术越来越受到重视。本章 简要介绍了代码混淆技术研究背景、定义、发展现状以及研究内容。 1 1 研究背景 计算机软件以可执行二进制代码的形式来发布p 4 1 ,这种方式不便于阅读,有助 于保护软件开发者的智力成果。然而,逆向分析能力的提耐4 。1 ,产生了一些逆向工 程技术的工具,借助于这些工具可以将可执行的机器码转换成可以阅读的汇编代码, 虽然比阅读源代码难度增大很多,但具有汇编基础和经验的人仍然可以了解和得到 程序流程,使得未经授权的使用、篡改等成为可能。近些年的调查研究表明,软件 盗版、知识产权被侵害问题已经成为困扰全球信息技术发展的重要问题p 1 ,也是软 件安全领域的未解难题之一。 盗版问题越来越受到重视,各国也相继制定法律法规来打击盗版,但问题仍然 很严重。据美国商业软件联盟( b s a ) 和市场调查公司i d c 在2 0 0 9 年进行的一项软件 盗版调查报告显利引,2 0 0 8 年全球p c 软件盗版造成的损失达5 3 0 亿美元之多,比 上年增长了1 1 。中国软件的盗版率在2 0 0 3 、2 0 0 4 、2 0 0 5 、2 0 0 6 、2 0 0 7 年和2 0 0 8 年分别为9 2 、9 0 、8 6 、8 2 、8 2 和8 0 ;相应年份造成的经济损失分别为 3 8 2 3 、3 5 6 5 、3 8 8 4 、5 4 2 9 、6 6 6 4 和6 6 7 7 百万美元。由此可以看出,软件盗版率呈 下降趋势,但造成的经济损失却在不断增加。在软件产业比较发达的国家,相对较 低的软件盗版率仍然会带来巨大的损失。美国的盗版率全球最低,仅为2 0 ,却是 造成损失最大的国家损失为9 1 4 3 亿美元。中国盗版率为8 0 ,损失为6 6 7 7 亿美元,全球第二大损失国。目前,软件盗版是一个全球性问题,但是因中国的国 情特点,习惯了使用盗版软件,且盗版软件制作者的数量十分庞大。因此,从法律 上和思想上改变盗版软件问题依然将是一个长期而又艰巨的任务。 广东工业大学硕士学位论丈 针对这个问题:法律方面,各国政府陆续出台了相关法律法令,通过行政立法 的手段来保护知识产权;技术方面,软件开发人员采用了许多技术来对目标软件进 行保护1 ,主要措施有:一是通过许可认证的方式,这种方式的应用非常广泛,许 多软件都是通过序列码等方式来防止盗版,包括微软公司的产品系列也采用这种方 式。二是通过信息隐藏的形式来实施保护,最为典型的就是加壳技术的应用,通过 对原数据加密的方式来隐藏软件的“真面目”,除此之外,数字水印也属于此类,通 过以某种形式隐藏在文件中的特定数据来标识所有者信息、版权信息等。三是通过 网络在服务器端运行,这样可以避免全部代码落到终端用户手里,以此来保护软件。 从数据能够明显看出,实施这些措施虽然取得了一定的效果,但是并不能让人满意。 软件盗版的现象越来越猖獗,究其原因为:一方面,一些软件产品并非以目标 代码形式发布,很容易被反编译,软件包含的一些信息容易被窃取,软件本身也容 易被篡改,造成巨大经济损失,一些软件产品以可执行的目标代码形式发布,在一 定程度上起到了保护开发者研究成果的作用。另一方面,逆向工程技术的进步和发 展,给逆向分析目标代码窃取知识产权、盗版软件和篡改软件使用限制创造了更多 的机会和可能性,也给软件保护带来极大的挑战,而且,为了促进软件业的发展, 软件、程序爱好者对软件的逆向分析并没有被法律明确禁止,也在一定程度上为某 些别有用心者盗版软件打开了方便之门。因此,软件开发者采用一些技术手段来对 抗恶意的逆向分析是非常必要且有现实意义的。 随着盗版的猖獗性加剧和经济损失的增大,软件保护也越来越受到重视,甚至 掀起了软件保护的研究热潮,除了硬件保护,代码加密保护,序列码或许可认证等 方法外,又涌现出一些新的软件保护方法,如篡改抵制、代码混淆等。本文则从目 标代码控制流分析角度出发来研究目标代码混淆技术,这是一个比较年轻的,还不 是很成熟的软件保护技术。本文主要从抵制逆向工程静态分析入手,研究目标代码 基于控制流转换的混淆变换,设计并实现目标代码混淆器。 1 2 代码混淆技术 代码混淆技术最初用于保护j a v a 生成的中间代码阻1 0 1 ,如今也用于保护n e t 代 码。比较成熟的代码混淆技术都是基于中间代码和源代码,而对于目标代码的混淆 技术才刚起步。代码混淆的目的是加大破解者对软件的分析难度,达到混淆视听的 目的。譬如将m o ve a x ,e a x 变换成p u s he a x ,p o pe a x ,然后在中间穿插一 2 第一章绪论 些花指令。代码混淆分为布局混淆、数据混淆、流程混淆和防范混淆,采用不同的 混淆方式将会对程序代码产生不同的影响。 1 2 1 发展现状 代码混淆技术的系统研究始于二十世纪9 0 年代后期,因j a v a 语言的快速发展 而引起。j a v a 源代码编译后生成的字节码文件( c l a s s 文件) 因具有如下特点:每 个类独立存储( 一个类一个文件) ;类、方法和变量都基于名字进行调用;字节码中 保留了大量的符号信息二类的结构、继承树、方法参数、变量类型等,因而j a v a 字 节码比较容易被反编译出源代码,对代码进行保护的需求迅速增加p 1 0 1 。这一时期研 究的代表人物有c o l l b e r g 3 1 ,t h o m b o r s on 【。3 1 ,c h e n x iw a n g 1 4 1 等。 1 9 9 7 年,c o l l b e r g 第一次对代码混淆作了详细的总结和分类川,并提出了一些 代码混淆算法以及代码混淆算法性能的几个主要的评测属性。 2 0 0 1 年,b a r a k 等在代码混淆的理论方面做了一些探讨5 1 ,指出代码混淆的主 要目的就是在保留原程序的功能的同时尽量降低程序的可读性或可理解性。提出了 理想的代码混淆是一个“虚拟黑箱”,即人们能够从混淆后的程序得到的一切信息, 都只能是通过对该程序的输入输出进行分析而得到,也就是说,无法看到程序的内 部,只能看到输入和输出,即为“虚拟黑箱”。通过一系列的理论分析,该文证明了 理想的“虚拟黑箱 是无法达到的,从而在理论上指出了代码混淆技术的局限性。 2 0 0 2 年,g r e g o r yw r o b l e w s k i 第一次对目标代码混淆做了详细研刭6 1 ,将目标 代码混淆分为四类,指令混淆,块混淆,等价功能替换,插入干扰代码。 代码指令混淆是指变更指令流序列的顺序,增加阅读理解程序的难度。代码块 混淆是增加适当的跳转指令使程序块变得更凌乱。相同功能表达替换是指用更多( 复 杂) 的但具有相同功能指令流来替换原有指令,增加理解难度。代码插入混淆是额 外插入一些不必要的干扰性代码,如花指令或垃圾代码。 g r e g o r yw r o b l e w s k i 卅对目标代码混淆性能的评估使用了c o l l b e r g 提出的方法, 从强度、弹性和代价方面来评价了代码混淆:即强度( p o t e n c y ) ,即混淆变换后给人 阅读、理解程序带来的难度;弹性( r e s i l i e n c e ) ,即混淆变换给逆向工程、反混淆带 来的难度:代价( c o s t ) ,即混淆变换后对程序执行运行效率的影响。 2 0 0 3 年,c u l l e nl i n 从另一个角度研究目标代码混淆技术【 1 ,通过反汇编分析 目标程序,采用一种混淆方法能够阻止逆向分析过程,使得获取程序的汇编指令非 3 r。_-。 广东工业大学硕士学位论文 常困难或不能正确得到程序的汇编指令。 2 0 0 5 年,j u ng e 等第一次提出了基于控制流的混淆技术叭,其实现的算法思想 为:提取程序的控制流信息,保存为称作监视流程的流程;保护该流程为一个像 a u c s m i t h 的自修改版本,通过论证证明该模糊处理方案的可行性,适应度和模糊效 率都比较高。 2 0 0 7 年,t l d s z l 6 等提出了针对c + + 源代码的控制流平展混淆技术钉,通过将 控制流平展( 如w h i l e 循环改造为s w i t c h 结构) ,来提高控制流的复杂度。通过实验 证明混淆转换后,程序复杂度增加了5 倍,达到了较好的混淆效果。 虽然混淆变换不能做到让混淆后的程序成为一个绝对的“虚拟黑箱”,但是,如 果恶意分析者分析一个混淆后的程序需要付出的代价足够大,大到以致超过开发一 个同样功能的程序所付出的代价,这时有足够的理由相信这个混淆后的程序是安全 的,虽然它最终还是可以被恶意分析者攻破。因此,目标代码混淆技术仍然是值得 研究的,也正是因此吸引了国外众多的专家学者对它进行研究,国内目前虽然有研 究j a v a 代码混淆b 0 2 ,但对目标代码混淆没有过多关注,对控制流混淆算法研究也 是较少。 1 2 2 研究内容 代码混淆技术的研究主要包括代码混淆算法的研究及代码混淆算法效能评估 u 1 1 6 1 。代码混淆算法的研究又可以从三个层次来进行,即:语法层次,控制流层次 和数据流层次b 2 2 3 1 。 1 语法层次的代码混淆技术 在语法层次,由于各函数的参数序列,即参数类型,数目及排序之间可能互相 不同,程序分析就可以利用这种区别来确定各函数调用点的被调用函数。这对于程 序理解有着很大的影响,因为它使得函数调用关系可以不必经过程序分析就可得到。 本文提出一种语法层次的混淆算法,其基本思想为:利用通用参数集来消除各函数 之间的参数集的差别,从而切断函数调用点与函数定义之间的联系,使得函数调用 关系信息必须通过程序分析才能获得。因此语法层次的混淆是控制流混淆及数据流 混淆的基础。 2 多分支语句的控制流混淆算法 控制流混淆主要研究代码的控制流信息的混淆算法l 2 2 1 。控制流信息是程序分 4 第一章绪论 析的基础,它分成过程内控制流及过程间控制流,因此控制流混淆也分成过程内控 制流混淆及过程间控制流混淆。过程内控制流混淆算法是通过某些变换使得混淆代 码的控制流图中各基本块之间的关系变得混淆,而过程间控制流混淆则是指对函数 调用关系的混淆。基于s w i t c h c a s e 结构,可进行过程内控制流混淆算法及过程 间控制流混淆算法,对混淆算法中s w i t c h 结构引入分支变量,增加逆向分析难度。 3 函数指针数组的代码流混淆算法 数据流混淆是代码混淆的最终目的。软件篡改需要通过逆向分析获得程序中有 关数据之间的关系,这是软件篡改中关键的一步。数据流混淆主是利用数据流分析 中的一些难点而实施的,如指针分析及函数指针分析。 4 混淆算法的有效性评估方法 代码混淆算法的有效性是指代码混淆算法对程序分析的精确度及复杂度的影 响程度。可进行定性评估与定量评估。定性评估,对典型的程序利用待评估的代 码混淆算法进行混淆,对混淆前后的程序采用常用的程序分析算法进行分析,程序 分析结果的变化越大,代表代码混淆算法的效能越高;而定量评估则首先提出了单 循环路径的概念,并且通过对程序分析的常用方法进行分析,抽象,将程序分析的 精确度与程序控制流图所具有的单循环路径数目联系,并以代码混淆算法对程序混 淆前后程序控制流图中的单循环路径数目的比值作为代码混淆算法效能的量值。 1 3 课题的提出 本文在目标代码混淆保护的基础上提出了一些控制流混淆的方法,并应用于软 件保护的混淆器开发中。 对目标代码的代码棍淆技术即目标代码混淆,当前对代码混淆的研究大多是针 对源代码的混淆变换或者j a v a 程序m 2 ,而本文的研究重点就放在针对目标代码的 混淆,对目标代码混淆的研究也只是简单的加密处理或者加壳保护。 同时选择目标代码混淆而不是源代码混淆作为研究内容主要是考虑到以下几 个原因: 1 理解目标代码的难度比理解用高级语言写的源代码的难度要大得多; 2 对目标代码进行混淆能够消除高级语言传承下来的一些特征,能够使得反编 译和分析变得更加困难; 3 目标代码相对于高级语言写的源代码更容易解析,所以容易实现混淆算法; 6 第二章软件保护及相关技术 第二章软件保护及相关技术 当今盗版软件十分普遍,给软件产业带来了巨大的损失,为了防止软件的非法 复制、盗版,保护软件开发商的利益,就必须对软件进行保护。逆向分析技术的提 高,涌现出许多软件破解手段,针对软件破解,涌现出许多不同的软件保护方法, 本章简要介绍几种常见的软件保护方法,并评析其优缺点。 2 1 序列码验证机制 序列码验证机制是目前使用最广泛的软件保护方式缒7 2 4 1 ,用户从网络上下载的 共享软件后,一般都有使用时间上的限制,当过了软件的试用期后,软件使用者必 须注册成功后方能继续使用。注册过程一般是根据用户自己的私人信息( 如用户名、 e m a i l 、机器码、主机号、网卡号、硬盘序列码、计算机名称等) 连同信用卡号码作 为输入,通过注册算法生成一个序列码,在用户得到这个序列码后,按照注册需要 的步骤在软件中输入注册信息和序列码,其注册信息的合法性由软件验证通过后, 软件就会取消使用功能上的限制,这种注册过程实现起来比较简单,不需要额外的 成本,用户购买也非常方便,在互联网上的软件8 0 都是以这种方式来实现软件使 用权限限制。 软件验证序列码的合法性过程,实际是验证用户名和序列码之间的数学映射关 系的运算过程。映射关系由软件设计者制定,所以各个软件生成序列码的算法是不 同的。显然这个映射关系越复杂,序列码就越不容易被破解。根据映射关系的不同, 程序检查注册码通常有如下三种方法: 1 以用户名作为输入变量,通过映射函数f 进行变换,得到的值与序列码进 行比较,或者对序列码做逆变换得到用户名。 序列码= f ( 用户名) 或者用户名称= f q ( 序列码) ( 2 1 ) 根据用户名生成序列码,再将用户输入的序列码进行比较的过程,等同于在用 户软件中再现了序列码的生成过程,实际上是非常不安全的保护方法,不论其换算 过程多么复杂,解密者只需把注册算法过程从程序中提取出来就可以编制一个通用 的注册程序( 注册机) 。而根据序列码生成用户名与用户的用户名进行比较的方法, 7 广东工业大学硕士学位论文 实际上序列码生成算法的逆过程,如果正向算法与逆向算法不对称,解密者想要解 密比较困难,同时加密算法设计也是比较困难。 2 通过对等函数检查序列码,如果输入的用户名和序列码满足式( 2 2 ) ,就认 为输入的是正确的序列码。采用这种方法可以做到在进行检验时内存中不出现正确 序列码的明文。 e ( 用户名称) = e ( 序列码) ( 2 2 ) e 、e 是两种完全不同的算法,但用户名通过e 算法计算出的特征字等于序列 码通过只算法计算出的特征字,这种算法在设计上比较简单,保密性相对以上两种 算法也要好的多。如果能够把e 、e 算法设计成不可逆算法的话,保密性相当的好; 可一旦解密者找到其中之一的反算法的话,这种算法就不安全了。 3 、对用户名和序列码作某种变换使得结果和某个特定的值相等,则可以认为是 合法的用户名或序列码对。 特定值= f ( 用户名,序列码) ( 2 3 ) 这个算法使用户名与序列码之间的关系不清晰,但同时也失去了用户名于序列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论