编译器及其编译源代码的方法技术

技术编号:32363898 阅读:15 留言:0更新日期:2022-02-20 03:35
本说明书实施例中提供了一种编译器及其编译源代码的方法。该编译器包括:前端处理模块,用于根据源代码生成其对应的第一中间代码,并将所述第一中间代码输出至代码混淆器;所述代码混淆器,用于对其接收的所述第一中间代码进行代码混淆;所述后端处理模块,用于根据进行代码混淆后的所述第一中间代码生成可执行代码。执行代码。执行代码。

【技术实现步骤摘要】
编译器及其编译源代码的方法


[0001]本说明书一个或多个实施例涉及计算机领域,尤其涉及编译器及其编译源代码的方法。

技术介绍

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

技术实现思路

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

【技术保护点】

【技术特征摘要】
1.一种编译器,包括:前端处理模块,用于根据源代码生成其对应的第一中间代码,并将所述第一中间代码输出至代码混淆器;所述代码混淆器,用于对其接收的所述第一中间代码进行代码混淆;所述后端处理模块,用于根据进行代码混淆后的所述第一中间代码生成可执行代码。2.根据权利要求1所述的编译器,其中,所述前端处理模块,包括:预处理单元,用于针对所述源代码中的第一函数符号生成其对应的第二函数符号,并利用所述第二函数符号对所述源代码中的所述第一函数符号进行替换处理;编译处理单元,用于根据由所述预处理单元处理后的源代码生成第二中间代码;优化处理单元,用于对所述第二中间代码进行优化处理以生成所述第一中间代码。3.根据权利要求2所述的编译器,其中,所述预处理单元,还用于针对所述第一函数符号生成其对应的指示信息,用于指示所述源代码中是否包含由所述第一函数符号进行标识的函数;所述代码混淆器,具体用于根据所述指示信息对所述第一中间代码进行代码混淆。4.根据权利要求3所述的编译器,其中,所述代码混淆器,用于针对所述第一中间代码中的所述第二函数符号,根据所述指示信息确定所述第一中间代码中是否包含由所述第二函数符号进行标识的函数;以及用于当所述第一中间代码中包含由所述第二函数符号进行标识的函数时,对所述第一中间代码中的所述第二函数符号进行代码混淆。5.根据权利要求3所述的编译器,其中,所述代码混淆器,还用于当所述第一中间代码中包含由所述第二函数符号进行标识的函数时,通过进程间通信向包管理器发送所述第二函数符号,使所述包管理器将所述第二函数符号加入其针对所述源代码所属的项目维护的远程函数符号缓存表。6.根据权利要求3所述的编译器,其中,所述代码混淆器,还用于当所述第一中间代码中不包含由所述第二函数符号进行标识的函数时,通过进程间通信向包管理器发送包含所述第一函数符号的查询请求,使包管理器返回查询结果,其中所述查询结果用于指示所述包管理器针对所述源代码所属的项目维护的远程符号缓存表中是否包括所述第二函数符号;当所述远程符号缓存表中包括所述第二函数符号时,对所述第一中间代码中的所述第二函数符号进行代码混淆。7.根据权利要求1

6中任一项所述的编译器,所述源代码基于Rust编程语言编写。8.一种利用编译器编译源代码的方法,包括:所述编译器根据源代码生成其对应的第一中间代码;所述编译器对所述第一中间代码进行代码混淆;所述编译器根据进行代码混淆后的所述第一中间代码生成可执行代码。9.根据权利要求8所述的...

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

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

1