(计算机应用技术专业论文)花指令模糊变换策略研究与实现.pdf_第1页
(计算机应用技术专业论文)花指令模糊变换策略研究与实现.pdf_第2页
(计算机应用技术专业论文)花指令模糊变换策略研究与实现.pdf_第3页
(计算机应用技术专业论文)花指令模糊变换策略研究与实现.pdf_第4页
(计算机应用技术专业论文)花指令模糊变换策略研究与实现.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

(计算机应用技术专业论文)花指令模糊变换策略研究与实现.pdf.pdf 免费下载

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

文档简介

南京邮电人学硕j 匕研究生学位论文 摘要 摘要 本文对代码模糊变换技术中的花指令模糊变换进行了深入研究。花指令即垃圾字节或 垃圾指令,被添加到程序代码中,可起到迷惑反汇编器的作用。在软件保护领域,是对抗 静态分析的有效手段之一。目前花指令的实现形式主要有两种,一种是在机器代码中添加, 一种是在源程序代码中添加。本文主要探讨第一种情况。 本文首先分析了相关课题的研究背景和研究状况,然后又介绍了花指令模糊变换中所 使用的相关技术,如p e 文件结构、反汇编方法、逆向工程以及代码模糊变换评测方法等 内容。 在相关研究的基础上,本文根据目前花指令模糊变换方法简单,容易被相关工具自动 去除等问题提出了两种改进方法:“j m p 扩展”和“j m c 变换”,研究了这两种策略的工作 流程和算法描述。与此同时,对花指令模糊变换的逻辑一致性问题进行了简单探讨,说明 了经过花指令模糊变换并不改变程序的逻辑性。 最后,论文介绍了自编写的花指令变换软件j c e e 。介绍了系统所采用的关键数据结 构与系统实现方法。对可执行程序进行了变换,分析了变换的结果。实验分析结果表明改 进的花指令模糊变换方法能够防止被工具自动去除,增加了复杂性,在实践上具有一定的 实用价值。 关键词:代码模糊变换,花指令,反汇编,逆向工程,软件保护,静态分析 南京邮电大学硕士研究生学位论文 a b s w a c t a b s t r a c t t h i sa r t i c l em a i n l ys t u d i e st h ej u n kc o d eo b f u s c a t i n gt r a n s f o r mo fc o d eo b f u s c a t i o n t e c h n o l o g y j u n kc o d ei sr u b b i s hb y t e so rr u b b i s hi n s t r u c t i o n s ,w h e nt h e ya r ei n s e r t e di n t ot h e p r o g r a mc o d e ,t h e yc a nd e s t r o y st h ef u n c t i o no f t h ed i s a s s e m b l et o o l s ,l e tt h et o o l sg e tt h ew r o n g r e s u l t i ns o f t w a r ep r o t e c t i o nf i e l d ,i ti sa ne f f e c t i v em e t h o do fa n t i s t a t i c a n a l y s i s c u r r e n tt h e r e a r et w om a i nr e a l i z a t i o ns t r a t e g y , o n ei si n s e r t st h ej u n kc o d ei n t ot h eb i n a r yi n s t r u c t i o n s ,t h e o t h e ri si n s e r t st h ej u n kc o d ei n t ot h es o u r c ec o d e t h i sa r t i c l em a i n l yd i s c u s s e st h ef i r s ti n s t a n c e f i r s ti n t r o d u c e st h eb a c k g r o u n da n ds t a t u so f t h i ss u b j e c t i n t r o d u c e st h er e l a t e dt e c h n o l o g y , i n c l u d e sp ef i l ef o r m a t ,d i s a s s e m b l et e c h n i q u e ,r e v e r s ee n g i n e e r i n ga n de v a l u a t i n gw a y s o nt h eb a s i so fr e l a t e dr e s e a r c h ,t h i sa r t i c l ed i s c u s s e st w om e t h o d sf o rt h ep u r p o s eo f p r e v e n t i n gt h ej u n kc o d eb er e m o v e da u t o m a t i c a l l yb yt o o l s t h e ya r e “j m pe x p a n d ”a n d j m c s w t i c h ”,a r t i c l es t u d i e st h e i re x e c u t i o nf l o wa n da l g o r i t h m a r t i c l ea l s od i s c u s s e st h el o g i c c o h e r e n c eo f t r a n s f o r m ,e x p l a i n st h a tj u n kc o d eo b f u s c a t i n gt r a n s f o r md o e sn o tc h a n g et h el o g i c o f t h ep r o g r a m a tl a s t ,a r t i c l ei n t r o d u c e st h ej u r l kc o d eo b f u s c a t i n gt r a n s f o r ms y s t e m “j c e e ”,i n t r o d u c e s t h ek e yd a t as t r u c t u r ea n dr e a l i z a t i o nm e t h o d t h r o u g ht r a n s f o r m i n gs o m ep r o g r a m s ,g e t sa n d a n a l y s e st h er e s u l to f t r a n s f o r m t h er e s u l ta n a l y s i si n d i c a t e st h a tt h em e n d e d j u n kc o d ec a i ln o t b er e m o v e da u t o m a t i c a l l yb yt o o l s t h en e wm e t h o di n c r e a s e st h eu t i l i t yv a l u eo f j u n kc o d ei n p r a c t i c e k e yw o r d s :c o d eo b f u s c a t i o n ,j u n kc o d e ,d i s a s s e m b l e ,r e v e r s ee n g i n e e r i n g ,s o f t w a r ep r o t e c t i o n , s t a t i ca n a l y s i s i l 南京邮电大学 硕士学位论文摘要 学耪、专照:工学计算撬应嗣技术 研突方窿:计算税在逶信中的应用 搏 老:j 堕缎戮究垒骜彝强譬羲舞至墨攘壹羹整 蘧嚣:藏撂令模攒变换蒙黪研究与实瑷 英文题目:t h er e s e a r c ha n dr e a l i z a t i o no fj u n kc o d e o b f u s c a t i o n 主题再:拽码模糊变换花攒令反派缡逆超工程 软件保护静态分析 k e y w o r d s : c o d eo b f u s c a t i o nj u n kc o d e d i s a s s e m b l e r e v e r s ee n g i n e e r i n g s o f t w a r ep r o t e c t i o n s m i l ea n a l y s i s 南京邮电大学学位论文独创性声明 y8 5 0 9 5 7 本人声明所呈交的学位论文是我个人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的 地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包 含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材 料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了 明确的说明并表示了谢意。 研究生豁雄嗍_ 些一7 南京邮电大学学位论文使用授权声明 南京邮电大学、中国科学技术信息研究所、国家图书馆有权保留 本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其 他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一 致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布 ( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权 南京邮电大学研究生部办理。 研究生签名:址导师签名:监日期:! 塑 南京邮屯大学硕士硼究生学位论文前言 1 2 j l 一 日u 舌 技术来源: 自从上世纪六十年代计算机病毒出现以来,病毒与反病毒技术都在不断地发展。最基 本也是最重要的反病毒技术就是特征检测技术。通过分析病毒体的特征来对病毒进行识别 和查杀。病毒编写者为了使病毒能够躲过反病毒软件的特征码检测,发明了代码模糊变换 技术( c o d eo b f u s c a t i o n ) m 。因此代码模糊变换技术最早是应用在病毒编写方面。技术 研究往往都是一把双刃剑,代码模糊变换策略应用于恶意代码可以增强恶意代码的生存能 力,成为对抗逆向工程分析和检测工具的有效手段。同样,代码模糊变换策略也可以实施 于信息系统安全、软件加密等安全领域。如果将该技术应用于软件保护领域,则可起到对 软件进行保护的目的。 课题研究意义及本人工作: 软件保护技术是软件开发领域里一个非常重要的方面。通常软件是以二进制可执行文 件的形式发布的,软件的二进制代码是破解者攻击的目标。破解者使用工具软件对原始二 进制代码进行分析、逆向工程处理,识别程序的流程,发现隐藏在二进制代码中的重要信 息或对其进行篡改。为了保护软件的知识产权,非常有必要在软件中应用保护技术f 3 ,4 1 。现 在各种各样的软件保护产品也很多,包括各种加壳软件,也包括各种代码模糊变换软件。 当然有保护就有破解,但是保护方法应该总是先于破解方法。因此提出更好更复杂的保护 方法,一是能更好地对软件进行保护,二是可以延缓破解人员对该方法的破解。 本文主要讨论代码模糊变换技术中的花指令( j u n k c o d e ) 模糊变换技术。花指令是对 抗静态分析的有效手段之一,通过破坏静态分析的过程,使静态分析出现错误的结果,从 而影响破解人员分析程序吼因此对花指令进行深入研究很有必要。 本人完成的主要工作有:( 1 ) 在基本的花指令模糊变换策略基础上,探讨构建新的花 指令模糊变换策略;( 2 ) 变换逻辑一致性的简单证明:( 3 ) 花指令模糊变换系统的设计与 实现。 本文组织结构: 全文共分五章:第一章给出代码模糊变换和花指令模糊变换的定义,简要介绍了它们 的作用和关系,以及目前的研究状况和存在的问题;第二章主要对代码模糊变换中所应用 的相关技术进行了简单的概述;第三章在总结当前花指令所存在的问题以及现有策略的基 础上给出了新的花指令模糊变换策略,描述了算法的流程,同时对变换逻辑一致性问题进 行了简单探讨:第四章详细描述了花指令变换系统j c e e 的设计与实现,并对变换结果给 南京1 1 5 l b 大学坝l 研究生学位论文刚吾 出了实验说明;第五章对全文进行了总结并对未来的工作进行了展望。论文的章节组成关 系如下图所示: 花指令模糊变换及其相关技术研究 相关技术 变换策略 前言绪论及逻辑一 j c e e 代码 概述变换系统 结论 致性研究 拽术引言引言引言引言 关键点总 来源 代码模糊p e 文件花指令模系统架构 研究意义变换技术 糊变换策存在的不 本人工作概述 反汇编技 略 关键技术 未 论文花指法模逻辑一致 实验结果 未来展望 结构糊变换技 逆向工程 性研究本章小结 技术 术 本章小结 代码模糊 课题内容 变换评测 本章小结标准 本章小结 图i 论文章节组成关系 南京邮乜大学坝士1 i ;| 1 咒生学位论文第1 章绪论 1 1 引言 第1 章绪论 随着计算机的日益普及和广泛应用,计算机软件产业的发展越来越迅速,同时对软件 的各种非法攻击和未授权使用行为也愈来愈多,软件产品的保护就成为个引人关注的问 题。软件防篡改技术( t a m p e r r e s i s t a n ts o f t w a r e t r s ) 是目前丰要的软件保护技术。该技 术通过采取各种方法对软件进行处理,可以有效保护软件的知识产权,维护软件作者的劳 动成果。该技术包括很多方面,主要包括代码模糊变换技术( c o d eo b f u s c a t i o n ) 、水印技 术( w a t e r m a r k i n g ) 、篡改验证技术( t a m p e r - p r o o f i n g ) 等等。第一种代码模糊变换技术, 用以降低代码的可读性,使逆向工程不能轻易地对代码进行分析;第二种水印技术,通过 在程序中嵌入版权信息或“指纹信息”来减少盗版;第三种篡改验证技术,类似于水印技 术,如果程序发现自身被非法改动后,就会改变自己的行为。【3 6 ,”1 本文主要研究代码模糊变换技术。通过该技术可使软件逻辑功能不变,但是软件的代 码发牛一定程度的变化,使得反汇编工具难以对二进制代码进行有效分析,从而使软件得 到保护,可以不被轻易地破解,保护了软件的知识产权。 代码模糊变换根据不同级别的逆向工程可分为两个层次:反汇编和反编译。在反汇编 阶段,二进制代码被翻译成级别更高的汇编伪代码。而在反编译阶段,汇编代码被翻译成 符合语法规范的高级语言。本文所探讨的代码模糊变换主要针对反汇编阶段,通过设计新 的花指令模糊变换策略来提高软件代码的模糊度,增加反汇编的难度。 1 2 代码模糊变换技术概述 1 2 1 代码模糊变换定义 代码模糊变换( c o d e o b f u s c a t i o n ) 是指通过某种程序代码变换,代码p 的自身结构演 化成新的代码尸,p 和尸皖成相同的逻辑功能。代码经过模糊变换处理后,使得代码难以进 行逆向工程分析。 代码模糊变换的定义反映了两个方面的内容:如果尸不能结束或错误结束,n p 他不 能结束或错误结束;否则p 必须结束并产生和p 相同的输出。1 2 能结束或错误结束;否则p 必须结束并产生和p 相同的输出。【2 南京邮电大学硕士研究生学位论文第1 章绪论 1 2 2 代码模糊变换的策略 模糊变换可以有效地对抗静态分析技术和动态反汇编技术。目前的模糊策略主要有两 种实现方式:基于加密技术的模糊策略和基于多态变换的模糊策略。 ( 1 ) 基于加密变换的模糊策略 加密变换是对代码主要的程序体进行加密,运行时先进行解密,然后执行刚解密的代 码。这样,只要加密时使用的密钥不同,程序体就不同。这种策略可以很好的对抗静态分 析技术,但加密模糊变换策略存在一个问题:在内存中可以得到解密后的原始代码,利用 动态反汇编技术可以对内存中解密后的代码进行反汇编,从而对软件进行篡改或破解。 基于加密变换的模糊策略的基本原理如图卜1 。 图卜l 基于加密变换的模糊策略 b o d y _ s i z e 是加密程序体的长度,b o d y _ s t a r t 是加密程序体的开始地址,k e y 是解密密钥。 程序执行时先运行解密头代码,加密程序体会在内存中被解密,解密后的程序接着就会执 行。这种技术存在一些弊端,例如解密头是固定的,加密策略容易被破解,可以在内存中 得到解密代码等等。有些加密加壳软件就是使用这种技术,但这种技术是软件保护的基本 策略。 ( 2 ) 基于多态变换的模糊策略【l 】 多态变换具有提高分析复杂性的能力,可以增强代码抵抗反汇编的能力。这种技术主 要针对基于加密变换模糊策略的弊端实现的,他能实现对代码的等价变换。在不影响代码 逻辑功能的前提下,通过改变代码流程的控制结构、进行指令替换、花指令插入等,使得 程序的二进制代码呈现出不同的形式。 主要策略有以下几种: 指令替换技术:模糊变换引擎( m u t a t i o ne n g i n e ) 对二进制代码进行反汇编,解码 每一条指令,计算出指令长度,并对指令进行同义变换。例如,将指令x o rr e g ,r e g 变 换为s u bk e g ,k e g ;寄存器k e g l 和寄存器r e g 2 进行互换;j m p 指令和c a l l 指令进 4 南京邮电大学硕士研究生学位论文 第1 苹绪论 行变换等。 指令压缩技术:模糊变换引擎检测反汇编后的全部指令,对可进行压缩的一段指 令进行同义压缩,即用一条指令替换多条指令。压缩技术要改变代码的长度,因此需要对 代码的跳转指令进行重定位。例如指令m o vr e g ,1 2 3 4 5 6 7 8 a d dr e g ,8 7 6 5 4 3 2 1 变换为 指令m o vr e g ,9 9 9 9 9 9 9 9 ;指令m o vr e g ,1 2 3 4 5 6 7 8 p u s hr e g 变换为指令p u s h 1 2 3 4 5 6 7 8 等。 指令扩展技术:扩展技术是把某些汇编指令进行同义扩展,所有压缩技术变换的 指令都可以采用扩展技术实施逆变换,即用多条指令替换一条指令。扩展技术变换的空间 远比压缩技术大的多,有的指令可以有几十种甚至上百种的扩展变换。扩展技术同样要改 变代码的长度,需要对代码中跳转指令进行重定位。 花指令技术:花指令技术主要是在程序体中插入无效指令或垃圾字节,例如空指 令n o p ;指令p u s hr e g m o vr e g ,1 2 3 4 5 6 7 8 p o pr e g :j m p + 垃圾字节等形式。1 3 节有详细介绍。 1 2 3 代码模糊变换的过程 程序p 经过反汇编模块、逆向工程模块和模糊变换模块处理后得到变换后的程序p , 具体过程如图卜2 所示。 图卜2 代码模糊变换过程 反汇编模块的主要功能是对程序二进制代码进行反汇编,得到汇编伪代码,该模块的 输出是后面的模块的输入:逆向工程模块主要是对汇编伪代码进行分析处理( 确定指令长 度、确定跳转位置、过程函数分析等等) ,目的是为保证模糊变换的正确性;模糊变换模 块主要作用就是实现代码模糊变换的功能,对处理过的汇编伪代码进行变换得到新的汇编 伪代码,并对新汇编伪代码进行汇编得到新的二进制代码。 南京邮电大学硕士研究生学位论文 第1 章绪论 1 3 花指令模糊变换技术 1 3 1 花指令模糊变换的定义 花指令模糊变换,是代码模糊变换的一种有效方法,在不改变程序逻辑性的前提下, 通过在代码中添加一些对寄存器没有任何影响的指令或垃圾字节,以起到迷惑反汇编器, 使之不能正确进行反汇编的目的。 7 ,8 ,1 0 花指令按照类别不同可分为两类:可执行式花指令和不可执行式花指令,下面分别介 绍。 ( 1 ) 可执行式花指令 顾名思义,可执行式花指令指的是能够正常运行的但又不改变原始程序逻辑性的一组 无用指令。这类花指令有如下特点:可以正常运行;不改变任何寄存器的值;反汇 编器可以正确反汇编该指令。 例如这样几组花指令就属于该类别:p u s h e a x p o p e a x ;n o p :i n c e a x & d e c e a x 等等。这种类别的花指令组合形式很多,常常用在病毒代码的变形引擎中,病毒在 传播时通过变形引擎随机产生一组该类别花指令并插入到病毒正常代码中,可以改变病毒 的特征码,从而起到变形的作用。 ( 2 ) 不可执行式花指令 不可执行式花指令又名垃圾指令或垃圾字节,是指被插入到原始代码中但又不改变原 始程序逻辑性的一组无用字节。这类花指令有如下特点:不可以正常运行;不改变任 何寄存器的值;反汇编器可能会错误反汇编这些字节。 根据反汇编的工作原理,只有当花指令同正常指令的开始几个字节被反汇编器识别成 一条指令时,才能有效破坏反汇编的结果。因此,插入的花指令应当是一些不完整的指令, 被插入的不完整指令可以是随机选择的。正因为不可执行花指令有这些特点,该类花指令 才能应用到软件保护中。 1 3 2 现状及存在的问题 花指令可用于病毒编写方面和软件保护方面。软件保护方面的作用就是反跟踪和反静 态分析。其实反静态分析的目的也是反跟踪,动态跟踪的过程实际上贯穿着无数的静态分 析过程,静态分析为动态跟踪确定跟踪点,静态分析的顺利进行是破解的基础,所以反静 南京邮电大学硕士研究生学位论文 第1 章绪论 态分析在反跟踪中是非常重要的。静态分析的过程首先是反汇编的过程。只有将程序的二 进制代码f 确反汇编成汇编指令,分析人员才能相对容易地分析程序的功能。正常代码添 加了花指令之后,目的是破坏静态反汇编的过程,使反汇编的结果出现错误。错误的反汇 编结果会造成分析人员的分析工作大量增加,使之不能理解程序的目的,也就很难破解程 序。【5 通过对调试工具o l l y d b g 下一个去除花指令插件的工作原理进行研究,不难发现该插 件去除花指令的方法为根据花指令的特征码进行匹配,然后用n o p 指令替换匹配查找到 的花指令。也就是说,通过匹配花指令的特征码来识别和去除花指令是这类插件的主要工 作原理,因此,如果花指令的特征没在该插件的特征码定义文件中定义,那该插件是不能 去除此花指令的。目前在花指令模糊变换策略中,多以添加形式简单的花指令为主要方法, 因此这类花指令很容易被发现或检测到。归结其原因主要有以下两点: ( 1 ) 特征码问题 目前采用比较多的一种花指令形式是无条件跳转指令j m p 加花指令。这种形式使用 j m p 指令跳过其后紧跟的几个字节的花指令,为了迷惑反汇编器,花指令一般是一个或两 个字节的不完整指令。以此形式为基础,还有一些类似的形式,例如将j m p 指令替换成两 条j e j n e 指令,或者将j m p 指令换成c a l l 指令并在后面添加a d de s p , 4 指令等。使用 该种形式的花指令或者其扩展形式,优点是简单,容易实现,缺点是迷惑反汇编器的程度 有限,效果不明显,最致命弱点是具有特征码,例如e b 0 1 7 7e b 0 2 7 7 7 7e b 0 3 7 7 7 7 7 7 e 9 0 1 0 0 0 0 0 0 7 7 ,这些都可以使用工具自动去除。这种策略通过简单变换后的各种扩展形 势,虽然在一定程度上增强了花指令的生存能力,但是这些扩展形式还是存在特征码,因 此用工具仍可以自动去除。 ( 2 ) 模糊度问题 模糊度即反汇编器产生错误结果的程度,目前各种类型花指令形式简单,复杂性不高, 比如一种形式是直接在原代码中的j m p 指令后添加花指令【7 1 。该种形式的花指令比较容易 实现,但是受代码中j m p 指令个数的限制,如果j m p 指令过少,则代码变换效果不明显。 要想最大程度影响反汇编的结果,就必须设计更为复杂的花指令模糊变换策略。 综合而言,要想改进这些问题,就必须应用多个方法,并保证方法本身的随机性,使 产生的花指令没有固定的特征码。由此,本文提出改进的花指令模糊变换策略的目的就是 保证花指令无特征码并且具有较高的模糊度。 南京邮电大学硕士研究生学位论文笫1 章绪论 1 。4 课题内容 本文着重研究不可执行花指令模糊变换技术,旨在对花指令模糊变换及其关键技术进 行研究。在对现阶段应用的花指令模糊变换策略进行调查研究的基础上,提出新的花指令 模糊变换策略。与此同时,对花指令模糊变换策略进行实践验证,评测该策略的效果,以 便进一步研究并设计出满足安全领域实际需要的花指令模糊变换策略模型和实施方案。 1 4 1 花指令模糊变换算法研究 通过1 3 2 节对当前花指令模糊变换的分析可知,目前花指令变换策略存在特征码, 形式过于简单,容易被识别发现并去除的问题。本文设想如果设计的花指令模糊变换策略 没有特征码或特征模式复杂和多变,那基于特征码检测花指令的办法就会失效。因此本文 给出的花指令模糊变换算法,通过跳转指令使随机产生的花指令和随机个数正常指令融合 在一起的方法来达到迷惑反汇编器并不被自动去除的目的。本算法对目前使用的几种花指 令模糊变换策略进行综合,并进行了扩展,将随机产生没有固定特征码的花指令添加到原 始代码中去。与此同时,对变换的逻辑一致性问题进行了简单研究。 1 4 2 花指令模糊变换系统实现 本课题实现了一个花指令模糊变换系统,该系统实现了花指令模糊变换算法。按照 1 2 3 节介绍的代码模糊变换过程,系统完成从反汇编到模糊变换所有功能。最后系统可以 得到变换后的代码,通过对变换后的代码进行分析来验证花指令模糊变换算法的有效性。 1 5 本章小结 本章首先简要介绍了代码模糊变换技术的定义、变换策略以及变换的过程。然后对本 文所要重点研究的花指令模糊变换技术进行了简要介绍,花指令模糊变换是代码模糊变换 技术中的一种,本章对目前的花指令策略和存在的问题进行了概括。最后给出了本文所要 研究的重点内容以及研究方法。下一章会对代码模糊变换中所使用的技术进行简要概述。 南京邮电大学硕士研究生学能论文第2 帝相关技术概述 2 i 弓l 言 第2 章相关技术概述 本章主瓣介绍与花指令模糊变换相关的基础知识,主要包括p e 文件( p o r t a b l e e x e c u t a b l ef i l ef o r m a t ) ,p e 文髂中煮耍熬字段和操佟方洼i 发汇缡技术( d i s a s s e m b l e ) , 反、汇编的原理和实现方法;逆向工程掖术( r e v e r s ee n g i n e e r i n g ) ,逆向工程所要做的工作 帮实臻方法;代玛摸期交换译溅蠡准,主要霹代疆摸襁变换进抒度羹,逶遘遮些捂拣反蘸 变换的效果。 2 2p e 文件 程3 2 位w i n d o w s 平台下( w i n d o w s9 x n t 2 0 0 0 x p 等) 使用一种称为p e 格式( p o r t a b l e e x e c u t a b l ef i l ef o r m a t ) 靛可械雩亍文译缭褥。遮转文转格式箨攀,可移疆注努。本文掰研究 的模糊变换基于p e 格式文件。【9 】 2 2 1p e 文件结构 p e 文件使用的怒个平馘地址空间,所有代码和数据都拨合并在起,组成一个很大 豹缩稿。文箨的痨容被努裁热不弱鹣繁( s e c t i o n ) ,节中包会筏码或数据,备个节按蕊边 界来对齐,节没有大小限制,是一个连续结梭。每个节都有它是己在内存中嬲一套属性, 比如这个节最嚣包含代码、怒衙只读躐可读写等。 每一个节都有不两静名字;可墩爨逡个名字震寒装示节豁臻嚣。嚣霓黪节 有t e x t ,r d a t a ,d a t a ,i d a t a ,e d a t a ,r e l o c ,r s r o 等。各节的含义如下: t e x t :蕊在编译躐汇薅结哀嚣童产生瓣一静苓,它鹣蠹客金罄是攒令钱羁; r d a t a :悬运行期的只读数据; 。d a t a : 愚初始讫煞数赛节; ,i d a t a :包含其他外来d l l 蛇函数及数据信息,即输入表; e d a t a :蔻p e 文件的输出袭,以供其他模浃弓i 用,一般在d l l 文件中一_ 有; ,r e | o e :保豁基逡蜒鬟定毽表,当装装瑶黟苓能按链接器掰攒定戆熄缝装载交锌对,需 要对指令域初始他的变量谶行调整,基地址重定做液包宙调整所黼幕的数据; ,r s t c : 包禽模块瓣垒霉资源,懿强标、菜纂、燕熬等; q 南京邮电大学硕十酬究生学位论文第2 覃相关技术概述 p e 文件的一个非常好的地方就是在磁盘上的数据结构与在内存中的结构是一致的。装 载一个可执行文件到内存中,主要就是将一个p e 文件的某一部分映射到内存地址空间中。 值得注意的是,p e 文件并不是被作为单一内存映射文件装入内存的,w i n d o w s 在加载p e 文件时遍历p e 文件,并决定哪一部分被映射,磁盘文件一且被装入内存中,其某项的偏 移地址可能与原始的偏移位置不同。图2 一l 很好地表达了p e 文件的结构及其在内存中的 映射情况。 文 q :惩 文件头 2 2 2 相关名词解释 图2 - 1p e 文件结构 况 e 兰 p e 文件的相关名词解释如下: ( 1 ) 入口点( e n t r yp o i n t ) 程序在执行时的第一行代码的地址值,也就是程序真正开始执行的地方。 ( 2 ) 文件偏移地址( f i l eo f f s e t ) 当p e 文件存储在磁盘上时,数据的地址称作文件偏移地址( f i l eo f f s e t ) 或物理地址 ( r a wo f f s e t ) 。文件偏移地址从p f 文件的第一个字节开始计数。 ( 3 ) 虚拟地址( v i r t u a la d d r e s sv a ) 虚拟地址( v i r t u a la d d r e s sv a ) ,又称为内存偏移地址( m e m o r yo f f s e t ) 。与实地址模 式下的分段地址类似,虚拟地址也可以写成“段:偏移量”的形式,这里的段是指段选择 子。 ( 4 ) 基地址( i m a g eb a s e ) 文忭偏侈地址 南京邮电大学积士研究生学位论文 第2 章槲最技术概述 文件在执行时将被映射列指定内存地址中,这个初始内存地址称为基地址( i m a g e b a s e ) ,这个德楚由p e 文件本身设定的。按照默认设鬟,鼹v i s u a lc + + 建立蛉e x e 文件基 溉垃是0 x 0 0 4 0 0 0 0 0 ,d l l 文 牟基地址怒0 x 1 0 0 0 0 0 0 0 ,但是,可以在链接程序时使用b a s e 选项改变这个也址。 ( 辩媚对虚拟拣土韭( r e l a t i v ev i r t u a la d d r e s sr v a ) 相对虚拟地址( r e l a t i v ev i r t u a la d d r e s s ,简称r v a ) 是内存中相对于p e 文件装入地 土止( 基地址) 的偏移量。 2 2 。3 地耋豆转换 有关基地址、虚拟地址、相对虚拟地址、文件偏移地址的关系下面详细阐述。相对虚 叛缝缝、盎掇黉羹缝、墓逮聚之凌静关系鲡下: 相对虚拟地址( r v a ) 一虚拟地址( v a ) 一基地址( i m a g eb a s e ) p e 文件被映射到内存藤,丽一数据楗对于文件头的偏移量在内存中和在磁擞文件中可 戆楚不同藜,这榉就存在豢文传傣移蘧酝鸟虚掇逮缝鹣转换疑题。文搏区块有嚣耱对齐值: 种是磁盘文件中的,另一种是内存中的。p e 文件被映射到内存时,区块总是至少以一个 页边界为开始。也就是说,德个区块的第一个字节对成予某个内存页。在x 8 6 系统中,每 令内存页静大小是4 k b ,鞠0 x 1 0 0 0 个字警,辑疆在x 8 6 系统中,p e 文件区块豹内存对齐 慎一般等于0 x 1 0 0 0 ,每个匮块按o x l 0 0 0 之倍数的内存偏移位置开始。而磁盘对齐值一般 取0 x 2 0 0 ,每个区块按0 x 2 0 0 之倍数的文l 牛偏移位置开始。 勇努,磁掇文件中每个嚣块酶大小嬲定等予磁盘瓣齐蕴静整数嵇,丽区块的实际代码 溅数据的大小不一定刚好是这么多,所以在不足的地方一般以0 x 0 0 来填充,这就是区块 阀的间隙。正瓣为存在区块阀的闯隙,才能应用代码模糊变换技术。 南京邮电大学硕士研究生学位论文 第2 章相关技术概述 d a t a 节 不能映射的节 , r d a t a 节 d a t a 节 7 0 x c o o 。t e x t 节 r d a t a 节j 0 x 8 0 k ”,、 t e x t 节 k 0 x 4 0 节表一j二一 节表 :盘 生。a j l p e 头 p e 头 a d d 2 虚拟偏移 d o s 头部d o s 头部 + 1 l n 。n n 、rn 、,a n n n n n :】山 图2 - 2 地址换算 在图2 2 中,磁盘文件中t e x t 节起始端与文件头的偏移量为a d d l ,映射到内存后,t e x t 节起始端与文件头( 基地址) 的偏移量为a d d 2 。这里,a d d l 的值就是文件偏移地址( f i l e o f f s e t ) ,a d d 2 的值就是相对虚拟地址( r 、,a ) 。假设它们的差值为a k ,则文件偏移地址与 虚拟地址的关系如下: f i l eo f f s e t = r 、,a 一k f i l eo f f s e t = v a - - i m a g eb a s e 一k 2 2 4 重要字段说明 p e 文件的开头是一个简单的d o sm zh e a d e r ,在偏移0 处有d o s 下可执行文件的 “m z ”标志,紧随其后的是d o ss t u b ( 它是一个有效的e x e ,用来显示一个类似“t h i s p r o g r a mc a n n o tr u ni nd o sm o d e ”的错误信息) 。如果程序在d o s 下执行,通过d o sm z h e a d e r 可以识别出这是有效的执行体,然后调用d o ss t u b 显示一个错误信息。紧接着d o s s t u b 的是p eh e a d e r 。p eh e a d e r 是p e 相关结构i m a g e n t h e a d e r s 的简称,其中包含 了许多p e 装载器要用到的重要域。可执行文件在支持p e 文件结构的操作系统中执行时, p e 装载器将从d o sm zh e a d e r 的偏移3 c h 处找到p eh e a d e r 的起始偏移量,从而跳过d o s s t u b 直接定位到真正的文件头p eh e a d e r 处。紧随p eh e a d e r 之后的是节表,它实际上是一 个数组,数组中包含的成员数目和节的数目一致。该数组的每个成员是一个 南京邮电大学硕士研究生学位论文第2 章相关技术概述 i m a g es e c t i o nh e a d e r 结构,包含对应节的属性、文件偏移量、虚拟偏移量等信息。 接下来是p e 文件的真正内容,即一个个的节。在p e 文件的最后是一些调试信息,它们不 会被映射到内存中去。 ( 1 ) d o sm zh e a d e r 定义成结构i m a g ed o sh e a d e r 。结构定义如下: t y p e d e fs t r u c t i m a g e d o s h e a d e r 、“d o s e x eh e a d e r w o r d e _ m a g i c ; m a g i cn u m b e r w o r d e _ c b l p ; ii b y t e so nl a s tp a g eo ff i l e w o r de c p jp a g e si n f i l e w o r dec r l c ; r e l o c a t i o n s w o r d e c p a r h d r ; | s i z eo fh e a d e ri np a r a g r a p h s w o r d e m i n a l l o c ; m i n i m u me x t r ap a r a g r a p h sn e e d e d w o r d e m a x a l l o c ; m a x i m u me x t r ap a r a g r a p h sn e e d e d w o r de s s ;i n i t i a l ( r e l a t i r e ) s sv a l u e w o r d e _ s p ; i n i t i a ls pv a l u e w o r dec s u m ; c h e c k s u m w o r d e i p ; i i n i t i a li pv a l u e w o r dec s j i n i t i a l ( r e l a t i v e ) c sv a l u e w o r de1 f a r l c ; f i l ea d d r e s so fr e l o c a t i o n lt a b l e w o r d e _ o v n o ; o v e r l a y :n u m b e r w o r der e s 【4 jr e s e r v e dw o r d s w o r deo e m i d ,o e mi d e n t i f i e r f o reo e m i n f o ) w o r deo e m i n f o ; “o e mi n f o r m a t i o n ;eo e m i de p e c i f i c w o r d e r e s 2 【1 0 】j r e s e r v e dw o r d s l o n gei f a n e w ;f i l ea d d r e s so fn e we x eh e a d e z i m a g ed o sh e a d e r ,+ p i m a g ed o sh e a d e r ; i m a g e d o s h e a d e r 结构的e _ l f a n e w 成员就是指向p eh e a d e r 结构的r v a 。 e _ m a g i c 包含字符串”m z ”。 ( 2 ) p eh e a d e r 实际就是一个i m a g e n t h e a d e r s 结构。定义如下 t y p e d e fs t r u c t i m a g en th e a d e r sf d w o r ds i g n a t u r e j i m a g ef i l eh e a d e rf i l e h e a d e r ; i m a g eo p t i o n a lh e a d e r 3 2o p t i o n a l h e a d e r : ) i m a g en th e a d e r s 3 2 ,+ p i m a g en th e a d e r s 3 2 j i m a g en th e a d e r s 结构成员含义: s i g n a t u r e :d w o r d 类型,值为5 0 h ,4 5 h ,o o h ,0 0 h ( p e o 0 ) 。如果i m a g en th e a d e r s 的s i g n a t u r e 域值等于”p e o o ”,那么就是有效的p e 文件。 。f i l e h e a d e r :该结构域包含了关于p e 文件物理分布的信息,比如节数目、文件执行机器 等。 。o p t i o n a l h e a d e r :该结构域包含了关于p e 文件逻辑分布的信息,虽然域名有”可选“字样, 1 3 堕塞些皇查兰堡主! 塞生兰竺堡兰 但实际上本结构总是存在的。 第2 章相关技术概述 检验p e 文件的有效性步骤如下: 首先检验文件头部第一个字的值是否等于i m a g e _ d o s s i g n a t u r e ( m z ) ,是则d o s m zh e a d e r 有效。 一旦证明文件的d o sh e a d e r 有效后,就可用e _ l f a n e w 来定位p eh e a d e r 了。 看p eh e a d e r 的第一个字的值是否等于i m a g e n t h e a d e r ( p e o 0 ) 。如果前后两个 值都匹配,那就可认为该文件是一个有效的p e 文件。 ( 3 ) f i l eh e a d e r ( 文件头) f i l eh e a d e r ( i m a g e f i l e _ _ h e a d e r ) 包含在p eh e a d e r ( i m a g en th e a d e r s ) 里面,其结 构定义: t y p e d e fs t r u c t i m a g e f i l e h e a d e r w o r d m a c h i d e ; w o r dn u m b e r o f s e c t i o n s ; d w o r d t i m e d a t e s t a m p ; d w o r d p o i n t e r t o s y m b o l t a b l ej d w o r d n u m b e r o f s y m b o l s j w o r d s i z e o f o p t i o n a l h e a d e r ; w o r dc h a r a c t e r i s t i c s ; i m a g e f i l e h e a d e r , + p i m a g e f i l e _ h e a d e

温馨提示

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

评论

0/150

提交评论