论文部分内容阅读
反编译和逆向分析技术的发展,提高了对程序代码的分析能力,较好解决了代码移植、程序优化、系统安全等方面的疑难问题,同时也大大降低了软件的安全性。除了各国政府出台保护软件安全的相关法律法规,软件开发人员不断提出好的软件保护方法来保证软件安全。代码混淆技术通过混淆转换算法,提高代码分析和阅读的难度和代价,而控制转换混淆是代码混淆中最重要的技术。
本文在总结常见的软件保护方法和控制流混淆算法基础上,提出了变形花指令混淆转换算法和PE节段动态加密方法,目的是提高逆向分析的难度和阻止反拷贝操作。
为验证算法有效性,进行了变形花指令算法实验。利用代码块间隙来确定可以插入花指令的待选块,应用无条件跳转指令扩充法对指定代码段内的指令进行混淆变换,再应用反条件跳转指令替换法对代码段内条件跳转指令进行变换,最后在代码段中的无条件跳转指令后随机添加花指令。
本文实现了PE动态加密。通过在PE中生成新的节段,将需要加密的重要代码或数据添加到该代码节段中,然后通过内存查找定位到这个段并对其进行加密解密操作。调用保护代码段后,再进行加密还原,防止代码被DUMP出内存进行分析而获得控制信息。
在上述的工作基础上,设计了一个目标代码混淆器。该软件集成了PE格式文件操作、反汇编操作和混淆转换算法操作。开发反汇编器的目的是为了较好翻译转换PE格式的目标代码,提取其控制信息,方便进行控制流混淆操作。所利用到的反汇编算法为线性扫描和递归遍历相结合的混合扫描算法,为提高反汇编结果的正确率,采用线性扫描和递归遍历相结合的混合扫描算法。
本文最后给出了算法实验结果分析,并对本文的研究工作出了总结,算法产生的花指令带有很大的随机性,即使存在一些特征值,但特征值的数量巨大,完全列举所有情况需要巨大的工作量。实验结果显示,文中算法有较好的抗静态分析能力,不易找到特征码而被去花器删除。
在代码混淆方面,采取添加花指令和加密相结合的算法,较好地增强了C/C++编译生成的PE软件代码的安全性,有效的提高了逆向分析的难度,达到了课题研究的预期效果。