APP下载

基于IDA microcode的控制流反混淆框架设计与实现

2022-07-08符笑彬钟晓雄郑彦斌

桂林电子科技大学学报 2022年2期
关键词:指令

符笑彬, 丁 勇, 钟晓雄, 郑彦斌,2

(1.桂林电子科技大学 广西密码学与信息安全重点实验室, 广西 桂林 541004;2.曲阜师范大学 数学科学学院, 山东 曲阜 273165)

代码混淆是一种常见的软件保护方案,可将目标程序转换为更复杂但在语义上等效的混淆程序,主要目的是让逆向分析人员难以解读出软件的内部逻辑[1]。Obfuscator-LLVM(O-LLVM)是最著名的代码混淆器之一,它可以有效抵御攻击者对混淆程序的逆向分析。O-LLVM官方提供3种混淆方法:指令替换、虚假控制流和控制流平坦化。随后有多位开发者在O-LLVM官方版本基础上进行修改并开源,增加了更多的混淆方案,例如:字符串加密[2]、寄存器间接跳转[3]、函数间接调用[3]、指令虚拟化[4]等。

O-LLVM可以有效保护软件知识产权,同时也被广泛应用在病毒、木马等恶意软件。因此,实现 O-LLVM反混淆对于维护健康的软件安全生态环境具有重要的现实意义。

2015年,Yadegari等[5]提出了一种基于模拟执行的反混淆方法。但是,此类方案主要存在以下缺陷:1)反混淆完整度较低:由于条件分支的存在,很多情况下该方案无法执行到所有可能的路径。例如,在许多恶意软件程序中,只有在满足特定触发条件时,才会执行实现恶意行为的特定代码路径[6]。2)存在多种反模拟执行方案:代码虚拟化[7]、加壳与代码自修改[8-9]。3)补丁二进制困难:补丁二进制文件只能修改原指令,而不能随意添加新指令。

2019年,Kan等[10]提出了基于符号执行的安卓应用程序反混淆方案。虽然符号执行弥补了模拟执行的前2个缺陷,但仍然主要存在以下问题:1)存在多种反符号执行方案:Anand等[11]将符号执行的弱点分为复杂约束、路径发散和路径爆炸,由此设计和实现了对应的反符号执行方案。……

登录APP查看全文

猜你喜欢

指令
听我指令:大催眠术
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
杀毒软件中指令虚拟机的脆弱性分析
巧用G10指令实现椭圆轮廓零件倒圆角
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究
一种基于滑窗的余度指令判别算法
欧盟修订电气及电子设备等产品安全规定
MAC指令推动制冷剂行业发展