【技术实现步骤摘要】
一种基于符号执行和单点逻辑的源代码加固方法及装置
本申请涉及软件安全
,尤其涉及一种基于符号执行和单点逻辑的源代码加固方法及装置。
技术介绍
现如今,移动互联网、物联网、车联网等技术高速发展,终端的数量越来越多,终端中安装的应用程序也越来越多,这给人们的工作和生活带来了极大的便利。应用程序运行过程中会产生一些重要的信息,这引起了攻击者的极大兴趣,使得这些重要信息存在被泄露的风险。目前,攻击者常使用符号执行模型等静态分析工具对应用程序的源代码进行逆向分析破解,获得应用程序的执行逻辑,从而非法窃取、非法篡改应用程序运行过程中产生的重要信息。针对上述风险,现有技术常通过对应用程序的源代码进行混淆,提高源代码的防逆向分析能力,降低应用程序运行过程中产生的重要信息被泄露的风险。但是,现有的控制流平坦化等源代码混淆方法依然存在被破解的风险,源代码的防逆向分析能力还有待提高。
技术实现思路
本申请实施例提供一种基于符号执行和单点逻辑的源代码加固方法及装置,以提高源代码的防逆向分析能力。第一方面,本申请实施例提供一种基于符号执行和单点逻辑的源代码加固方法,所述方法包括:确定待混淆的原始源代码中需要保护的目标变量;在所述原始源代码中插入至少一个中间变量,得到第一源代码;其中,所述至少一个中间变量用于访问所述目标变量;将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,得到加固后的第二源代码;使用不透明谓词对所述第二源代码的函数中的条件变量进行模糊处理,得到加固后的第三源代码。第二方面,本申请实施例还提供一种基于符号执行和单点逻辑的源代码加固装置,包括:确定模块,用 ...
【技术保护点】
1.一种基于符号执行和单点逻辑的源代码加固方法,其特征在于,所述方法包括:确定待混淆的原始源代码中需要保护的目标变量;在所述原始源代码中插入至少一个中间变量,得到第一源代码;其中,所述至少一个中间变量用于访问所述目标变量;将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,得到加固后的第二源代码;使用不透明谓词对所述第二源代码的函数中的条件变量进行模糊处理,得到加固后的第三源代码。
【技术特征摘要】
1.一种基于符号执行和单点逻辑的源代码加固方法,其特征在于,所述方法包括:确定待混淆的原始源代码中需要保护的目标变量;在所述原始源代码中插入至少一个中间变量,得到第一源代码;其中,所述至少一个中间变量用于访问所述目标变量;将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,得到加固后的第二源代码;使用不透明谓词对所述第二源代码的函数中的条件变量进行模糊处理,得到加固后的第三源代码。2.根据权利要求1所述的方法,其特征在于,所述中间变量为数组,则所述在所述原始源代码中插入至少一个中间变量,包括:在所述目标变量的前面插入第一数组;所述将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,包括:将所述第一源代码中的部分所述目标变量替换为所述第一数组的下溢出元素;其中,所述下溢出元素的下标为所述第一数组中元素的最大下标与第一数值的和再加1,所述第一数值为所述第一数组与所述目标变量在内存中相隔的存储位置的数量。3.根据权利要求1所述的方法,其特征在于,所述中间变量为数组,则所述在所述原始源代码中插入至少一个中间变量,包括:在所述目标变量的后面插入第二数组;所述将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,包括:将所述第一源代码中的部分所述目标变量替换为所述第二数组的上溢出元素;其中,所述上溢出元素的下标为所述第二数组中元素的最小下标与第二数值的差再减1,所述第二数值为所述目标变量与所述第二数组在内存中相隔的存储位置的数量。4.根据权利要求1所述的方法,其特征在于,所述中间变量为数组,则所述在所述原始源代码中插入至少一个中间变量,包括:在所述目标变量的前面插入第一数组,并在所述目标变量的后面插入第二数组;所述将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,包括:将所述第一源代码中的第一部分所述目标变量替换为所述第一数组的下溢出元素,将所述第一源代码中的第二部分所述目标变量替换为所述第二数组的上溢出元素;其中,所述下溢出元素的下标为所述第一数组中元素的最大下标与第一数值的和再加1,所述第一数值为所述第一数组与所述目标变量在内存中相隔的存储位置的数量;所述上溢出元素的下标为所述第二数组中元素的最小下标与第二数值的差再减1,所述第二数值为所述目标变量与所述第二数组在内存中相隔的存储位置的数量;其中,所述第一部分和所述第二部分互不重叠,且所述第一部分和所述第二部分的并集小于所述原始源代码中的所有目标变量组成的集合。5.根据权利要求4所述的方法,其特征在于,所述第一数组和所述第二数组均与所述目标变量相邻,则所述下溢出元素的下标为所述第一数组中元素的最大下标加1;所述上溢出元素的下标为所述第二数组中元素的最小下标减1。6.根据权利要求1-5任一项所述的方法,其特征在于,所述使用不透明谓词对所述第二源代码的函数中的条件变量进行模糊处理,包括:确定所述第二源代码的函数中的第一条件变量;在所述第一条件变量中添加至少一个不透明谓词,得到第二条件变量,所述不透明谓词的值恒定;利用所述第二条件变量替换所述第一条件变量。7.根据权...
【专利技术属性】
技术研发人员:阚志刚,陈彪,王文洋,李世杰,尉爽生,卢佐华,
申请(专利权)人:北京梆梆安全科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。