CN114416108A - 基于Android资源文件索引表对抗反编译的方法、系统及装置 - Google Patents

基于Android资源文件索引表对抗反编译的方法、系统及装置 Download PDF

Info

Publication number
CN114416108A
CN114416108A CN202210321673.1A CN202210321673A CN114416108A CN 114416108 A CN114416108 A CN 114416108A CN 202210321673 A CN202210321673 A CN 202210321673A CN 114416108 A CN114416108 A CN 114416108A
Authority
CN
China
Prior art keywords
index table
file index
resource file
resource
android
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.)
Granted
Application number
CN202210321673.1A
Other languages
English (en)
Other versions
CN114416108B (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.)
CRSC Research and Design Institute Group Co Ltd
Original Assignee
CRSC Research and Design Institute Group 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 CRSC Research and Design Institute Group Co Ltd filed Critical CRSC Research and Design Institute Group Co Ltd
Priority to CN202210321673.1A priority Critical patent/CN114416108B/zh
Publication of CN114416108A publication Critical patent/CN114416108A/zh
Application granted granted Critical
Publication of CN114416108B publication Critical patent/CN114416108B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于Android资源文件索引表对抗反编译的方法,包括:获取Android资源文件索引表;解析Android资源文件索引表,根据文件结构说明文档,将Android资源文件索引表抽象为程序类;根据程序类,对资源文件索引表进行修改;将修改后的资源文件索引表重新打包为APK。本发明实现APK对抗反编译工具的功能,可以不影响APK正常运行的情况下,对Android资源文件索引表的内容进行修改,达到对抗反编译工具的作用。

Description

基于Android资源文件索引表对抗反编译的方法、系统及装置
技术领域
本发明属于软件安全技术领域,特别涉及一种基于Android资源文件索引表对抗反编译的方法、系统及装置。
背景技术
随着移动设备的普及,Android系统(一种基于Linux内核的自由及开放源代码的操作系统)凭借其开源的优势,得到了国内外诸多开发者的支持。
APK(Android application package,Android应用程序包)是Android软件的安装包文件。APK可以通过解压方式打开,APK内包括软件运行时的程序、资源、签名信息等。目前,APK面临着被通过非正当手段进行软件破解的情况。如何利用技术手段,提高APK的安全性,保障用户利益,是许多Android应用厂商面临的重要课题。
逆向分析是探究和破解APK的重要手段。可将APK的逆向分析分为动态分析和静态分析两种。动态分析是指分析程序运行时的状态。静态分析是利用APK Tool,AndroidKiller等反编译工具进行的,可获取到APK非运行状态下程序信息与数据信息。静态分析比动态分析更容易发生。
对Android APK进行保护的服务是必要的,否则会导致各类安全问题。目前,对抗APK文件静态分析的方法,一般通过修改AndroidManifest.xml和dex文件的固定字段实现,实现对抗反编译工具的静态分析。通过对APK中的dex文件加壳实现对抗动态分析,实施方案多样,实施复杂。目前有许多对APK进行保护的服务厂商,多提供APK定制化保护服务,投入成本较高。该服务并不适用于普遍的APK开发者。
APK中还包括Android资源文件索引表,Android资源文件索引表是APK中的资源文件索引表文件,用于储存资源文件(如图片、视频等)的索引,使得Android软件在运行期间通过查询该资源文件索引表完成对资源文件的调用。资源文件索引表使用二进制格式存储,通过公开的文件定义文档或ArscEditor等解析工具,可获得资源文件索引表内容。现有技术中,ArscEditor用于只对资源文件索引表文件的解析和编辑,用户能通过该工具了解arsc文件(APK中的resources.arsc文件,即Android资源文件索引表)信息。
尽管现有多种APK保护技术,但都不能通过对APK内的资源文件索引表进行处理进而达到有效保护APK的目的。破译者可根据开源的资源文件索引表解析说明文档和字节码阅读工具对APK内的资源文件索引表进行逆向,分析或篡改APK内文字等内容。现有技术中资源文件索引表缺少对抗反编译工具的能力。并且对少对资源文件索引表进行快速、有效、适用性强的反编译对抗手段。
因此,亟需一种便捷有效的APK反编译对抗方案。
发明内容
针对上述问题,本发明提出一种基于Android资源文件索引表对抗反编译的方法、系统及装置,实现APK对抗反编译工具的功能,可以不影响APK正常运行的情况下,对Android资源文件索引表的内容进行修改,达到对抗反编译工具的作用。进一步地,通过集成APK重签名功能,用户在使用时输入可正常运行的APK,能够自动生成加固后可正常运行的APK,保证该技术的通用性。
本发明提供一种基于Android资源文件索引表对抗反编译的方法,包括:
获取Android资源文件索引表;
解析Android资源文件索引表,根据文件结构说明文档,将Android资源文件索引表抽象为程序类;
根据程序类,对资源文件索引表进行修改;
将修改后的资源文件索引表重新打包为APK。
进一步地,将Android资源文件索引表抽象为程序类包括:
解析资源文件索引表时,获取文件结构说明文档中数据结构类的格式验证字段,并基于所述格式验证字段对解析生成的程序类进行验证。
进一步地,对资源文件索引表进行修改包括:
增加资源文件索引表头部字节数目。
进一步地,对资源文件索引表进行修改包括:
批量修改资源文件索引表内指定的数据类型的资源配置项。
进一步地,批量修改资源文件索引表内指定的数据类型的资源配置项包括:
获取指定的资源配置项,所述资源配置项包括多个资源值类型信息和对应的资源项数据块;
对多个资源值类型信息进行搜索,根据指定数据类型的标识获取指定数据类型的位置;
根据所述指定数据类型的位置,修改相应的资源项数据块。
进一步地,对资源文件索引表进行修改包括:
对资源文件索引表中的固定序列进行混淆,使得反编译后资源key和资源ID的对应关系变得混乱;
所述固定序列用于表征全局字符串池中资源key和资源ID的对应关系。
进一步地,所述固定序列为固定字节串,对资源文件索引表中的固定序列进行混淆包括:
对固定字节串内容以指定长度进行顺序上的置换。
进一步地,对资源文件索引表进行修改包括:
根据抽象出的程序类,将二进制的资源文件索引表中的信息通过资源文件索引表编辑接口进行显示;
并通过资源文件索引表编辑接口接受用户的编辑输入,通过编辑输入对资源文件索引表指定位置的字节内容进行修改。
进一步地,将修改后的资源文件索引表重新打包为APK包括:
基于修改后的资源文件索引表,利用重签名工具jarsigner重新签名,并打包APK文件。
本发明还提供一种基于Android资源文件索引表对抗反编译的系统,包括:
获取模块,用于获取Android资源文件索引表;
解析模块,用于解析Android资源文件索引表,根据文件结构说明文档,将Android资源文件索引表抽象为程序类;
修改模块,用于根据程序类,对资源文件索引表进行修改;
打包模块,用于将修改后的资源文件索引表重新打包为APK。
进一步地,所述解析模块还包括验证单元,用于在解析资源文件索引表时,获取文件结构说明文档中数据结构类的格式验证字段,并基于所述格式验证字段对解析生成的程序类进行验证。
进一步地,修改模块包括头部修改单元和/或资源配置项修改单元和/或固定序列修改单元;
所述头部修改单元用于增加资源文件索引表头部字节数目;
所述资源配置项修改单元用于批量修改资源文件索引表内指定的数据类型的资源配置项;
所述固定序列修改单元用于对资源文件索引表中的固定序列进行混淆,使得反编译后资源key和资源ID的对应关系变得混乱。
进一步地,系统还包括资源文件索引表编辑接口,
所述修改模块还用于根据抽象出的程序类,将二进制的资源文件索引表中的信息通过资源文件索引表编辑接口进行显示;
并通过资源文件索引表编辑接口接受用户的编辑输入,通过编辑输入对资源文件索引表指定位置的字节内容进行修改。
本发明还提供一种资源文件索引表对抗反编译的装置,所述装置包括至少一个处理器以及至少一个存储器;
所述存储器存储执行上述基于Android资源文件索引表对抗反编译方法的计算机程序,所述处理器调用存储器中的所述计算机程序以执行基于Android资源文件索引表对抗反编译的方法。
本发明的基于Android资源文件索引表对抗反编译的方法及系统能够对Android资源文件索引表进行批量、快速地反编译对抗修改,通过将二进制文件抽象为程序类,方便对复杂的资源索引文件进行直观的展示、查询和修改。本发明提供了可自动执行的多种批量修改方案和支持人工编辑的接口,在高效修改的同时支持不同类型的APK的自定义反编译编辑,适用于普遍的APK开发者。解析和打包过程自动集成。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例的一种基于Android资源文件索引表对抗反编译的方法流程图;
图2示出了根据本发明实施例的资源文件索引表修改界面;
图3示出了根据本发明实施例的一种基于Android资源文件索引表对抗反编译的系统结构示意图;
图4示出了根据本发明实施例的一种基于Android资源文件索引表对抗反编译的装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提出一种基于Android资源文件索引表对抗反编译的方法,基于资源文件索引表已开放文件格式,在保障该文件能够用于软件正常执行的情况下对其进行修改,达到混淆资源文件索引表和对抗反编译工具的作用。对资源文件索引表文件进行修改后,还对APK进行重新签名打包。下面对基于Android资源文件索引表对抗反编译的方法流程进行详细说明。
如图1所示,基于Android资源文件索引表对抗反编译的方法包括解压APK、修改资源文件索引表和重打包。
首先对APK进行解压操作。APK是一种基于ZIP(一种计算机文件压缩算法或压缩文件)文件格式的压缩文件。APK的解压缩可以通过修改软件后缀名实现,示例性地,将后缀名为“.apk”的APK文件后缀名修改为“.zip”,之后对文件进行解压缩。对APK进行解压,可以得到APK内部的文件,解压后APK文件包括:AndroidManifest.xml(清单文件)、dex(代码文件,classes.dex)、资源文件索引表(resources.arsc,即ARSC文件)文件、文件资源(resource,即res)和META-INF文件。通过解压APK获取到资源文件索引表,以便对资源文件索引表进行修改混淆。
修改资源文件索引表,本发明实施例中,根据固定文件格式对资源文件索引表文件进行解析,解析后对资源文件索引表的关键位置字段进行替换、混淆操作。
对资源文件索引表文件通常为二进制格式文件,对其进行解析,包括:
根据资源文件索引表的文件结构说明文档,自动将资源文件索引表抽象为程序类。资源文件索引表抽象为程序类的依据是公开发布的资源文件索引表格式,即文件结构说明文档。具体地,抽象为多种类型的程序类,并确定多种程序类之间的嵌套关系。在抽象为程序类时,对资源文件索引表内的数据结构进行抽象,数据结构之间主要以依赖关系进行调用与设计。本部分通过编码实现,将字节码文件解析到对应的程序类内。
为防止在解析具体的资源文件索引表文件时会出现格式异常,在设计资源文件索引表文件的数据结构类时,在数据结构类的头部信息中设置对该数据结构类的剩余信息(非头部信息)的格式验证字段。解析资源文件索引表(文件)时,获取数据结构类的格式验证字段,并基于格式验证字段对解析生成的程序类进行验证。
本发明实施例中,通过将资源文件索引抽象为程序类,方便基于程序类对资源文件索引的内容进行清晰直观的展示、查询和修改。
本发明实施例的基于Android资源文件索引表对抗反编译的方法提供自动化资源文件索引表修改和资源文件索引表编辑接口。通过资源文件索引表编辑接口能够方便用户对资源文件索引表进行自定义的修改混淆,从而便于应用在不断更新变化的、多样的资源文件索引表的反编译对抗过程中。
具体地,可以根据抽象出的程序类,将二进制的资源文件索引表中的信息通过资源文件索引表编辑接口进行显示。本发明实施例中,资源文件索引表编辑接口用于显示资源文件索引表内容以及接受用户的编辑输入,通过编辑输入修改资源文件索引表。示例性地,资源文件索引表编辑接口用于将资源文件索引表内容分别按照类的嵌套关系显示在用户界面上。
本发明实施例中,对资源文件索引表固定字段修改后可对抗反编译工具。修改的固定字段内容包括:
1.增加资源文件索引表头部字节数目。部分反编译工具按照固定长度对资源文件索引表进行解析。增加头部字节数目,修改资源文件索引表总长度,可以对抗如APK Tool之类的反编译工具。
2.批量修改资源文件索引表内指定的数据类型的资源配置项。例如,由于Drawable和String类型在资源文件索引表中不发挥实际作用,批量修改此类型内容不影响APK运行。具体如下:
获取指定的资源配置项ResTable_Type,所述资源配置项包括多个资源值类型信息和对应的资源项数据块;
对多个资源值类型信息进行搜索,根据指定数据类型的标识获取指定数据类型的位置;
根据所述指定数据类型的位置,修改相应的资源项数据块。修改资源项数据块的数据选自该资源项数据块所在的资源配置项文件,且每个资源项数据块不重复。
具体地,修改资源项数据块中的key值,修改后的key值来自于所述指定的ResTable_Type,且key内容不重复。
示例性地,采用arsc解析程序定位到对应数据类型标识为0X03的位置,批量对该位置的字节标识进行替换。在资源文件索引表内,使用的多个ResTable_Type是资源配置项,在arsc文件中存在多个维度的资源配置项。在每个ResTable_Type中存在多个Res_Value(资源值类型信息)数据结构,而每个Res_Value对应相关的ResTable_Entry(资源项数据块)。当Res_Value中的datatype(数据类型标识)为0X03时,即为String类型时,修改对应ResTable_Entry内的key值,需要注意的是,key值的内容不重复。ResTable_Entry内key值的修改内容,需要来自同一个ResTable_Type内,在同一个资源配置项内修改后的key内容不重复。
3.对资源文件索引表固定序列进行混淆,使得反编译后资源key和资源ID的对应关系变得混乱,从而能够对抗反编译。对资源文件索引表的混淆操作会导致全局字符串池中资源key和资源ID在经过反编译工具后对应关系被打乱,影响其可读性。具体地,获取到全局字符串池(StringPool)中关联资源项(资源key和资源ID)对应关系的一段固定字节串(即固定序列),对固定字节串内容以指定长度,如每4个byte为一个单位进行顺序上的置换。采用上述进行保护操作的资源文件索引表整体文件字节数目不会发生改变。通过置换固定字节串中内容,对资源项名称进行混淆,不涉及对某个资源项ID的修改。
4.用户可以根据需求对资源文件索引表固定位置的字节内容进行修改。根据抽象出的资源索引文件对应的数据结构类,将资源索引文件的字节码显示到对应的位置,提供修改指定位置的字节码的资源文件索引表编辑接口。用户能够明确修改指定位置字节码对应的数据结构内容,并直接通过资源文件索引表编辑接口在界面上进行编辑修改。
由于对资源文件索引表的保护方案在不断的更新。因此,通过可视化资源文件索引表字节码位置信息对文件进行修改的方案,可以随时根据新的保护方案进行更新。通过显示出所有字节码信息,并能准确定位到对应字节位置、并可以在该位置对相关字节信息进行直接的修改。
最后基于修改后的资源文件索引表,重新打包APK文件,签名APK文件,得到可运行的新的APK。本发明实施例中,利用重签名工具jarsigner完成重新签名。
本发明通过修改资源文件索引表文件,对资源文件索引表文件混淆字段和替换字段,实现APK保护,能够对抗反编译。
本发明实施例中,通过提供可视化操作实现用户对于资源文件索引表修改以及重打包的控制,如图2所示。可视化操作包括可视化打包与可视化编辑界面(即资源文件索引表编辑接口,包括一个或多个程序接口)。其中可视化打包是对APK进行操作,可视化编辑界面是对资源文件索引表的字节码(二进制编码)进行操作。即,除了内置自动按照混淆规则对字节码文件进行操作,还设置了人工编辑界面。由于通过修改资源文件索引表对APK实施保护的方案在不断更新,通过人工编辑界面,能够对多变的更新方案进行新增。本发明实施例中,支持用户在本地上传APK,通过本发明的方法实现的程序自动完成解压APK文件、修改资源文件索引表和重打包的过程,并能够在修改阶段对资源文件索引表进行符合数据结构的字节码显示,支持用户编辑。
基于相同的发明构思,本发明还提供一种基于Android资源文件索引表对抗反编译的系统,如图3所示,系统包括:
获取模块,用于获取Android资源文件索引表;
解析模块,与获取模块连接,用于解析Android资源文件索引表,根据文件结构说明文档,将Android资源文件索引表抽象为程序类;
修改模块,与解析模块连接,用于根据程序类,对资源文件索引表进行修改;
打包模块,与修改模块连接,用于将修改后的资源文件索引表重新打包为APK。
其中,解析模块还包括验证单元,用于在解析资源文件索引表时,获取文件结构说明文档中数据结构类的格式验证字段,并基于所述格式验证字段对解析生成的程序类进行验证。
修改模块包括头部修改单元、资源配置项修改单元固定序列修改单元;头部修改单元用于增加资源文件索引表头部字节数目;所述资源配置项修改单元用于批量修改资源文件索引表内指定的数据类型的资源配置项;所述固定序列修改单元用于对资源文件索引表中的固定序列进行混淆,使得反编译后资源key和资源ID的对应关系变得混乱。
系统还包括资源文件索引表编辑接口,与修改模块连接。修改模块根据抽象出的程序类,将二进制的资源文件索引表中的信息通过资源文件索引表编辑接口进行显示,并通过资源文件索引表编辑接口接受用户的编辑输入,通过编辑输入对资源文件索引表指定位置的字节内容进行修改。
本发明实施例的基于Android资源文件索引表对抗反编译的系统的实现方式具体可以根据上述的基于Android资源文件索引表对抗反编译的方法实现。
在本发明的方法可以是由计算机或嵌入式程序控制的装置来实现。因此,与之相对应地,本发明的实施例中还提供了基于Android资源文件索引表对抗反编译的装置,如图4所示,装置包括至少一个处理器以及至少一个存储器;存储器存储执行以上本发明任意实施例方法的计算机程序,处理器调用存储器中计算机程序以执行本发明任意实施例方法。
进一步地,存储器可与一个或多个处理器通信连接,存储器中存储有可被一个或多个处理器执行的指令,指令被一个或多个处理器执行,以使一个或多个处理器能够实现本发明的方法。
本发明的对抗反编译的方法、系统及装置提供了对Android资源文件索引表操作简单且效果明显的修改方式,将对resources.arsc的操作封,通过修改程序可直接进行修改。在混淆固定字段的方案上进行升级,结合了多种加密方案,不易破解,在不影响程序运行的情况下,提高了资源文件内容的隐蔽性。通过编辑接口进一步提供了灵活、便捷的修改方式,并集成打包工具,便于开发者进行反编译对抗封装。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (14)

1.一种基于Android资源文件索引表对抗反编译的方法,其特征在于,包括:
获取Android资源文件索引表;
解析Android资源文件索引表,根据文件结构说明文档,将Android资源文件索引表抽象为程序类;
根据程序类,对资源文件索引表进行修改;
将修改后的资源文件索引表重新打包为APK。
2.根据权利要求1所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,将Android资源文件索引表抽象为程序类包括:
解析资源文件索引表时,获取文件结构说明文档中数据结构类的格式验证字段,并基于所述格式验证字段对解析生成的程序类进行验证。
3.根据权利要求1所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,对资源文件索引表进行修改包括:
增加资源文件索引表头部字节数目。
4.根据权利要求1所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,对资源文件索引表进行修改包括:
批量修改资源文件索引表内指定的数据类型的资源配置项。
5.根据权利要求4所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,批量修改资源文件索引表内指定的数据类型的资源配置项包括:
获取指定的资源配置项,所述资源配置项包括多个资源值类型信息和对应的资源项数据块;
对多个资源值类型信息进行搜索,根据指定数据类型的标识获取指定数据类型的位置;
根据所述指定数据类型的位置,修改相应的资源项数据块。
6.根据权利要求1所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,对资源文件索引表进行修改包括:
对资源文件索引表中的固定序列进行混淆,使得反编译后资源key和资源ID的对应关系变得混乱;
所述固定序列用于表征全局字符串池中资源key和资源ID的对应关系。
7.根据权利要求6所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,所述固定序列为固定字节串,对资源文件索引表中的固定序列进行混淆包括:
对固定字节串内容以指定长度进行顺序上的置换。
8.根据权利要求1-7中任一项所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,对资源文件索引表进行修改包括:
根据抽象出的程序类,将二进制的资源文件索引表中的信息通过资源文件索引表编辑接口进行显示;
并通过资源文件索引表编辑接口接受用户的编辑输入,通过编辑输入对资源文件索引表指定位置的字节内容进行修改。
9.根据权利要求1-7中任一项所述的基于Android资源文件索引表对抗反编译的方法,其特征在于,将修改后的资源文件索引表重新打包为APK包括:
基于修改后的资源文件索引表,利用重签名工具jarsigner重新签名,并打包APK文件。
10.一种基于Android资源文件索引表对抗反编译的系统,其特征在于,包括:
获取模块,用于获取Android资源文件索引表;
解析模块,用于解析Android资源文件索引表,根据文件结构说明文档,将Android资源文件索引表抽象为程序类;
修改模块,用于根据程序类,对资源文件索引表进行修改;
打包模块,用于将修改后的资源文件索引表重新打包为APK。
11.根据权利要求10所述的基于Android资源文件索引表对抗反编译的系统,其特征在于,
所述解析模块还包括验证单元,用于在解析资源文件索引表时,获取文件结构说明文档中数据结构类的格式验证字段,并基于所述格式验证字段对解析生成的程序类进行验证。
12.根据权利要求10所述的基于Android资源文件索引表对抗反编译的系统,其特征在于,修改模块包括头部修改单元和/或资源配置项修改单元和/或固定序列修改单元;
所述头部修改单元用于增加资源文件索引表头部字节数目;
所述资源配置项修改单元用于批量修改资源文件索引表内指定的数据类型的资源配置项;
所述固定序列修改单元用于对资源文件索引表中的固定序列进行混淆,使得反编译后资源key和资源ID的对应关系变得混乱。
13.根据权利要求10-12中任一项所述的基于Android资源文件索引表对抗反编译的系统,其特征在于,包括资源文件索引表编辑接口,
所述修改模块还用于根据抽象出的程序类,将二进制的资源文件索引表中的信息通过资源文件索引表编辑接口进行显示;
并通过资源文件索引表编辑接口接受用户的编辑输入,通过编辑输入对资源文件索引表指定位置的字节内容进行修改。
14.一种基于Android资源文件索引表对抗反编译的装置,其特征在于,所述装置包括至少一个处理器以及至少一个存储器;
所述存储器存储执行权利要求1-9任一方法的计算机程序,所述处理器调用存储器中的所述计算机程序以执行权利要求1-9任一所述的方法。
CN202210321673.1A 2022-03-30 2022-03-30 基于Android资源文件索引表对抗反编译的方法、系统及装置 Active CN114416108B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210321673.1A CN114416108B (zh) 2022-03-30 2022-03-30 基于Android资源文件索引表对抗反编译的方法、系统及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210321673.1A CN114416108B (zh) 2022-03-30 2022-03-30 基于Android资源文件索引表对抗反编译的方法、系统及装置

Publications (2)

Publication Number Publication Date
CN114416108A true CN114416108A (zh) 2022-04-29
CN114416108B CN114416108B (zh) 2022-08-09

Family

ID=81263052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210321673.1A Active CN114416108B (zh) 2022-03-30 2022-03-30 基于Android资源文件索引表对抗反编译的方法、系统及装置

Country Status (1)

Country Link
CN (1) CN114416108B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116662942A (zh) * 2023-07-31 2023-08-29 成都初心互动科技有限公司 一种iOS应用程序加固方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132547A1 (en) * 2014-11-11 2016-05-12 SEWORKS, Inc. Apparatus and method for managing apk file in an android platform
CN105740661A (zh) * 2014-12-11 2016-07-06 中国移动通信集团公司 一种保护应用程序的方法和装置
CN111143789A (zh) * 2019-12-05 2020-05-12 深圳市任子行科技开发有限公司 一种apk资源文件的混淆方法和装置
US20210048993A1 (en) * 2019-08-14 2021-02-18 Mcafee, Llc Methods and apparatus for malware detection using jar file decompilation
CN112667975A (zh) * 2020-12-29 2021-04-16 西北工业大学 一种基于混合加固Android系统应用软件安全防护方法
CN113721929A (zh) * 2021-08-11 2021-11-30 安徽帕觅智能科技有限公司 一种自动化植入公用代码到Android App的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132547A1 (en) * 2014-11-11 2016-05-12 SEWORKS, Inc. Apparatus and method for managing apk file in an android platform
CN105740661A (zh) * 2014-12-11 2016-07-06 中国移动通信集团公司 一种保护应用程序的方法和装置
US20210048993A1 (en) * 2019-08-14 2021-02-18 Mcafee, Llc Methods and apparatus for malware detection using jar file decompilation
CN111143789A (zh) * 2019-12-05 2020-05-12 深圳市任子行科技开发有限公司 一种apk资源文件的混淆方法和装置
CN112667975A (zh) * 2020-12-29 2021-04-16 西北工业大学 一种基于混合加固Android系统应用软件安全防护方法
CN113721929A (zh) * 2021-08-11 2021-11-30 安徽帕觅智能科技有限公司 一种自动化植入公用代码到Android App的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116662942A (zh) * 2023-07-31 2023-08-29 成都初心互动科技有限公司 一种iOS应用程序加固方法及系统

Also Published As

Publication number Publication date
CN114416108B (zh) 2022-08-09

Similar Documents

Publication Publication Date Title
EP2962193B1 (en) Compiler based obfuscation
CN100594509C (zh) 软件保护方法
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
US8090959B2 (en) Method and apparatus for protecting .net programs
CN108399319B (zh) 源代码保护方法、应用服务器及计算机可读存储介质
CN109214161B (zh) 一种二维码安全标签登录系统
CN112231702B (zh) 应用保护方法、装置、设备及介质
CN109948308A (zh) 代码安全保护方法、装置、电子设备和计算机可读存储介质
CN104239757A (zh) 应用程序防止逆向的方法及装置、运行方法及终端
CN107077540B (zh) 用于提供基于云的应用安全服务的方法和系统
CN104866739A (zh) 安卓系统中应用程序加密方法及系统
CN106897587A (zh) 加固应用、加载加固应用的方法和装置
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
CN114416108B (zh) 基于Android资源文件索引表对抗反编译的方法、系统及装置
CN112115427A (zh) 代码混淆方法、装置、电子设备及存储介质
CN108829396B (zh) 脚本编译的方法、脚本执行的方法、相关装置及系统
CN113568680A (zh) 应用程序的动态链接库保护方法、装置、设备及介质
CN110119601B (zh) 基于应用程序安装包的程序加固方法及装置
CN114416097A (zh) 应用程序加固方法、系统、设备及存储介质
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
CN111782239B (zh) 软件打包和源码版本信息获取方法、装置及存储介质
CN111143787B (zh) 提高Java软件破解难度的方法及装置、验证方法及验证装置
CN112965736A (zh) 代码处理方法、装置、电子设备及介质
CN104965701A (zh) 获取应用信息的方法及装置
CN112052461A (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