收稿日期! !"#$%"&%#(! 修回日期! !"#$%"*%"# ))基金项目! 广东省科技计划资助项目 "!"##b"#"!"""&$ #!广州市应用基础研究项目
"##M$##&"*,&# !广州市水务科技计划资助项目
作者简介!邵孟良"#+*!%# $男$福建连江人$讲师$硕士$主要研究方向为计算机系统安全%大数据处理"BK/6iB7U3#('4567# !齐德昱"#+& +%# $
男$内蒙古人$教授$博导$主要研究方向为计算机体系结构%软件体系结构%计算机系统安全!刘东文"#+*&%# $男$工程师$硕士$主要研究方向为自
动控制系统故障诊断技术%计算机控制系统4
一种多态内联代码混淆算法
!
邵孟良
#!!
! 齐德昱
!
! 刘东文
'
"#4广州南洋理工职业学院 电子信息工程系$ 广州 &#"+""! !4华南理工大学 计算机科学与工程学院$广州
&#"($"! '4广州市水务科学研究所高新技术研究室$ 广州 &#"!!"#
摘)要! 针对软件代码混淆算法中的内联方法存在混淆结果单一性问题$提出了一种多态内联代码混淆算法&
基于有限状态自动机" S9<#建立了算法理论模型$对每个内联的方法体选择差异性的混淆实现$并通过理论分
析说明了提出的算法在隐蔽%强度和执行开销方面的有效性$最后把提出的算法与 9/027/GH 的内联算法进行了
实验比较& 实验结果表明$提出的算法在程序复杂度以及控制流结构的复杂度方面都得到了很大提高$验证了
其对代码混淆强度的提升
&
关键词! 白盒子安全! 代码混淆! 多态内联! 有限状态自动机
中图分类号! =8'"+]!)))文献标志码! >)))))文章编号! #""#%'(+&"!"#&#"(%#*,*%"$
26?
!#"4'+(+ @A4?BB04#""#%'(+&4!"#&4"(4"$#
86U-76GJK?5?0U?0D562D6LVIB5/E?60 /U16G?EK7
9K/6<D01U?/01
#! !
! g?ZD-I
!
! R?I Z601FD0
'
"#GI)E/G#0K2)5/.#$'5H$0#.3,/'#$ K$%'$)).'$%! @4,$%O"#4 P,$*,$% !#22)%)! @4,$%O"#4 &#"+""! !"'$,% !G!#22)%)#0!#3E4/).J5')$5);
K$%'$)).'$%! J#4/" !"'$, 8$'9).6'/*#07)5"$#2#%*! @4,$%O"#4 &#"($"! !"'$,% 'GQ'%"R7)5" ?)6),.5" +,-#.,/#.*! @4,$%O"#4 Q*S.,42'5?)R
6),.5" H$6/'/4/)! @4 , $ % O"#4 &#"!!"! !"'$,#
!"#$%&'$$ >?77?01/EEKDDN?BED05D6VEKD760676GJK?B7 6V6IEJIEGDBIUE?0 EKD?0U?0?017DEK62 6V562D6LVIB5/E?60 /U16%
G?EK7
! EK?BJ/JDGJG6J6BD2 /H?02 6VJ6U-76GJK?5?0U?0D562D6LVIB5/E?60 /U16G?EK74b/BD2 60 V?0?EDBE/ED/IE67/E60 "S9<#! ?E
DBE/LU?BKD2 EKDEKD6G?5/U762DU6V/U16G?EK7FK?5K V6GD/5K ?0U?0?017DEK62 L62-?EJDGV6G7D2 /BDUD5E?WD6LVIB5/E?60 ?7JUD7D0%
E/E?60! /02 2DB5G?LD2 ?EB/W/U/L?U?E-?0 EDG7B6V5605D/U7D0E! BEGD01EK /02 DND5IE?60 6WDGKD/2 L-EKD6G-4S?0/UU-! 567J/GD2 ?E
F?EK EKD?0U?0?01/U16G?EK7JG6J6BD2 L-9/027/GH L-DNJDG?D05D4fNJDG?D05DGDBIUEBBK6FEK/E06E60U-EKDGD?B/1?/0E?7%
JG6WD7D0E60 EKD567JUDN?E-6VJG61G/7/02 560EG6UVU6FBEGI5EIGD
! LIE/UB6EKDWDG?V?5/E?60 /G1IDBEK/EEKDBEGD01EK 6V562D6L%
VIB5/E?60 ?BLDEEDGEK/0 LDV6GD4
()* +,%-#$ FK?EDL6NBD5IG?E-% 562D6LVIB5/E?60% J6U-76GJK?5?0U?0D% S9<
!
)引言
软件代码的安全保护是计算机安全领域的一个重点研究
内容& 随着互联网的飞速发展与大数据时代的到来!分布式计
算环境在给人们带来更强的计算能力和更大的灵活性的同时!
也使软件代码不可避免地运行在不可信的节点上!从而使软件
代码面临更加严峻的安全问题
& 相对于攻击者并不知晓攻击
对象内部情况的黑盒子攻击!这种暴露软件代码!通过逆向分
析代码的运行!并对代码进行恶意窜改或盗取的安全攻击被称
为白盒子攻击
'#(
& 目前白盒子攻击的威胁正在快速上升和不
断演化& 软件代码混淆技术
'!(
是近十年来发展起来的一种软
件白盒子安全保护技术& M6UULDG1等人
'' Y((
将软件代码混淆变
换分为外形混淆) 控制混淆)数据混淆和预防性混淆四类!并提
出采用强度) 耐受性和代 价 作 为 评 价 软 件 代 码混淆的性 能
指标&
外形混淆的原理是将程序中无关紧要的信息进行删除或
者对程序中的类名)方法名等进行替换!使其违背见名知义的
软件工程原则
'*(
& 文献',!+( 属于外形混淆的研究& 由于外
形混淆只是简单的信息删除或者名字替换!虽然它是典型的不
可逆混淆算法!经过外形混淆的程序进行攻击不可能恢复程序
的原貌
'#"(
!但是只要理解程序各个模块的含义就可能对程序
产生威胁
!所以安全性不高& M?7/E6等人
'##(
提出基于字节码
中的标志符修正的反混淆方法!该方法可用于攻击标志符重命
名的外形混淆算法&
数据混淆是对程序的数据域和数据结构进行混淆!包括变
量存储和编码混淆)变量聚合和分裂混淆)顺序调整混淆等&
数据混淆不对程序的代码进行特意修改!只针对程序中出现的
各种数据结构进行变换& 文献'#!!#'(属于数据混淆的研究&
预防性混淆是针对一些专用的反编译器而设计的!主要针
对反编译工具的弱点来设计混淆方案&
控制混淆是一种被广泛使用的代码混淆方法& 程序的控
制转换过程的信息是追踪定位程序状态的重要线索!如何保护
第 '! 卷第 ( 期
!"#& 年 ( 月)
计 算 机 应 用 研 究
>JJU?5/E?60 \DBD/G5K 6VM67JIEDGB
;6U]'! C6](
QI04!"#&