一种防止应用程序反编译的方法、存储介质及终端设备与流程

文档序号:18941786发布日期:2019-10-23 01:13阅读:228来源:国知局
一种防止应用程序反编译的方法、存储介质及终端设备与流程

本发明涉及移动终端和信息安全技术领域,特别涉及一种防止应用程序反编译的方法、存储介质及终端设备。



背景技术:

目前,android应用app存在被成熟的逆向工具轻松反编译的问题,自动化反编译之后可以清晰的获取到app的源码文件以及资源文件,这样对app自身的安全性以及保密性都是极大的破坏。针对这样的情况,现有的androidapp应用防护产品可以防护被成熟的逆向工具进行反编译,但是存在以下几个缺点:

1)、不能在反编译的开始阶段进行防护,也就是不能阻止反编译操作,只是反编译出来的内容会变少;

2)、不能完全防止反编译,还有部分内容是可以反编译的,比如app的基本信息,图标等信息;

3)、成本代价较大,传统的app防护方案比较复杂,庞大;

4)、对app的效率和兼容性有一定的影响,因为现有的app防护产品主要通过对源码/资源文件加密的方式来进行防护,在运行过程中不可避免的影响效率,甚至兼容。

因而现有技术还有待改进和提高。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的不足,提供一种防止应用程序反编译的方法、存储介质及终端设备,以解决现有技术中再对应用程序容易加固时成本大、兼容性低的问题。

为了解决上述技术问题,本发明所采用的技术方案如下:

一种防止应用程序反编译的方法,其包括:

获取应用程序的清单文件,并对所述清单文件进行解析;

在解析得到的第一数据内查找字符串数据标识区;

将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败。

所述防止应用程序反编译的方法,其中,所述获取应用程序的清单文件,并对所述清单文件进行解析具体包括:

获取应用程序的apk文件,并根据所述apk文件获取应用程序的清单文件;

对所述清单文件进行解析。

所述防止应用程序反编译的方法,其中,所述应用程序的清单文件为二进制格式。

所述防止应用程序反编译的方法,其中,所述预设格式数据为00000000。

所述防止应用程序反编译的方法,其中,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败具体包括:

将预设格式数据添加到所述字符串数据标识区;

修改第一数据包括的字符串数据文件偏移标识,以使得反编译工具反编译失败。

所述防止应用程序反编译的方法,其中,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败还包括:

修改所述第一数据包括的文件总大小标识。

所述防止应用程序反编译的方法,其中,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败还包括:

修改所述第一数据包括的字符串数据大小标识。

所述防止应用程序反编译的方法,其中,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败还包括:

修改所述第一数据包括的字符串开始偏移位置标识。

一种终端设备,其中,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如上任意一项所述防止应用程序反编译的方法中的步骤。

一种计算机可读存储介质,其中,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任意一项所述防止应用程序反编译的方法中的步骤。

有益效果:与现有技术相比,本发明提供了一种防止应用程序反编译的方法、存储介质及终端设备,所述方法包括:获取应用程序的清单文件,并对所述清单文件进行解析;在解析得到的第一数据内查找字符串数据标识区;将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败。本发明在不修改原包代码的情况下,仅通过修改一下应用程序的清单文件,常见的反编译工具就无法对app进行反编译。并且修改后的应用清单文件不影响正常的应用程序的安装以及运行,成本更加低,效果更好。

附图说明

图1为本发明提供的一种防止应用程序反编译的方法较佳实施例的流程图。

图2为本发明提供的一种防止应用程序反编译的方法中步骤s100的具体流程图。

图3为本发明提供的终端设备较佳实施例的结构原理图。

具体实施方式

本发明提供一种防止应用程序反编译的方法、存储介质及终端设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

下面结合附图,通过对实施例的描述,对发明内容作进一步说明。

请参照图1,图1为本发明提供的一种防止应用程序反编译的方法较佳实施例的流程图。所述方法包括:

s100、获取应用程序的清单文件,并对所述清单文件进行解析。

具体地,在安卓系统中,androidmanifest.xml为清单文件,之所以称之为清单文件,因为它的确是应用的“清单”。它包含了应用的包名,版本号,权限信息,所有的四大组件等信息。本实施例中,所述应用程序的清单文件为二进制格式。相应的,所述获取应用程序的清单文件,并对所述清单文件进行解析具体包括:

s101、获取应用程序的apk文件,并根据所述apk文件获取应用程序的清单文件;

s102、对所述清单文件进行解析。

具体地,在应用程序逆向的过程中,通过获取应用程序的apk的清单文件,我们可以了解应用的一些基本信息,程序的入口activity,注册的服务,广播,内容提供者等等。而apk中的androidmanifest.xml文件,里面是一堆乱码,并不是我们开发过程中编写的清单文件了。这是因为在打包过程中,清单文件被编译成了二进制数据存储在安装包中,这就需要我们了解androidmanifest.xml的二进制文件结构,才可以读取到我们需要的信息。当然,已经有一些不错的开源工具可以读取编译后的清单文件,像aapt,apktool等等。当然,正是由于这些工具都是开源的,一些开发者会利用其中的漏洞对清单文件进行特定的处理,使得无法通过这些工具反编译清单文件。因此本实施例中,通过对清单文件的二进制格式进行修改,从而可以避免应用程序的反编译,使第三方用户在反编译我们的极端直接报错退出,从而完全阻止了反编译的操作,并且成本低,产品的功能简单,不影响应用程序的工作效率,且兼容性好等优点。

本实施例中,和解析class文件结构一样,通过手写代码的方式进行解析,这样才能真正的了解其文件结构。通过现有资料和010editor的使用,其实已经大大降低了解析的难度。

s200、在解析得到的第一数据内查找字符串数据标识区。

本实施例中,可以通过010editor打开应用程序的二进制格式清单文件,并按照预设规则查找第一数据内的字符串数据标识区,优选的,所述预设规则具体为:查找到第一数据包括的字符串开始偏移位置标识,并读取所述字符串开始偏移位置标识的大小,同时在所述大小加上8,这是由于所述字符串开始偏移位置标识是以第8个字节为基地址来计算偏移的。这样基于上述预设规则便可查找到字符串数据标识区。

s300、将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败。

具体地,所述预设格式数据为4个字节的数据,本实施例中,所述预设格式数据优选为00000000。通过在字符串数据标识区添加00000000,以使得反编译工具反编译失败。

进一步,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败还包括:

修改所述第一数据包括的文件总大小标识。

具体地,所述文件总大小标识为第4个字节的数据,这是由于在上述步骤中添加了4个字节的数据,00000000,因此本发明还需要修改文件总大小标识,从而避免了程序无法安装的风险。

进一步,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败还包括:

修改所述第一数据包括的字符串数据大小标识。

具体地,所述字符串数据大小标识为第12个字节的数据,这是由于在上述步骤中添加了4个字节的数据,00000000,因此本发明还需要修改字符串数据大小标识,从而避免了程序无法安装的风险。

进一步,所述将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败还包括:

修改所述第一数据包括的字符串开始偏移位置标识。

具体地,所述字符串开始偏移位置标识为第28个字节的数据,这是由于在上述步骤中添加了4个字节的数据,00000000,因此本发明还需要修改字符串开始偏移位置标识,从而避免了程序无法安装的风险。

综上,本发明公开了一种防止应用程序反编译的方法、存储介质及终端设备,所述方法包括:获取应用程序的清单文件,并对所述清单文件进行解析;在解析得到的第一数据内查找字符串数据标识区;将预设格式数据添加到所述字符串数据标识区,以使得反编译工具反编译失败。本发明在不修改原包代码的情况下,仅通过修改一下应用程序的清单文件,常见的反编译工具就无法对app进行反编译。并且修改后的应用清单文件不影响正常的应用程序的安装以及运行,成本更加低,效果更好。

本发明还提供了一种终端设备,如图3所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communicationsinterface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。

此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器30通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。

存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述实施例所述的防止应用程序反编译的方法、存储介质及终端设备中的步骤。

此外,上述终端设备以及存储介质中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1