基于异常的中间语言代码混淆器的设计与实现

来源 :电子科技大学 | 被引量 : 1次 | 上传用户:sjk29001431
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
如今,平板电脑,智能手机,Mac电脑等已经越来越多的进入了人们的生活,以往Window和Intel的组合不再独大。为了使得很多应用程序一次编写之后都可以在各种平台运行,类似于Java这种中间性语言就越来越受到欢迎,Toibe刚刚发布的2012年3月份编程语言中,Java依然排行第一。但是Java等中间性语言很容易受到逆向工程的攻击,因为它们是定义完善,开源,以及以字节码执行的语言。所以,需要使用一种比较安全的保护Java等程序的方法,混淆,即把一个程序的源代码转变为更复杂,但是语义一致,运行结果也相同的代码。通常代码混淆包括改变控制流,改变标识符名字,移除一些与程序运行无关的信息等。目前对于混淆的研究一般集中在“增加不透明谓词来改变控制流”,“加入多余语句”,“改变标识符名字”等方法上。本文首先对基于控制流的混淆方法进行了细致的研究,提出了一些改进,在此基础上提出了一个全新的方法,通过Java等语言的异常机制来混淆程序代码:在普通分支中加入异常指令,并且把正确分支的入口地址放到异常处理表中,再添加一些欺骗和多余的分支起迷惑作用,程序通过异常处理表查询并且跳转到正确的分支执行。我们还对基于异常的代码混淆方法进行了扩展和改进,提出了间接异常链接和多重异常链接的方法,这两种方法增加了分支的数量和分支的复杂度,从而使反编译器和反混淆器更难以破解。以上述理论为基础,本文设计和实现了一个Java混淆器,可以对Java编译生成的类文件进行六种不同的混淆,指定混淆强度和最大时间开销,还可以对类文件进行控制流图的分析。通过本文实现的混淆器对常用的排序算法的源代码进行了控制流混淆和异常混淆,使用性能测试工具对混淆后的代码执行时间,空间大小进行了测试和对比,证明了混淆后的代码在执行性能和文件大小上不会有太大的负载。最后本文使用三个反编译器对混淆结果进行了反编译测试,证明了基于异常的代码混淆方法是有效的,而且在很多方面还要优于传统的混淆技术。结合异常混淆和控制流混淆,能抵御大多数常见反编译器的攻击。
其他文献
现实中,图像在被获取和被传输时常常会受到各种各样的噪声的干扰,例如高斯白噪声、脉冲噪声和乘性噪声等.为了提高图像的视觉质量以及便于各种后续处理(如图像分割和文字识别
时间一直贯穿客观事物发展的始终,作为记录和管理客观世界信息数据的数据库技术,必然要将"时态"作为其理论研究和实际应用过程中的一个重要方面.由于各种原因,当今的主流数据
近年来,无线通信系统是一个受到广泛讨论的话题,同时,人们对于小区移动电话的需求也在迅猛增加,未来无线通信系统趋向于能够提供各式的服务,包括语音、数据、图像等等。直接序列扩
作为传递信息的重要媒体和手段——图像信息是十分重要的。随着信息技术的进步,数字图像处理技术得到迅速的发展,其研究内容已经由静态图像处理发展到了对序列图像、动态连续图
人脸建模和动画一直是计算机图形学中非常活跃的研究领域,它在电影制作,计算机游戏,视频会议,人机接口等领域都有广泛的应用。MPEG-4是新一代的多媒体压缩标准,采用基于对象的编码
矿山开采中人们希望能随时了解和掌握露天矿的地质构造,以便为矿山开采提供决策支持。然而目前的地理信息系统(GIS)对数据分析解释局限于二维静态表达、三维可视化能力严重不
DSP-ADPCM语音采集压缩卡是四川大学图形图象研究所新研制的集语音采集和回放功能于一体的硬件设备。本文首先阐述了DSP-ADPCM语音采集压缩卡的基本工作原理、硬件结构、技术
行人再识别作为公共场所视频监控中最重要的技术之一,受到了研究者的广泛关注。目前,行人再识别方法普遍通过提取行人的颜色、纹理、形状等低层特征来进行行人的区分,而行人
粗糙集最初由Pawlak提出,它是基于不可分明关系来对信息分类,进而处理不精确、不确定与不完备数据。它在人工智能,数据挖掘和知识发现等领域得到了广泛的应用。而模糊集理论
本文在对目前多agent计算本质分析的基础上,基于二分图的理论,建立了多agent并行计算模型。构建了动态的多agent系统。主要包括如下工作: (1) 基于二分图的理论,构建了多agent