基于源代码植入的针对函数指针数组的反代码迷惑.pdfVIP

基于源代码植入的针对函数指针数组的反代码迷惑.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于源代码植入的针对函数指针数组的反代码迷惑.pdf

基于源代码植入的针对函数指针数组的反代码迷惑木 卿海军1钟诚1张莲2 1广西大学计算机与电子信息学院,南宁530004 2广西大学人事处,南宁530004 摘要:代码迷惑是以提高代码理解难度及增加逆向工程难度为目的的一种程序变换技术。基于函 数指针数组的代码迷惑技术使得函数的调用关系变得难以分析,该技术的控制流变换又使得数据流及 控制流的分析变得复杂。本文提出一种基于源代码植入的针对函数指针数组的反迷惑技术,它将程序 运行时的动态信息记录下来以达到反迷惑的效果,经过对迷惑处理后的程序进行一定的简化,可使得 源程序的分析精度得以提高、分析复杂度也得以降低。 关奠词:代码迷惑反代码迷惑函数指针源代码植入 1引 言 代码迷惑【I】是针对恶意主机问题而提出的一种保护客户代码的技术,它通过对代码进行程序变换,提 高变换后代码的理解难度,以及增加逆向工程的实施难度,以此来达到保护客户代码的目的。构造代码迷 惑算法的研究已经比较成熟【2】。文献【l,3】对此有较全面的分类与综述。然而代码迷惑算法脆弱性方面的研 究还不够【4l。反代码迷惑技术的价值和主要作用:①评价代码迷惑的有效性;②为代码迷惑技术的设计提 供思路;③对抗迷惑的病毒及恶意软件。目前比较常用的反代码迷惑技术有:①程序切片技术,它根据选 择的语义来简化程序【5-7】,程序切片的过程就是删除掉和分析者感兴趣的语义无关的程序片断,利用这种技 术能简化代码,去除无用的垃圾代码。②模式匹配技术,它检测出一些常用于某个迷惑器中的固定的不透 明谓词,这种方法对于局部的不透明谓词(该不透明谓词位于一个单一的基本块中)特别有效。③统计分 析方法,它通过反代码迷惑程序加载已迷惑的程序,监测有关谓词执行时的结果,并对该结果进行统计分 析,若某一谓词在大量的测试中都恒定为真或假,则认为该谓词为不透明谓词。 本文利用源代码植入技术,研究针对函数指针数组的反代码迷惑方法,并采用函数指针数组迷惑技术 对迷惑处理后的程序进行简化,以使得隐藏的函数调用变得明显。 2基于函数指针数组的代码迷惑变换分析 , 为了分析和说明基于函数指针数组的代码迷惑变换技术[21,考虑图1左半部分所示的源程序,其经过 引入函数指针数组以后变换的结果如图1右半部分所示。在该变换中所有原来调用函数的地方,通过引用 对应函数指针数组元素来调用相应的函数。但是这样做还没有起到迷惑的作用,因为在哪个调用点调用了 哪个函数仍然是明显的。 在图2中每个方块代表一个基本块,左图是对原程序进行基本块划分以后的程序控制流图,而右图表 ‘基金资助l广西科学基金(桂科自0728033). 其他基本块没有函数调用。根据图2的右图,在程序代码中出现函数调用时,都可以以月f】的形式出现,而 在进入各基本块时改变f的值使得以司成为当前基本块中调用的函数。图3为动态改变f的值时的变换结果。 变量f的初值为0,考虑当 前块,若后继块中有函数调 衔ncludestdio.h #includestdio.h inta(int曲{return肿1;l typedefint(+FUNC)(int); 用,则将f增加一个值,增 int b(intx)lreturnx-l;) inta(int神{return肿1;l 加的值的大小为后继块的第 int c(intx)lretum.抖2;l intb(int曲{returnX-1;l void int 一个函数调用位置值减去当 mainO c(int曲{retulTl量也;) void {int五),;

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档