【技术实现步骤摘要】
一种基于LLVM的指令加花混淆方法及装置
[0001]本专利技术涉及计算机安全
,尤其涉及一种基于LLVM的指令加花混淆方法及装置。
技术介绍
[0002]随着移动互联网的不断推广,各类软件的使用频率也大幅增加,相应的,软件的知识产权问题也受到了严重威胁,给企业和个人造成了巨大损失。代码混淆技术是保护软件不被篡改的最有效的方法之一。代码混淆将计算机程序的代码转换成一种与原始功能相同但更难以阅读和理解的形式,其目的不在于阻止逆向工程,而在于加大逆向的难度。指令混淆是一种典型的代码混淆方式,可以进一步分为指令替换、指令加花等。
[0003]指令加花的目的是向程序中添加一些无用的信息,这些信息不会改变程序的行为,但是可以将原始的程序隐藏在不相关的代码中来干扰逆向工程师的分析。传统的指令加花方法主要分为两种思路,一种是直接在源代码中间插入一些无关的变量,使得代码更加复杂,迫使逆向工程师花费更高的代价来删除无用的指令,另一种是在指令的某些位置插入一些不完整的字节,导致反汇编出错。这两种方式能简单、有效地加大反汇编的难度, ...
【技术保护点】
【技术特征摘要】
1.一种基于LLVM的指令加花混淆方法,其特征在于,包括以下步骤:将待混淆的源程序转换为LLVM中间表示文件,并提取函数、原始基本块和指令信息;对每一个原始基本块内的所有指令进行依赖分析,按照指令间的依赖关系将原始基本块内的指令拆分为若干指令依赖集合,每个所述指令依赖集合中的指令之间存在数据依赖关系;从所述指令依赖集合之间随机选择一个位置,将所述原始基本块切分为第一基本块和第二基本块;在所述第一基本块和所述第二基本块之间插入叠加跳转指令,所述叠加跳转指令包括与所述第二基本块不同的第三基本块和第三基本块与第一基本块、第二基本块之间的跳转关系;将混淆后的中间表示文件转换为目标平台的可执行文件。2.如权利要求1所述的方法,其特征在于,在所述第一基本块和所述第二基本块之间插入叠加跳转指令,所述叠加跳转指令包括与所述第二基本块不同的第三基本块和第三基本块与第一基本块、第二基本块之间的跳转关系,包括:以切分后的第二基本块为原型创建副本得到副本基本块;随机修改副本基本块中指令的操作符和操作数得到第三基本块;使用动态不透明谓词构建所述第一基本块、第二基本块和第三基本块之间的跳转关系,当条件为真跳转到所述第二基本块,当条件为假跳转到所述第三基本块。3.如权利要求1所述的方法,其特征在于,还包括在所述第一基本块和所述第三基本块之间插入虚假循环指令,所述虚假循环指令包括循环入口、循环条件和循环体;其中所述循环条件为从所述原始基本块中随机选择的变量。4.如权利要求3所述的方法,其特征在于,还包括当跳转关系中的条件为假时,跳转到循环入口;当满足循环条件时会跳转到循环体,直到不满足循环条件,跳转到第三基本块。5.如权利要求1所述的方法,其特征在于,所述第三基本块的数量为2个及以上。6.一种基于LLVM的指令加花混淆装置,其特征在于,包括以下子系统:提取相关信息子系统、依赖分析和基本块切分子系统、插入垃圾指令子系统和生成可执行文件子系统;其...
【专利技术属性】
技术研发人员:文伟平,王雅仪,刘琛,李成扬,方莹,
申请(专利权)人:北京大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。