CN110084005A - 一种代码的处理方法及装置 - Google Patents

一种代码的处理方法及装置 Download PDF

Info

Publication number
CN110084005A
CN110084005A CN201910371032.5A CN201910371032A CN110084005A CN 110084005 A CN110084005 A CN 110084005A CN 201910371032 A CN201910371032 A CN 201910371032A CN 110084005 A CN110084005 A CN 110084005A
Authority
CN
China
Prior art keywords
code
category
partial
target
category code
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.)
Pending
Application number
CN201910371032.5A
Other languages
English (en)
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201910371032.5A priority Critical patent/CN110084005A/zh
Publication of CN110084005A publication Critical patent/CN110084005A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种代码的处理方法及装置,其中,方法包括:获取源代码,源代码中包括第一类代码与第二类代码,其中,第二类代码中至少包括第一类代码中的部分代码,以在运行源代码的过程中,第一类代码被第二类代码调用;对第一类代码进行混淆,得到混淆后的代码;其中,混淆后的代码中包括作为部分代码的混淆结果的目标混淆代码;记录该部分代码与目标混淆代码的对应关系,依据该对应关系,将第二类代码中的该部分代码替换为目标混淆代码,达到在保证编译后的APP可以正常运行的前提下,增大从APP反编译后的第一类代码中获得逻辑关系的难度的效果。

Description

一种代码的处理方法及装置
技术领域
本申请涉及电子信息领域,尤其涉及一种代码的处理方法及装置。
背景技术
APP源代码包括JAVA源码与XML代码,为了降低因反编译源代码而导致的源代码泄露的风险,Android平台在对APP源代码打包的过程中,通常会利用Proguard工具对JAVA源码进行混淆,混淆的目标在于,把JAVA源码替换成无意义的字符。
通常,JAVA源码中的某些代码可能被引用在XML代码中:例如,JAVA源码中的四大组件Activity、Service、BroadcastReceiver、ContentProvider以及View等中的部分代码在XML代码中被引用。对于编译后的APP,在运行XML代码的过程中,如果从JAVA源码中找不到XML代码所引用的代码,则会导致APP不能正常运行。因此,在对JAVA源码进行混淆时,不能对JAVA源码中由XML代码所引用的代码进行混淆。
由于不能对JAVA源码中由XML代码所引用的代码进行混淆,即不用对全部的JAVA源码进行混淆,所以,导致APP被反编译后,JAVA源码中的逻辑关系容易被破解,进而导致泄露有价值的信息。
发明内容
本申请提供了一种代码的处理方法及装置,目的在于解决因代码混淆不彻底而导致的对APP反编译后JAVA源码中的逻辑关系容易被破解的问题。
为了实现上述目的,本申请提供了以下技术方案:
一种代码的处理方法,包括:
获取源代码,所述源代码中包括第一类代码和第二类代码,所述第二类代码中至少包括所述第一类代码中的部分代码,以在所述源代码运行的过程中,所述第一类代码被所述第二类代码调用;
对所述第一类代码进行混淆,得到混淆代码,所述混淆代码中包括作为所述部分代码的混淆结果的目标混淆代码;
记录所述部分代码与所述目标混淆代码的对应关系,所述对应关系指示所述目标混淆代码由所述部分代码混淆生成;
依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码。
可选的,所述对所述第一类代码进行混淆,得到混淆代码,包括:
查找包括预先生成的混淆规则的目标文件,所述混淆规则用于指示所述部分代码不被混淆;
删除所述目标文件;
调用用于混淆所述第一类代码的混淆任务,所述混淆任务在未查询到所述目标文件的情况下,对所述第一类代码进行混淆。
可选的,在所述对所述第一类代码进行混淆,得到混淆代码之前,还包括:
通过调用processResources任务,以对所述第二类代码进行打包,以整合为一个文件;
在所述依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码之后,还包括:
再次调用所述processResources任务,以对将所述部分代码替换为所述目标混淆代码后的所述第二类代码进行打包,以整合为一个文件。
可选的,所述记录所述部分代码与所述目标混淆代码的对应关系包括:
将所述部分代码与所述目标混淆代码的对应关系记录在预设的映射关系表中;
所述依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码,包括:
获取所述映射关系表,所述映射关系表中包括所述部分代码与所述目标混淆代码的对应关系;
遍历所述第二类代码中的字符,在遍历到所述映射关系表中的所述对应关系指示的所述部分代码情况下,将所述部分代码替换为所述部分代码对应的所述目标混淆代码。
可选的,所述第一类代码包括JAVA代码;所述第二类代码包括XML代码;
所述第一类代码的部分代码包括所述第一类代码中表示所述第一类代码的类名称的代码。
一种代码的处理装置,包括:
获取模块,用于获取源代码,所述源代码中包括第一类代码和第二类代码,所述第二类代码中至少包括所述第一类代码中的部分代码,以在所述源代码运行的过程中,所述第一类代码被所述第二类代码调用;
混淆模块,用于对所述第一类代码进行混淆,得到混淆代码,所述混淆代码中包括作为所述部分代码的混淆结果的目标混淆代码;
记录模块,用于记录所述部分代码与所述目标混淆代码的对应关系,所述对应关系指示所述目标混淆代码由所述部分代码混淆生成;
替换模块,用于依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码。
可选的,所述混淆模块用于对所述第一类代码进行混淆,得到混淆代码,包括:
所述混淆模块具体用于,查找包括预先生成的混淆规则的目标文件,所述混淆规则用于指示所述部分代码不被混淆;删除所述目标文件;调用用于混淆所述第一类代码的混淆任务,所述混淆任务在未查询到所述目标文件的情况下,对所述第一类代码进行混淆。
可选的,还包括:
整合模块,用于在所述混淆模块对所述第一类代码进行混淆,得到混淆代码之前,通过调用processResources任务,以对所述第二类代码进行打包,以整合为一个文件;以及,在所述替换模块依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码之后,再次调用所述processResources任务,以对将所述部分代码替换为所述目标混淆代码后的所述第二类代码进行打包,以整合为一个文件。
可选的,所述记录模块用于记录所述部分代码与所述目标混淆代码的对应关系,包括:
所述记录模块具体用于,将所述部分代码与所述目标混淆代码的对应关系记录在预设的映射关系表中;
所述替换模块用于依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码,包括:
所述替换模块具体用于,获取所述映射关系表,所述映射关系表中包括所述部分代码与所述目标混淆代码的对应关系;遍历所述第二类代码中的字符,在遍历到所述映射关系表中的所述对应关系指示的所述部分代码情况下,将所述部分代码替换为所述部分代码对应的所述目标混淆代码。
可选的,所述第一类代码包括JAVA代码;所述第二类代码包括XML代码;
所述第一类代码的部分代码包括所述第一类代码中表示所述第一类代码的类名称的代码。
本申请所述的一种代码的处理方法及装置,获取源代码,源代码中包括第一类代码和第二类代码,第二类代码中至少包括第一类代码中的部分代码,以在源代码运行的过程中,第一类代码被第二类代码调用;对第一类代码进行混淆,得到混淆代码;即将第一类代码中不被第二类代码所引用的代码进行混淆,同时,也对第一类代码中被第二类代码所引用的代码进行混淆,进而扩大了对第一类代码的混淆范围,从而增大了从反编译APP安装包中获取逻辑关系的难度。
同时,对第一类代码进行混淆所得到的混淆代码中包括作为部分代码的混淆结果的目标混淆代码;并记录部分代码与目标混淆代码的对应关系;依据对应关系,将第二类代码中的部分代码替换为目标混淆代码,使得在运行代码替换后的第二类代码时,可以从混淆后的第一类代码中找到所引用的代码,进而第二类代码可以对所引用的代码进行调用,从而可以保证第二类代码可以正常运行。综上所述,本实施例可以在保证编译后的APP可以正常运行的前提下,增大从APP反编译后的第一类代码中获得逻辑关系的难度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种代码的处理方法及装置的应用场景示例图;
图2为本申请实施例公开的一种代码的处理方法实施例的流程图;
图3(a)为Activity类在JAVA源码中定义的示意图;
图3(b)为Activity类在XML代码中引用的示意图;
图4为本申请实施例公开的又一种代码的处理方法实施例的流程图;
图5为本申请实施例公开的类名称映射关系表的示意图;
图6为本申请实施例公开的一种代码的编译装置实施例的结构示意图。
具体实施方式
图1为本申请公开的一种代码的处理方法及装置的应用场景示例图,包括:安装有在Android平台使用的APP打包工具的终端与本申请提供的一种代码的处理装置,其中,本申请提供的一种代码的处理装置可以安装在该终端。
本申请提供的一种代码的处理装置的目的为:除了对APP源代码中的JAVA源码中不被XML代码引用的代码(JAVA源码文件中的类名称与其他非类名称代码)混淆外,还对JAVA源码中由XML代码引用的代码进行混淆,并且保证XML代码在运行的过程中可以从混淆后的JAVA源码中找到所引用的代码;进而,在保证编译后的APP可以正常运行的前提下,增大从APP反编译后的JAVA源码中获得逻辑的难度。
本申请所公开的一种代码的处理方法的开发环境为:Android Studio,Gradle;其中,Gradle的版本可以有多种,本申请不对Gradle的版本作限定,本申请以Gradle的3.2.1版本为例进行介绍。
在实际使用中,可以在Gradle中设定多个任务,对代码的处理的过程就是按照所设定的任务的先后顺序进行执行。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2为本申请公开的一种代码的处理方法,包括以下步骤:
S201、获取源代码。
源代码中包括第一类代码和第二类代码。其中,第二类代码中至少包括第一类代码中的部分代码,以在源代码运行的过程中,第一类代码被第二类代码调用。
例如,APP源代码中包JAVA源码与XML代码,XML代码中引用JAVA源码中的一部分代码,以在XML代码运行过程中,该JAVA源码被XML代码调用。
假设JAVA源码中包括Activity类,该类由XML代码引用,图3(a)为该类在JAVA源码中定义的示意图,图3(b)为该类在XML代码中引用的示意图,被框住的部分即表示图3(b)中引用图3(a)中的MainActivity。
S202、对第一类代码进行混淆,得到混淆代码。
在本步骤中,对第一类代码中的全部代码进行混淆,为了描述方便,将对第一代码全部进行混淆后所得到的代码称为混淆代码,其中,混淆代码中包括作为部分代码的混淆结果,为了描述方便,本实施例将部分代码的混淆结果称为目标混淆代码。
而现有技术中,因为第一类代码中的部分代码被第二类代码引用,因此,不对部分代码进行混淆。
S203、记录部分代码与目标混淆代码的对应关系。
在本实施例中,由于第二类代码中引用了第一类代码中的部分代码,在对第一类代码进行混淆的过程中,已经将该部分代码进行混淆。
为了保证第二类代码在运行的过程中可以从第一类代码中找到该部分代码,在本步骤中,记录部分代码与目标混淆代码间的对应关系,为后续修改第二类代码中的该部分代码做准备。对应关系指示目标混淆代码由部分代码混淆生成。
S204、依据对应关系,将第二类代码中的部分代码替换为目标混淆代码。
具体的,在本步骤中,将第二类代码中的部分代码替换为目标混淆代码,此时,可以保证在第二类代码运行过程中,可以调用到混淆后的第一类代码中的代码。
本实施例的有益效果包括:
在本实施例中,将第一类代码中的代码进行混淆,即将第一类代码中不被第二类代码所引用的代码进行混淆,同时,也对第一类代码中被第二类代码所引用的代码进行混淆。使得扩大了对第一类代码的混淆范围,进而提高从反编译APP安装包中获取逻辑关系的难度;同时,在本实施例中,基于代码对应关系表中混淆先后的代码对应关系,将第二类代码中由第一类代码所引用的代码对应替换为目标混淆代码,使得在运行代码替换后的第二类代码时,可以从第一类代码中找到所引用的代码,从而保证第二类代码可以正常运行;综上所述,本实施例可以在保证编译后的APP可以正常运行的前提下,增大从APP反编译后的第一类代码中获得逻辑关系的难度。
进一步的,可以将图2所示的步骤封装为任务,与现有的任务结合使用,实现增大对第一类代码的混淆范围,同时保证第二类代码在运行的过程中可以调用第一类代码的目的,从而使得本申请所述的一种代码的处理方法及装置,与现有的编译和混淆技术具有更好的兼容性。
图4为本申请公开的又一种代码的处理方法,可以包括以下步骤:
S401、调用processResources任务。
在本步骤中,processResources任务用于将资源整合在一起并打包成一个文件。其中,资源包括但不限于待编译的APP源代码中的XML代码,XML代码包括四大组件的XML代码与视图的XML代码。具体的,在执行processResources任务的过程中通过调用APT工具实现对资源进行整合。
processResources任务还用于生成混淆规则,该混淆规则用于指示JAVA源码中被XML代码引用的代码不被混淆。具体的,所生成的混淆规则保存在app/build/intermediates/proguard-rules/release/aapt_rules.txt目录下的一个文件中,为了描述方便,将该文件称为目标文件。在该目标文件中包含的是XML代码引用JAVA源码中的代码对应的混淆规则。
具体的,执行对资源进行打包的任务的过程为现有技术,这里不再赘述。
S402、删除包括混淆规则的目标文件。
被XML代码引用的任意一个类的代码所对应的混淆规则,使得在对APP的JAVA源码进行混淆的过程中,不对该类中被引用的代码进行混淆。在本实施例中,为了增大从对APP安装包反编译后的JAVA源码中破解逻辑关系的难度,在本实施例中,需要扩大对JAVA源码的混淆范围。因此,对JAVA源码中由XML代码所引用的代码同样进行混淆,为了达到这一目的,在本步骤中,将JAVA源码中由XML代码引用的代码对应的混淆规则进行删除。
具体的,在本步骤中,依据目标文件的存储路径确定该目标文件,并将该目标文件进行删除。
S403、调用compile Java任务。
在本步骤中,compile Java任务用于对JAVA源码进行编译,即将名称后缀为.Java的文件编译为后缀名称为.classes的文件。具体的,执行compile Java任务的过程是现有技术,这里不再赘述。
S404、调用proguard任务。
在本实施例中,proguard任务用于对JAVA源码进行混淆,具体的,在混淆过程中,除了对JAVA源码不被XML代码引用的代码进行混淆外,还会将由XML代码引用的代码进行了混淆,具体的混淆实施过程与现有技术相同,这里不再赘述。
在本步骤中,在对JAVA源码进行混淆后会生成一个混淆的代码映射关系表,在该代码映射关系表用于记录JAVA源码中被混淆的代码以及混淆后的代码间的一一对应关系。其中,代码映射关系表可以为.txt文件,例如,mapping.txt文件。
其中,JAVA源码中被XML代码引用的代码中包括类名称,图5为本实施例公开的一种类名称映射关系表的示意图,从该图中,可以看到,将类名称com.iqiyi.xxx.ui.activity.MainActivity混淆为com.iqiyi.xxx.bak:;将类名称java.lang.String TAG混淆为g;将类名称android.widget.FrameLayout mContainer混淆为a等等。可见,混淆前的类名称与混淆后的类名称均被记录在映射关系表,且唯一对应。
S405、调用ReplaceXMLTask任务。
在本实施例中,ReplaceXMLTask任务的功能包括:利用已生成的代码映射表中记录的JAVA源码中混淆前后的代码对应关系,将XML中引用JAVA源码的代码,对应替换为混淆后的代码。
在本实施例中,已将JAVA源码中由XML代码引用的代码进行了混淆,由于此时的XML代码中引用JAVA源码中的代码还是混淆前的代码,使得在运行XML代码时,所引用JAVA源码中的代码在混淆后的JAVA源码中找不到所引用的代码,即XML代码中引用JAVA源码中的代码与混淆后的JAVA源码中的代码不同,进而导致XML的运行出现崩溃的现象。
为了避免XML的运行出现崩溃的现象,在本实施例中,需要使得XML代码中引用JAVA源码中的代码与混淆后的JAVA源码中代码相同。具体的,在本步骤中,基于对JAVA源码混淆后所生成的代码映射表中记录的混淆前后的代码,将XML代码中引用JAVA源码中的代码,对应替换为混淆后的代码,对应替换后的XML代码中引用JAVA源码中的代码就与混淆后的JAVA源码中对应的代码相同。
具体的,在本步骤中,依据代码映射表,将XML代码所引用JAVA源码中的代码对应替换为混淆后的代码的过程,可以包括:
针对四大组件对应的XML代码与视图组件对应的XML代码,分别执行以下A1~A2的过程。
A1、遍历XML代码中的代码,判断当前所遍历到的代码是否属于代码映射关系表中的混淆前的代码。
如果是,则执行A2,否则,执行A1,直至遍历完XML代码中的代码。
A2、将当前所遍历到的代码替换为代码映射关系表中的混淆前的代码对应的混淆后的代码。
例如,当前遍历到的代码为a,代码映射关系表中,与a对应的混淆后的代码为b,则将当前遍历到的代码a替换为代码b。
S406、调用processResources任务。
由于已经将XML代码中引用JAVA源码的代码对应替换为混淆后的代码,由于XML代码已经被更改,因此,在本步骤中,需要重新进行资源整合的过程。
需要说明的是,在本步骤中,还会生成混淆规则,但是,在本步骤之前,已将JAVA源码中的全部代码进行了混淆,此时,本步骤所生成的混淆规则,并不会对本实施例中对JAVA源码中由XML代码引用的代码进行混淆产生影响。
本实施例的有益效果:
在本实施例中,将由XML代码引用的代码对应的混淆规则进行删除,使得在对JAVA源码混淆的过程中,扩大了对JAVA源码中代码的混淆范围,进而提高从反编译APP安装包中获取逻辑关系的难度;同时,在本实施例中,基于代码对应关系表中混淆前后的代码对应关系,将XML代码中引用JAVA源码的代码对应替换为JAVA源码中混淆后的代码,使得在运行代码替换后的XML代码时,可以从混淆后的JAVA源码中找到所引用的代码;综上所述,本实施例可以在保证编译后的APP可以正常运行的前提下,增大从APP反编译后的JAVA源码中获得逻辑关系的难度。
需要说明的是,类名称仅为XML代码调用JAVA代码的一种示例,而不作为对于本申请的限定。同样,包括XML代码和JAVA代码的源代码也仅作为示例,而不作为对于本申请的限定。
图6为本申请实施例公开的一种代码的处理装置,包括:获取模块601、混淆模块602、记录模块603和替换模块604。可选的,还包括整合模块605。
其中,获取模块601用于获取源代码,源代码中包括第一类代码和第二类代码,第二类代码中至少包括第一类代码中的部分代码,以在源代码运行的过程中,第一类代码被第二类代码调用。
混淆模块602用于对第一类代码进行混淆,得到混淆代码,混淆代码中包括作为部分代码的混淆结果的目标混淆代码。
记录模块603用于记录部分代码与目标混淆代码的对应关系,对应关系指示目标混淆代码由部分代码混淆生成。
替换模块604用于依据对应关系,将第二类代码中的部分代码替换为目标混淆代码。
整合模块605用于在混淆模块对第一类代码进行混淆,得到混淆代码之前,通过调用processResources任务,以对第二类代码进行打包,以整合为一个文件;以及,在替换模块依据对应关系,将第二类代码中的部分代码替换为目标混淆代码之后,再次调用processResources任务,以对将部分代码替换为目标混淆代码后的第二类代码进行打包,以整合为一个文件。
在本实施例中所述的装置,可以在保证编译后的APP可以正常运行的前提下,增大从APP反编译后的第一类代码中获得逻辑关系的难度,从而提高APP的安全性。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种代码的处理方法,其特征在于,包括:
获取源代码,所述源代码中包括第一类代码和第二类代码,所述第二类代码中至少包括所述第一类代码中的部分代码,以在所述源代码运行的过程中,所述第一类代码被所述第二类代码调用;
对所述第一类代码进行混淆,得到混淆代码,所述混淆代码中包括作为所述部分代码的混淆结果的目标混淆代码;
记录所述部分代码与所述目标混淆代码的对应关系,所述对应关系指示所述目标混淆代码由所述部分代码混淆生成;
依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一类代码进行混淆,得到混淆代码,包括:
查找包括预先生成的混淆规则的目标文件,所述混淆规则用于指示所述部分代码不被混淆;
删除所述目标文件;
调用用于混淆所述第一类代码的混淆任务,所述混淆任务在未查询到所述目标文件的情况下,对所述第一类代码进行混淆。
3.根据权利要求2所述的方法,其特征在于,在所述对所述第一类代码进行混淆,得到混淆代码之前,还包括:
通过调用processResources任务,以对所述第二类代码进行打包,以整合为一个文件;
在所述依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码之后,还包括:
再次调用所述processResources任务,以对将所述部分代码替换为所述目标混淆代码后的所述第二类代码进行打包,以整合为一个文件。
4.根据权利要求1所述的方法,其特征在于,所述记录所述部分代码与所述目标混淆代码的对应关系包括:
将所述部分代码以及与所述部分代码唯一对应的所述目标混淆代码记录在映射关系表中;
所述依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码,包括:
遍历所述第二类代码中的字符,在遍历到所述映射关系表中的所述部分代码情况下,将所述部分代码替换为所述部分代码对应的所述目标混淆代码。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一类代码包括JAVA代码;所述第二类代码包括XML代码;
所述第一类代码的部分代码包括所述第一类代码中表示所述第一类代码的类名称的代码。
6.一种代码的处理装置,其特征在于,包括:
获取模块,用于获取源代码,所述源代码中包括第一类代码和第二类代码,所述第二类代码中至少包括所述第一类代码中的部分代码,以在所述源代码运行的过程中,所述第一类代码被所述第二类代码调用;
混淆模块,用于对所述第一类代码进行混淆,得到混淆代码,所述混淆代码中包括作为所述部分代码的混淆结果的目标混淆代码;
记录模块,用于记录所述部分代码与所述目标混淆代码的对应关系,所述对应关系指示所述目标混淆代码由所述部分代码混淆生成;
替换模块,用于依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码。
7.根据权利要求6所述的装置,其特征在于,所述混淆模块用于对所述第一类代码进行混淆,得到混淆代码,包括:
所述混淆模块具体用于,查找包括预先生成的混淆规则的目标文件,所述混淆规则用于指示所述部分代码不被混淆;删除所述目标文件;调用用于混淆所述第一类代码的混淆任务,所述混淆任务在未查询到所述目标文件的情况下,对所述第一类代码进行混淆。
8.根据权利要求7所述的装置,其特征在于,还包括:
整合模块,用于在所述混淆模块对所述第一类代码进行混淆,得到混淆代码之前,通过调用processResources任务,以对所述第二类代码进行打包,以整合为一个文件;以及,在所述替换模块依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码之后,再次调用所述processResources任务,以对将所述部分代码替换为所述目标混淆代码后的所述第二类代码进行打包,以整合为一个文件。
9.根据权利要求6所述的装置,其特征在于,所述记录模块用于记录所述部分代码与所述目标混淆代码的对应关系,包括:
所述记录模块具体用于,将所述部分代码与所述目标混淆代码的对应关系记录在预设的映射关系表中;
所述替换模块用于依据所述对应关系,将所述第二类代码中的所述部分代码替换为所述目标混淆代码,包括:
所述替换模块具体用于,获取所述映射关系表,所述映射关系表中包括所述部分代码与所述目标混淆代码的对应关系;遍历所述第二类代码中的字符,在遍历到所述映射关系表中的所述对应关系指示的所述部分代码情况下,将所述部分代码替换为所述部分代码对应的所述目标混淆代码。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述第一类代码包括JAVA代码;所述第二类代码包括XML代码;
所述第一类代码的部分代码包括所述第一类代码中表示所述第一类代码的类名称的代码。
CN201910371032.5A 2019-05-06 2019-05-06 一种代码的处理方法及装置 Pending CN110084005A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910371032.5A CN110084005A (zh) 2019-05-06 2019-05-06 一种代码的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910371032.5A CN110084005A (zh) 2019-05-06 2019-05-06 一种代码的处理方法及装置

Publications (1)

Publication Number Publication Date
CN110084005A true CN110084005A (zh) 2019-08-02

Family

ID=67418739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910371032.5A Pending CN110084005A (zh) 2019-05-06 2019-05-06 一种代码的处理方法及装置

Country Status (1)

Country Link
CN (1) CN110084005A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010364A (zh) * 2019-12-20 2021-06-22 北京奇艺世纪科技有限公司 一种业务数据获取方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106650428A (zh) * 2015-11-03 2017-05-10 阿里巴巴集团控股有限公司 用于优化应用代码的方法与设备
CN107038354A (zh) * 2016-02-03 2017-08-11 阿里巴巴集团控股有限公司 代码混淆方法、代码运行方法及装置
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106650428A (zh) * 2015-11-03 2017-05-10 阿里巴巴集团控股有限公司 用于优化应用代码的方法与设备
CN107038354A (zh) * 2016-02-03 2017-08-11 阿里巴巴集团控股有限公司 代码混淆方法、代码运行方法及装置
CN109614771A (zh) * 2018-10-31 2019-04-12 同盾控股有限公司 一种基于Java代码的混淆方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010364A (zh) * 2019-12-20 2021-06-22 北京奇艺世纪科技有限公司 一种业务数据获取方法、装置及电子设备
CN113010364B (zh) * 2019-12-20 2023-08-01 北京奇艺世纪科技有限公司 一种业务数据获取方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN109491695B (zh) 一种集成安卓应用的增量更新方法
TWI687867B (zh) 用於可信執行環境的可信應用產生及安裝方法
CN103324872B (zh) 基于指令混淆的Android应用程序保护方法及系统
US20180129794A1 (en) Method for Protecting Dex File from Decompilation in Android System
CN104298534B (zh) 基于Lua语言的编程方法和装置
JP4848430B2 (ja) 仮想役割
CN110597564A (zh) 一种安装包构建和业务组件加载方法、装置、终端设备
CN110333872B (zh) 一种应用的处理方法、装置、设备和介质
CN105404794A (zh) Java应用软件的保护方法和装置
CN101030241A (zh) 基于Keil C51的软件保护开发的方法和系统
CN109947435A (zh) 服务器集群软件环境的部署方法及系统
CN106776266B (zh) 测试工具的配置方法及终端设备
CN107315930A (zh) 一种保护Python程序的方法
KR102141749B1 (ko) App 프로그램 실행 방법 및 장치
CN102156650B (zh) 一种实现补丁自动分析的方法及装置
CN101950339B (zh) 一种电脑安全防护方法和系统
CN103198244B (zh) 保护动态链接库的方法
CN105005497A (zh) 一种Java卡虚拟机中本地函数的调用方法及装置
CN110084005A (zh) 一种代码的处理方法及装置
CN108153745B (zh) 一种应用数据调用方法及应用开发系统
CN106778270B (zh) 一种恶意应用程序的检测方法及系统
CN104965719A (zh) 应用安装文件生成方法和装置
CN104751026A (zh) 安卓系统的软件保护方法、软件应用方法及相关装置
CN105204937B (zh) 内核函数调用方法、装置及操作系统
CN113220314A (zh) App资源加载及apk生成方法、装置、设备及介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190802