一种源码处理方法、装置以及设备与流程

摘要: 本说明书涉及源码安全,尤其涉及一种源码处理方法、装置以及设备。背景技术:1、随着智能终端设备的普及,越来越多的设备需要部署诸如支付sdk、身份认证、密钥派生等敏...
一种源码处理方法、装置以及设备与流程

本说明书涉及源码安全,尤其涉及一种源码处理方法、装置以及设备。

背景技术:

1、随着智能终端设备的普及,越来越多的设备需要部署诸如支付sdk、身份认证、密钥派生等敏感业务逻辑。其中一些设备,诸如智能眼镜等可穿戴设备等属于开放硬件环境,固件可被拆机读取,攻击者可通过逆向工程手段提取二进制文件,还原业务逻辑流程,进而实施设备克隆、密钥窃取或业务绕过等攻击行为。

2、传统防护手段中,白盒加密方案仅能保护加密算法本身,无法隐藏上层业务逻辑的状态机与流程结构,逆向分析人员仍可通过控制流分析快速定位关键业务节点。因此,需在编译构建链路内引入代码混淆能力,以提升逆向工程的时间成本,降低设备克隆风险。

3、现有技术中,存在多种代码混淆处理方案,然而,这些方案难以在嵌入式环境、特别是可穿戴设备场景下实现低侵入性(无需或仅需较少地改造现有构建体系)、轻量化(无需重型工具链支持)、可定制(支持细粒度策略配置)和可调试(混淆后仍具备问题定位能力)的平衡。

4、因此,需要有助于与现有构建体系无感知或低感知集成的源码混淆处理方案。

技术实现思路

1、本说明书一个或多个实施例提供一种源码处理方法、装置、设备,用以解决如下技术问题:需要有助于与现有构建体系无感知或低感知集成的源码混淆处理方案,以更好地满足量产级商用需求。

2、为解决上述技术问题,本说明书一个或多个实施例是这样实现的:

3、本说明书一个或多个实施例提供的一种源码处理方法,包括:

4、对源码副本进行混淆处理得到混淆代码;

5、确定所述混淆代码所在的路径,作为目标路径;

6、在操作系统环境变量集合中确定用于构建的目标环境变量,并对所述目标环境变量进行设置,以使所述目标环境变量指示所述目标路径,而不指示所述源码副本对应的原始源码所在的路径;

7、根据所述目标环境变量进行构建,生成所述混淆代码对应的已编译文件或可执行文件。

8、本说明书一个或多个实施例提供的一种源码处理装置,包括:

9、混淆处理模块,对源码副本进行混淆处理得到混淆代码;

10、路径确定模块,确定所述混淆代码所在的路径,作为目标路径;

11、变量设置模块,在操作系统环境变量集合中确定用于构建的目标环境变量,并对所述目标环境变量进行设置,以使所述目标环境变量指示所述目标路径,而不指示所述源码副本对应的原始源码所在的路径;

12、构建生成模块,根据所述目标环境变量进行构建,生成所述混淆代码对应的已编译文件或可执行文件。

13、本说明书一个或多个实施例提供的一种源码处理设备,包括:

14、至少一个处理器;以及,

15、与所述至少一个处理器通信连接的存储器;其中,

16、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:

17、对源码副本进行混淆处理得到混淆代码;

18、确定所述混淆代码所在的路径,作为目标路径;

19、在操作系统环境变量集合中确定用于构建的目标环境变量,并对所述目标环境变量进行设置,以使所述目标环境变量指示所述目标路径,而不指示所述源码副本对应的原始源码所在的路径;

20、根据所述目标环境变量进行构建,生成所述混淆代码对应的已编译文件或可执行文件。

21、本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:通过对源码副本进行混淆处理,并由操作系统环境变量指示混淆代码所在路径,使得构建工具可直接从环境变量获取构建输入来源,能够在无需影响或尽量少影响构建脚本或构建配置文件的情况下完成构建来源的切换,从而有助于实现混淆体系对现有构建工程的零侵入集成,显著降低混淆技术引入的工程适配成本;由于混淆处理作用于源码副本而非原始源码,原始源码始终保持未被污染的原始状态,便于后续版本迭代、代码审查与团队协作开发;经混淆处理生成的已编译文件或可执行文件中,攻击者难以从反编译结果中直接识别关键业务逻辑,从而有效提升了逆向破解的时间成本;由于混淆代码与原始源码分别存储于不同路径,则仅需修改环境变量的取值即可在两种构建来源之间灵活切换,当混淆产物出现异常时可快速切回原始源码进行调试定位,克服了传统混淆方案调试困难的缺陷;仅依赖操作系统环境变量的标准传递机制,避免了引入额外的编译器框架或工具链,对嵌入式交叉编译环境更为友好,降低了方案部署的硬件与环境门槛;基于这些原因,有助于与现有构建体系无感知或低感知集成。

1.一种源码处理方法,包括:

2.如权利要求1所述的方法,所述根据所述目标环境变量进行构建,生成所述混淆代码对应的已编译文件或可执行文件,具体包括:

3.如权利要求1或2所述的方法,所述对所述目标环境变量进行设置,由构建脚本在执行过程中完成;所述构建脚本用于调用构建工具,且所述构建脚本仅依赖posix标准基础命令集中的bash命令和sed命令实现环境变量设置操作,而不依赖python解释器或llvm编译器套件。

4.如权利要求1所述的方法,所述对源码副本进行混淆处理得到混淆代码之前,所述方法还包括:

5.如权利要求1所述的方法,所述对所述目标环境变量进行设置,以使所述目标环境变量指示所述目标路径,而不指示所述源码副本对应的原始源码所在的路径,具体包括:

6.如权利要求1所述的方法,所述对源码副本进行混淆处理,具体包括:

7.如权利要求6所述的方法,各所述维度分别具有独立的开关,用于控制是否针对所述开关对应的维度进行所述混淆处理。

8.如权利要求7所述的方法,所述控制流的维度具有的所述开关,处于默认关闭状态,需要响应于主动操作而打开。

9.如权利要求1所述的方法,所述对源码副本进行混淆处理,具体包括:

10.如权利要求9所述的方法,还包括:

11.如权利要求1所述的方法,所述对源码副本进行混淆处理,具体包括:

12.如权利要求1所述的方法,所述对源码副本进行混淆处理,具体包括:

13.如权利要求1所述的方法,生成的所述混淆代码对应的已编译文件或可执行文件,用于实现可穿戴设备的固件。

14.一种源码处理装置,包括:

15.如权利要求14所述的装置,所述构建生成模块,通过执行不包含所述原始源码所在的路径和所述目标路径的构建脚本,调用构建工具;

16.如权利要求14或15所述的装置,所述对所述目标环境变量进行设置,由构建脚本在执行过程中完成;所述构建脚本用于调用构建工具,且所述构建脚本仅依赖posix标准基础命令集中的bash命令和sed命令实现环境变量设置操作,而不依赖python解释器或llvm编译器套件。

17.如权利要求14所述的装置,所述装置还包括:

18.如权利要求14所述的装置,所述变量设置模块,通过对所述目标环境变量的取值进行修改,将所述目标环境变量指示的原始路径,切换为所述目标路径,其中,所述原始源码在所述原始路径;

19.如权利要求14所述的装置,所述混淆处理模块,根据所设定的混淆配置信息,针对以下一个或多个维度,按照所述维度对应的混淆策略,对源码副本进行混淆处理:

20.如权利要求19所述的装置,各所述维度分别具有独立的开关,用于控制是否针对所述开关对应的维度进行所述混淆处理。

21.如权利要求20所述的装置,所述控制流的维度具有的所述开关,处于默认关闭状态,需要响应于主动操作而打开。

22.如权利要求14所述的装置,所述混淆处理模块,根据所设定的混淆配置信息,为所述源码副本生成混淆映射文件,所述混淆映射文件指示了以下至少一种混淆映射关系:用于混淆的随机名与所述源码副本中的指定函数之间的映射关系、用于混淆的重命名常量与所述源码副本中的指定常量之间的映射关系、用于混淆的异或密钥与所述源码副本中的指定字符串之间的映射关系;

23.如权利要求22所述的装置,还包括:

24.如权利要求14所述的装置,所述混淆处理模块,在所述源码副本的指定控制流中插入恒为假的条件分支;

25.一种源码处理设备,包括: