代码混淆方法及装置制造方法及图纸

技术编号:32460749 阅读:10 留言:0更新日期:2022-02-26 08:48
本说明书实施例中提供了一种代码混淆方法及装置。该方法包括:针对当前待进行代码混淆的第一代码文件中的第一函数符号,获取函数名生成组件针对该第一函数符号生成的第二函数符号和指示信息,其中该指示信息用于指示该第一代码文件中是否包含由该第一函数符号进行标识的目标函数;该第一代码文件中未包含目标函数时,根据该第二函数符号确定该第一代码文件依赖的第二代码文件中是否包含目标函数;当确定第二代码文件中包含目标函数时,对第一函数符号进行代码混淆。函数符号进行代码混淆。函数符号进行代码混淆。

【技术实现步骤摘要】
代码混淆方法及装置


[0001]本说明书一个或多个实施例涉及计算机领域,尤其涉及一种代码混淆方法及装置。

技术介绍

[0002]应用程序的安全保护是计算机安全领域的重点研究内容之一。为了避免入侵者使用各种静态分析工具对应用程序的可执行文件进行反汇编或反编译,从而获得应用程序的执行逻辑以非法窃取相关信息,需要对应用程序的代码文件实施代码混淆。

技术实现思路

[0003]本说明书一个或多个实施例中提供了一种代码混淆方法及装置。
[0004]第一方面,提供了一种代码混淆方法,包括:针对当前待进行代码混淆的第一代码文件中的第一函数符号,获取函数名生成组件针对所述第一函数符号生成的第二函数符号和指示信息,其中所述指示信息用于指示所述第一代码文件中是否包含由所述第一函数符号进行标识的目标函数;当所述第一代码文件中未包含所述目标函数时,根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数;当所述第二代码文件中包含所述目标函数时,对所述第一函数符号进行代码混淆。
[0005]在一种可能的实施方式中,所述方法还包括:当所述第一代码文件中包含所述目标函数时,对所述第一函数符号进行代码混淆。
[0006]在一种可能的实施方式中,所述方法还包括:当所述第一代码文件中包含所述目标函数时,将所述第二函数符号加入由编译器针对第一可编译单元维护的本地符号缓存表,所述第一代码文件属于所述第一可编译单元。
[0007]在一种可能的实施方式中,所述方法还包括:当所述第一代码文件中包含所述目标函数时,通过进程间通信向包管理器发送所述第二函数符号,使所述包管理器将所述第二函数符号加入其针对第一项目维护的远程符号缓存表,其中所述第一代码文件所属的可编译单元包含于所述第一项目。
[0008]在一种可能的实施方式中,所述根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数,包括:确定由编译器针对第一可编译单元维护的本地符号缓存表中是否包括所述第二函数符号,其中所述第一代码文件属于所述第一可编译单元。
[0009]在一种可能的实施方式中,所述根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数,还包括:当所述本地符号缓存表中不包括所述第二函数符号时,通过进程间通信向包管理器发送包含所述第二函数符号的查询请求,使所述包管理器通过进程间通信返回查询结果,其中所述查询结果用于指示所述包管理器针对第一项目维护的远程符号缓存表中是否包括所述第二函数符号,所述第一代码文件所属的可编译单元包含于所述第一项目。
[0010]在一种可能的实施方式中,所述对所述第一函数符号进行代码混淆包括:计算所述第二函数符号的摘要值,并将所述第一代码文件中的所述第一函数符号替换为所述摘要值。
[0011]第二方面,提供了一种代码混淆装置,包括:监听处理单元,配置为针对当前待进行代码混淆的第一代码文件中的第一函数符号,获取函数名生成组件针对所述第一函数符号生成的第二函数符号和指示信息,其中所述指示信息用于指示所述第一代码文件中是否包含由所述第一函数符号进行标识的目标函数;确定单元,配置为当所述第一代码文件中未包含所述目标函数时,根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数;混淆处理单元,配置为当所述第二代码文件中包含所述目标函数时,对所述第一函数符号进行代码混淆。
[0012]在一种可能的实施方式中,所述混淆处理单元,还配置为当所述第一代码文件中包含所述目标函数时,对所述第一函数符号进行代码混淆。
[0013]在一种可能的实施方式中,所述装置还包括:存储管理单元,配置为当所述第一代码文件中包含所述目标函数时,将所述第二函数符号加入由编译器针对第一可编译单元维护的本地符号缓存表,所述第一代码文件属于所述第一可编译单元。
[0014]在一种可能的实施方式中,所述装置还包括:通信管理单元,配置为当所述第一代码文件中包含所述目标函数时,通过进程间通信向包管理器发送所述第二函数符号,使所述包管理器将所述第二函数符号加入其针对第一项目维护的远程符号缓存表,其中所述第一代码文件所属的可编译单元包含于所述第一项目。
[0015]在一种可能的实施方式中,所述确定单元,配置为确定由编译器针对第一可编译单元维护的本地符号缓存表中是否包括所述第二函数符号,其中所述第一代码文件属于所述第一可编译单元。
[0016]在一种可能的实施方式中,所述确定单元,配置为当所述本地符号缓存表中不包括所述第二函数符号时,通过进程间通信向包管理器发送包含所述第二函数符号的查询请求,使所述包管理器通过进程间通信返回查询结果,其中所述查询结果用于指示所述包管理器针对第一项目维护的远程符号缓存表中是否包括所述第二函数符号,所述第一代码文件所属的可编译单元包含于所述第一项目。
[0017]在一种可能的实施方式中,所述混淆处理单元,具体配置为计算所述第二函数符号的摘要值,将所述第一代码文件中的所述第一函数符号替换为所述摘要值。
[0018]第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序/指令,当所述计算机程序/指令在计算设备中执行时,计算设备执行如第一方面中任一项所述的方法。
[0019]第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序/指令,所述处理器执行所述可计算机程序/指令,实现第一方面中任一项所述的方法。
[0020]通过本说明书一个或多个实施例中提供的方法及装置,可以在避免对涉及静态链接库和动态链接库的函数符号进行代码混淆的前提下,更加高效的实现对代码文件中的其它函数符号进行代码混淆。
附图说明
[0021]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0022]图1为本说明书实施例中提供的技术方案适用的技术场景的示意图;
[0023]图2为本说明书实施例中提供的一种代码混淆方法的流程图;
[0024]图3为本说明书实施例中提供的另一种代码混淆方法的流程图;
[0025]图4为本说明书实施例中提供的一种代码混淆装置的示意图。
具体实施方式
[0026]下面结合附图,对本说明书所提供的各个非限制性实施例进行详细描述。
[0027]代码混淆(Obfuscated code)是将计算机程序的代码,转换成功能上等价但是更加难于阅读和理解的形式的行为。其中对代码文件中的函数符号(即函数名)进行代码混淆是较典型的代码混淆方案,通过将代码文件中的函数符号改写成入侵者难以理解的符号,可以使得入侵者无法基于函数符号来正确理解相应函数的真实用途。然而代码文件中的函数符号可能涉及由外部提供的静态链接库或动态链接库,即代码文件中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码混淆方法,包括:针对当前待进行代码混淆的第一代码文件中的第一函数符号,获取函数名生成组件针对所述第一函数符号生成的第二函数符号和指示信息,其中所述指示信息用于指示所述第一代码文件中是否包含由所述第一函数符号进行标识的目标函数;当所述第一代码文件中未包含所述目标函数时,根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数;当所述第二代码文件中包含所述目标函数时,对所述第一函数符号进行代码混淆。2.根据权利要求1所述的方法,所述方法还包括:当所述第一代码文件中包含所述目标函数时,对所述第一函数符号进行代码混淆。3.根据权利要求1所述的方法,所述方法还包括:当所述第一代码文件中包含所述目标函数时,将所述第二函数符号加入由编译器针对第一可编译单元维护的本地符号缓存表,所述第一代码文件属于所述第一可编译单元。4.根据权利要求1所述的方法,所述方法还包括:当所述第一代码文件中包含所述目标函数时,通过进程间通信向包管理器发送所述第二函数符号,使所述包管理器将所述第二函数符号加入其针对第一项目维护的远程符号缓存表,其中所述第一代码文件所属的可编译单元包含于所述第一项目。5.根据权利要求1所述的方法,其中,所述根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数,包括:确定由编译器针对第一可编译单元维护的本地符号缓存表中是否包括所述第二函数符号,其中所述第一代码文件属于所述第一可编译单元。6.根据权利要求5所述的方法,其中,所述根据所述第二函数符号确定所述第一代码文件依赖的第二代码文件中是否包含所述目标函数,还包括:当所述本地符号缓存表中不包括所述第二函数符号时,通过进程间通信向包管理器发送包含所述第二函数符号的查询请求,使所述包管理器通过进程间通信返回查询结果,其中所述查询结果用于指示所述包管理器针对第一项目维护的远程符号缓存表中是否包括所述第二函数符号,所述第一代码文件所属的可编译单元包含于所述第一项目。7.根据权力要求1

6中任一项所述的方法,其中,所述对所述第一函数符号进行代码混淆,包括:计算所述第二函数符号的摘要值,并将所述第一代码文件中的所述第一函数符号替换为所述摘要值。8.一种代码混淆装置,包括:监听处理单元,配置为针对当前待进行代码混淆的第一代码文件中的第一函数符号,获取函数名生成组件针对所述第一函数符号生成的第二函数符号和指示信息...

【专利技术属性】
技术研发人员:赵禅
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1