APP下载

基于指令交换的代码混淆方法*

2019-07-08祝跃飞

软件学报 2019年6期
关键词:指令语义程序

潘 雁, 祝跃飞, 林 伟

(数学工程与先进计算国家重点实验室,河南 郑州 450001)

据2016年软件联盟(the software alliance,简称BSA)发布的全球软件调查显示,2015年,全球范围内有高达39%的已安装软件未经合法授权,这些非法授权软件导致的损失高达几千亿美元.与此同时,代码逆向分析技术的发展,使得软件保护技术的不断发展与创新尤为重要.

Collberg于1997年提出通过将源代码中逻辑相近的变量、数组等进行物理分离[1],物理分离的思想迅速被应用于二进制代码混淆算法中.Wroblewski提出了指令与指令序列乱序的思想[2],但其给出乱序的充分条件不够准确;Birrer等人提出了基于程序切分的代码混淆方法,将代码块切分成多个指令片段,并将其随机打乱分布在物理地址中,利用跳转地址表保存切片的保存顺序[3].而在工程实现中,指令乱序是通过无条件跳转的jmp、变形的短跳转 call等连接指令片段,能较大程度影响逆向分析人员的逻辑.但随着自动化逆向分析工具的不断发展,Ollydbg等工具的Trace功能能够较好地还原执行流程,辅助逆向人员进行分析.其中,指令序列交换的思想被多次提出[2,4],但是未进行系统化地分析与实现,直至2012年,z0mbie提出了基于X86指令架构的对象集的概念,开发了XDE反汇编引擎分析X86指令的对象集,并简单探讨了相邻指令交换的条件,但是不够完善和准确.

软件程序是由指令构成的序列,序列不同使得程序语义不同,代码混淆即通过将指令替换、乱序、膨胀等实现与原始程序相同的语义……

登录APP查看全文

猜你喜欢

指令语义程序
听我指令:大催眠术
语言与语义
试论我国未决羁押程序的立法完善
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
“上”与“下”语义的不对称性及其认知阐释
创卫暗访程序有待改进
认知范畴模糊与语义模糊