CN115469878B - 一种Android代码多样性编译方法 - Google Patents

一种Android代码多样性编译方法 Download PDF

Info

Publication number
CN115469878B
CN115469878B CN202211108518.8A CN202211108518A CN115469878B CN 115469878 B CN115469878 B CN 115469878B CN 202211108518 A CN202211108518 A CN 202211108518A CN 115469878 B CN115469878 B CN 115469878B
Authority
CN
China
Prior art keywords
code
compiling
framework
client
codes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211108518.8A
Other languages
English (en)
Other versions
CN115469878A (zh
Inventor
李卷孺
彭一楠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Palm Royal Information Technology Co ltd
Original Assignee
Shanghai Palm Royal Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Palm Royal Information Technology Co ltd filed Critical Shanghai Palm Royal Information Technology Co ltd
Priority to CN202211108518.8A priority Critical patent/CN115469878B/zh
Publication of CN115469878A publication Critical patent/CN115469878A/zh
Application granted granted Critical
Publication of CN115469878B publication Critical patent/CN115469878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种Android代码多样性编译方法;包括有以下步骤:S1、在客户端上进行安装验证和编译框架;S2、在客户端上下载一级编译器;S3、在客户端上下载二级代码执行框架;S4、在客户端上下载APP功能代码;本发明通过一个轻量级验证和编译框架编译引导程序,再通过一级编译器进行编译二级代码得到二级代码执行框架,然后通过二级代码执行框架执行APP功能代码,由于二级代码执行框架的唯一性,保证了所有不同用户设备上的代码信息和执行方式均存在差异,不需要在安装前预先进行编译,降低服务器的计算开销和存储开销,使得代码的部署具有多样性,使得攻击者难以用同一套攻击方案对所有用户发起攻击,提高用户的安全性。

Description

一种Android代码多样性编译方法
技术领域
本发明属于代码多样性编译技术领域,具体涉及一种Android代码多样性编译方法。
背景技术
Android平台的应用(APK)通常使用Java和C/C++语言混合开发,其代码(包括第三方代码SDK)中可能包含潜在的脆弱点,会被攻击者加以利用。现有的一些代码保护方案试图在代码编译过程中引入多样性(diversity),即为每个不同用户安装时,生成不同二进制代码结构的可执行文件,使得攻击者难以用同一套攻击方案对所有用户发起攻击。
如授权公告号为CN108681457B所公开的基于代码下沉与残码解释的Android应用程序保护方法,其虽然实现了结合两种不同的保护方法,极大的提升了攻击者攻击的门槛、增大了逆向的成本。
现有的一些代码多样性编译方案,在实际应用中主要的问题在于,需要在安装前预先进行编译,会给服务器造成较大的计算开销和存储开销,从而限制了代码多样性的部署。而将多样性编译方案放在客户端执行,可能会对原始的代码信息造成泄露风险。
发明内容
本发明的目的在于提供一种Android代码多样性编译方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种Android代码多样性编译方法,包括有以下步骤:
S1、在客户端上进行安装验证和编译框架:首先在客户端上引入一个轻量级验证和编译框架,确认客户端身份和执行环境;
S2、在客户端上下载一级编译器:在客户端上下载一个与客户端身份相关的引导程序,并使用编译框架编译引导程序,得到一个一级编译器;
S3、在客户端上下载二级代码执行框架:在客户端上下载一套受保护的二级代码,能且仅能使用一级编译器进行编译,得到一套二级代码执行框架,二级代码执行框架和用户身份及执行环境相关,具有唯一性;
S4、在客户端上下载APP功能代码:在客户端上下载加密保护的三级代码,即是应用APP功能代码,APP功能代码能且只能由二级代码执行框架执行,由于二级代码执行框架的唯一性,保证了所有不同用户设备上的代码信息和执行方式均存在差异。
优选的,所述S1中的轻量级验证和编译框架在进行下载的时候,为项目在本地创建对应的仓库,并且为了方便对代码进行管理,创建一个source文件夹,后面所有的下载的源码和编译出的产物都存储在source文件夹。
优选的,所述source文件夹作为仓库实现初始化,通过执行初始化仓库命令获取项目上最新的代码并初始化仓库,并且将编译代码同步映射到本地存储。
优选的,所述S1中的轻量级验证和编译框架在实行之前初始化编译环境,加载相关命令,并且选择平台编译选项,再执行编译,将引导程序编译出一级编译器。
优选的,所述编译框架、所述一级编译器和所述二级代码执行框架的编译系统均分为三部分:
build/core:在这个目录中包含了大量的.mk文件;
子项目:每个子项目都包含自己的Android.mk,在编译时会被包含进去,且编译子项目是由Andorid.mk文件决定;
out/:编译结果输出到out/目录下,编译的结果是jar包、apk或者是二进制文件。
优选的,所述引导程序、所述二级代码和所述APP功能代码在进行下载的时候均存储在source文件夹内,所述引导程序通过所述编译框架进行编译引导,生产一级编译器,所述二级代码由所述一级编译器进行编译生成二级代码执行框架,所述APP功能代码通过所述二级代码执行框架进行执行生成APP。
优选的,所述编译框架、所述一级编译器和所述二级代码执行框架的客户端身份和执行环境均相同,并且保持代码存储仓库相同。
优选的,所述APP功能代码的编译路径在用户端的指定状态时,根据分配的目标配置文件对指定APP功能代码编译存储,若客户端在进行编译所述APP功能代码的时候未做出分配目标配置文件时,编译后的所述APP功能代码存储在source文件夹内。
优选的,在下载引导程序、所述二级代码和所述APP功能代码时,所述引导程序、所述二级代码和所述APP功能代码符合客户端身份和执行环境,实现各个指标的对应,形成唯一对应性。
优选的,所述编译框架、所述一级编译器和所述二级代码执行框架在对所述引导程序、所述二级代码和所述APP功能代码进行编译时,代码缓存区中的代码块进行链接,并预先设定所述代码缓存区替换路径算法保证所述代码缓存区的高效利用。
与现有技术相比,本发明的有益效果是:
本发明在使用的时候,通过引入一个轻量级验证和编译框架,并且通过编译框架编译引导程序,得到一个一级编译器;再通过一级编译器进行编译二级代码得到一套二级代码执行框架,然后通过二级代码执行框架执行APP功能代码,由于二级代码执行框架的唯一性,保证了所有不同用户设备上的代码信息和执行方式均存在差异,不需要在安装前预先进行编译,降低服务器的计算开销和存储开销,使得代码的部署具有多样性,在代码编译过程中引入多样性,即为每个不同用户安装时,生成不同二进制代码结构的可执行文件,使得攻击者难以用同一套攻击方案对所有用户发起攻击,提高用户的安全性。
附图说明
图1为本发明的方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:包括有以下步骤:
S1、在客户端上进行安装验证和编译框架:首先在客户端上引入一个轻量级验证和编译框架,确认客户端身份和执行环境;
S2、在客户端上下载一级编译器:在客户端上下载一个与客户端身份相关的引导程序,并使用编译框架编译引导程序,得到一个一级编译器;
S3、在客户端上下载二级代码执行框架:在客户端上下载一套受保护的二级代码,能且仅能使用一级编译器进行编译,得到一套二级代码执行框架,二级代码执行框架和用户身份及执行环境相关,具有唯一性;
S4、在客户端上下载APP功能代码:在客户端上下载加密保护的三级代码,即是应用APP功能代码,APP功能代码能且只能由二级代码执行框架执行,由于二级代码执行框架的唯一性,保证了所有不同用户设备上的代码信息和执行方式均存在差异。
为了实现对程序体进行存储,并且建立相应的仓库,实现程序的存储和提取,本实施例中,优选的,所述S1中的轻量级验证和编译框架在进行下载的时候,为项目在本地创建对应的仓库,并且为了方便对代码进行管理,创建一个source文件夹,后面所有的下载的源码和编译出的产物都存储在source文件夹。
为了实现对仓库中的文件进行提取,然后进行编译,需要对仓库进行初始化处理,并且代码同步映射,提高安全性,本实施例中,优选的,所述source文件夹作为仓库实现初始化,通过执行初始化仓库命令获取项目上最新的代码并初始化仓库内,并且将编译代码同步映射到本地存储。
为了实现对轻量级验证和编译框架进行环境确定,实现初始化环境,提高运行的稳定性,本实施例中,优选的,所述S1中的轻量级验证和编译框架在实行之前初始化编译环境,加载相关命令,并且选择平台编译选项,再执行编译,将引导程序编译出一级编译器。
为了实现对编译框架、一级编译器和二级代码执行框架的编译过程进行处理,本实施例中,优选的,所述编译框架、所述一级编译器和所述二级代码执行框架的编译系统均分为三部分:
build/core:在这个目录中包含了大量的.mk文件;
子项目:每个子项目都包含自己的Android.mk,在编译时会被包含进去,且编译子项目是由Andorid.mk文件决定;
out/:编译结果输出到out/目录下,编译的结果是jar包、apk或者是二进制。
为了使得系统的程序体能够获得相应的存储,并且实现编译处理,本实施例中,优选的,所述引导程序、所述二级代码和所述APP功能代码在进行下载的时候均存储在source文件夹内,所述引导程序通过所述编译框架进行编译引导,生产一级编译器,所述二级代码由所述一级编译器进行编译生成二级代码执行框架,所述APP功能代码通过所述二级代码执行框架进行执行生成APP。
为了提高程序体的编译环境相同,并且实现存储位置相同,便于进行操作使用,本实施例中,优选的,所述编译框架、所述一级编译器和所述二级代码执行框架的客户端身份和执行环境均相同,并且保持代码存储仓相同。
为了实现编译的程序进行指定存储或者是自动存储,本实施例中,优选的,所述APP功能代码的编译路径在用户端的指定状态时,根据分配的目标配置文件对指定APP功能代码编译存储,若客户端在进行编译所述APP功能代码的时候未做出分配目标配置文件时,编译后的所述APP功能代码存储在source文件夹内。
为了实现对引导程序、二级代码和APP功能代码进行下载,并且使得引导程序、二级代码和APP功能代码满足客户端的各项参数和环境,本实施例中,优选的,所述引导程序、所述二级代码和所述APP功能代码的下载请求时,所述引导程序、所述二级代码和所述APP功能代码复合客户端身份和执行环境,实现各个指标的对应,形成唯一对应性。
为了提高编译的效率,本实施例中,优选的,所述编译框架、所述一级编译器和所述二级代码执行框架在对所述引导程序、所述二级代码和所述APP功能代码进行编译时,代码缓存区中的代码块进行链接,并预先设定所述代码缓存区替换路径算法保证所述代码缓存区的高效利用。
本发明的工作原理及使用流程:
第一步、在客户端上进行安装验证和编译框架:首先在客户端上引入一个轻量级验证和编译框架,确认客户端身份和执行环境;
第二步、在客户端上下载一级编译器:在客户端上下载一个与客户端身份相关的引导程序,并使用编译框架编译引导程序,得到一个一级编译器;
第三步、在客户端上下载二级代码执行框架:在客户端上下载一套受保护的二级代码,能且仅能使用一级编译器进行编译,得到一套二级代码执行框架,二级代码执行框架和用户身份及执行环境相关,具有唯一性;
第四步、在客户端上下载APP功能代码:在客户端上下载加密保护的三级代码,即是应用APP功能代码,APP功能代码能且只能由二级代码执行框架执行,由于二级代码执行框架的唯一性,保证了所有不同用户设备上的代码信息和执行方式均存在差异。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (8)

1.一种Android代码多样性编译方法,其特征在于:包括有以下步骤:
S1、在客户端上进行安装验证和编译框架:首先在客户端上引入一个轻量级验证和编译框架,确认客户端身份和执行环境;
S2、在客户端上下载一级编译器:在客户端上下载一个与客户端身份相关的引导程序,并使用编译框架编译引导程序,得到一个一级编译器;
S3、在客户端上下载二级代码执行框架:在客户端上下载一套受保护的二级代码,能且仅能使用一级编译器进行编译,得到一套二级代码执行框架,二级代码执行框架和用户身份及执行环境相关,具有唯一性;
S4、在客户端上下载APP功能代码:在客户端上下载加密保护的三级代码,即是应用APP功能代码,APP功能代码能且只能由二级代码执行框架执行,由于二级代码执行框架的唯一性,保证了所有不同用户设备上的代码信息和执行方式均存在差异;
所述S1中的轻量级验证和编译框架在进行下载的时候,为项目在本地创建对应的仓库,并且为了方便对代码进行管理,创建一个source文件夹,后面所有的下载的源码和编译出的产物都存储在source文件夹;
所述source文件夹作为仓库实现初始化,通过执行初始化仓库命令获取项目上最新的代码并初始化仓库,并且将编译代码同步映射到本地存储。
2.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:所述S1中的轻量级验证和编译框架在实行之前初始化编译环境,加载相关命令,并且选择平台编译选项,再执行编译,将引导程序编译出一级编译器。
3.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:所述编译框架、所述一级编译器和所述二级代码执行框架的编译系统均分为三部分:
build/core:在这个目录中包含了大量的.mk文件;
子项目:每个子项目都包含自己的Android.mk,在编译时会被包含进去,且编译子项目是由Andorid.mk文件决定;
out/:编译结果输出到out/目录下,编译的结果是jar包、apk或者是二进制文件。
4.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:所述引导程序、所述二级代码和所述APP功能代码在进行下载的时候均存储在source文件夹内,所述引导程序通过所述编译框架进行编译引导,生产一级编译器,所述二级代码由所述一级编译器进行编译生成二级代码执行框架,所述APP功能代码通过所述二级代码执行框架进行执行生成APP。
5.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:所述编译框架、所述一级编译器和所述二级代码执行框架的客户端身份和执行环境均相同,并且保持代码存储仓库相同。
6.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:所述APP功能代码的编译路径在用户端的指定状态时,根据分配的目标配置文件对指定APP功能代码编译存储,若客户端在进行编译所述APP功能代码的时候未做出分配目标配置文件时,编译后的所述APP功能代码存储在source文件夹内。
7.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:在下载引导程序、所述二级代码和所述APP功能代码时,所述引导程序、所述二级代码和所述APP功能代码符合客户端身份和执行环境,实现各个指标的对应,形成唯一对应性。
8.根据权利要求1所述的一种Android代码多样性编译方法,其特征在于:所述编译框架、所述一级编译器和所述二级代码执行框架在对所述引导程序、所述二级代码和所述APP功能代码进行编译时,代码缓存区中的代码块进行链接,并预先设定所述代码缓存区替换路径算法保证所述代码缓存区的高效利用。
CN202211108518.8A 2022-09-13 2022-09-13 一种Android代码多样性编译方法 Active CN115469878B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211108518.8A CN115469878B (zh) 2022-09-13 2022-09-13 一种Android代码多样性编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211108518.8A CN115469878B (zh) 2022-09-13 2022-09-13 一种Android代码多样性编译方法

Publications (2)

Publication Number Publication Date
CN115469878A CN115469878A (zh) 2022-12-13
CN115469878B true CN115469878B (zh) 2023-11-24

Family

ID=84371269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211108518.8A Active CN115469878B (zh) 2022-09-13 2022-09-13 一种Android代码多样性编译方法

Country Status (1)

Country Link
CN (1) CN115469878B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727347A (zh) * 2008-08-15 2010-06-09 北京北大众志微系统科技有限责任公司 一种完成软件构建的方法及系统
CN104793946A (zh) * 2015-04-27 2015-07-22 广州杰赛科技股份有限公司 基于云计算平台的应用部署方法和系统
CN106549976A (zh) * 2016-12-09 2017-03-29 中南大学 一种适用于透明计算系统的用户身份认证方法及系统配置方法
CN109343937A (zh) * 2018-10-07 2019-02-15 张维加 一种跨设备部署的分布式计算系统
CN110955431A (zh) * 2018-09-27 2020-04-03 北京国双科技有限公司 编译环境的处理方法及装置
CN114296871A (zh) * 2021-12-22 2022-04-08 华人运通(上海)云计算科技有限公司 基于容器的持续集成方法、装置、系统及工作节点和介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120284696A1 (en) * 2009-12-21 2012-11-08 Nokia Corporation Method, Apparatuses and a System for Compilation
US10216498B2 (en) * 2016-05-13 2019-02-26 Tibco Software Inc. Custom-built process engine with minimal memory and disk resource consumption

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727347A (zh) * 2008-08-15 2010-06-09 北京北大众志微系统科技有限责任公司 一种完成软件构建的方法及系统
CN104793946A (zh) * 2015-04-27 2015-07-22 广州杰赛科技股份有限公司 基于云计算平台的应用部署方法和系统
CN106549976A (zh) * 2016-12-09 2017-03-29 中南大学 一种适用于透明计算系统的用户身份认证方法及系统配置方法
CN110955431A (zh) * 2018-09-27 2020-04-03 北京国双科技有限公司 编译环境的处理方法及装置
CN109343937A (zh) * 2018-10-07 2019-02-15 张维加 一种跨设备部署的分布式计算系统
CN114296871A (zh) * 2021-12-22 2022-04-08 华人运通(上海)云计算科技有限公司 基于容器的持续集成方法、装置、系统及工作节点和介质

Also Published As

Publication number Publication date
CN115469878A (zh) 2022-12-13

Similar Documents

Publication Publication Date Title
US8510723B2 (en) Binary rewriting without relocation information
US7840968B1 (en) Method and system for containment of usage of language interfaces
US10528729B2 (en) Methods and systems for defending against cyber-attacks
US10762199B2 (en) Compiler assisted protection against arbitrary code execution
CN108898008B (zh) 应用程序的运行方法和装置
CN101533454B (zh) 编译方法
WO2023155697A1 (zh) 一种数据处理的方法和装置
CN115469878B (zh) 一种Android代码多样性编译方法
Laurén et al. Symbol diversification of linux binaries
CN108932407B (zh) 一种程序安全保护方法及装置
KR102250779B1 (ko) 실행코드 무결성 검증 방법 및 장치, 그것을 포함하는 임베디드 장치
CN113626773A (zh) 一种基于中间语言的代码保护方法
Hataba et al. A proposed software protection mechanism for autonomous vehicular cloud computing
CN112395614A (zh) 基于LLVM的Android应用程序虚拟化保护方法
Korobeynikov Improving switch lowering for the llvm compiler system
Sakabe et al. Java obfuscation approaches to construct tamper-resistant object-oriented programs
CN111857808A (zh) 一种符号的重命名方法和重命名装置
CN111314377B (zh) 一种工控终端动态多样化云安全方法及系统
EP4167111A1 (en) Method and apparatus for preparing unique software
Wood et al. A novel technique for control flow obfuscation in JVM applications using InvokeDynamic with native bootstrapping
Craun et al. Enabling eBPF on Embedded Systems Through Decoupled Verification
Ben Asher et al. The effect of unrolling and inlining for Python bytecode optimizations
Jochen et al. Enabling control over adaptive program transformation for dynamically evolving mobile software validation
Zhang et al. An inter-classes obfuscation method for Java program
CN117521061B (zh) 一种基于二进制转换器的定时旁路攻击安全防护方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant