受保护的数据包的制作方法

文档序号:37336213发布日期:2024-03-18 18:01阅读:11来源:国知局
受保护的数据包的制作方法

本发明涉及生成和执行受保护的数据包。特别地,本文描述的方法对于保护.dex文件和java类文件有用。


背景技术:

1、java编译器用于将java源代码编译成java类文件(具有.class文件名扩展),其包含可以在java虚拟机(jvm)上执行的java字节码。.jar文件是包文件格式,其通常用于将多个.class文件和相关联的元数据和资源(文本、图像等)聚合成一个文件以便分发。

2、android设备使用称为dalvik的替代字节码格式。是android软件开发工具包(sdk)的部分的dx工具/编译器用于将.class文件和任何.jar库转换成包含dalvik字节码的.dex文件(即dalvik可执行文件)。.dex文件具有由google android定义的预定格式,并且可以在dalvik虚拟机(dvm)中运行。dx工具通过将应用的所有类打包成单个.dex文件来消除类中存在的所有冗余信息。

3、当android系统执行.dex文件时,它将整个.dex文件映射到连续的存储器空间,并且整个映射的.dex文件的存储器地址可以容易地在android文件系统/proc/{pid}/maps文件中找到(其中pid是加载了.dex文件的当前运行进程的id)。linux和逆向工程的基本知识使得攻击者能够容易地找到映射的.dex文件的存储器地址并将它从存储器转储(dump)到文件。

4、因为.dex文件的格式是预定的并且是公开的,并且因为存在可以对.dex文件进行逆向工程或篡改的许多工具,所以合期望的是保护.dex文件免受非法篡改和逆向工程。因此,应用开发人员经常应用某些.dex保护工具以在发布.dex文件之前对其进行加密。加密的.dex文件然后仅在运行时被解密并释放到存储器。因此,该方法可以保护.dex文件免受静态攻击。然而,因为android系统需要普通的.dex文件来执行,所以攻击者仍然可以访问存储器中的.dex文件,并且然后可以篡改存储器中.dex文件的数据或将清楚的.dex文件从存储器转储到文件。

5、本发明寻求提供一种保护文件(诸如.dex文件)的替代方式,其提供相对于现有技术的那些方式的各种优势。


技术实现思路

1、根据本发明的第一方面,提供了一种从初始文件生成受保护的数据包的方法。初始文件具有预定的文件格式,该方法包括:(a)标识要保护的初始文件的代码部分;(b)生成包括代码部分的副本(或版本)的补充文件;以及(c)修改初始文件,其中修改包括用替换数据替换初始文件的至少代码部分,从而提供修改文件,其中修改文件具有与初始文件相同的预定文件格式,并且其中修改被布置成当预定文件格式的读取器试图从修改文件加载代码部分时引起失败。受保护的数据包包括修改文件和补充文件。

2、根据本发明的第二方面,提供了一种根据第一方面的方法生成的受保护的数据包。

3、根据本发明的第三方面,提供了一种用于预定文件格式的读取器执行受保护的数据包的方法。受保护的数据包包括修改文件和补充文件。修改文件包括替换数据,该替换数据已经替换了修改文件所基于的初始文件的至少代码部分。修改文件和初始文件具有预定的文件格式。补充文件包括代码部分的副本(或版本)。该方法在运行时包括:响应于当试图从修改文件加载代码部分时的失败,处理补充文件以便从补充文件加载代码部分。

4、本发明的其他优选特征在所附权利要求书中阐述。



技术特征:

1.一种从初始文件生成受保护的数据包的方法,初始文件具有预定文件格式,所述方法包括:

2.根据权利要求1所述的方法,其中,替换数据包括随机数据和/或空数据。

3.根据权利要求1或权利要求2所述的方法,其中,标识要保护的初始文件的代码部分包括解析初始文件以标识代码部分。

4.根据任何前述权利要求所述的方法,其中标识要保护的初始文件的代码部分包括解析初始文件以标识引用初始文件中的代码部分的位置的指针。

5.根据任何前述权利要求所述的方法,其中,补充文件还包括引用补充文件中的代码部分的位置的指针。

6.根据权利要求1-5中的任一项所述的方法,其中,初始文件是.dex文件,其中代码部分与.dex文件的特定类相关联。

7.根据权利要求1-5中的任一项所述的方法,其中,初始文件是.dex文件,其中,代码部分与.dex文件的特定类的特定方法相关联。

8.根据权利要求1-5中的任一项所述的方法,其中,初始文件是与特定类相关联的java类文件,并且其中代码部分与特定类的特定方法相关联。

9.一种根据任何前述权利要求所述的方法生成的受保护的数据包。

10.一种用于预定文件格式的读取器执行受保护的数据包的方法,受保护的数据包包括经修改文件和补充文件,修改文件包括替换数据,替换数据已经替换了修改文件所基于的初始文件的至少代码部分,修改文件和初始文件具有预定文件格式,补充文件包括代码部分的副本,并且所述方法包括:在运行时:

11.根据权利要求10所述的方法,其中,替换数据包括随机数据和/或空数据。

12.根据权利要求10或权利要求11所述的方法,其中,修改文件中的替换数据包括替换初始文件的代码部分的第一替换数据,并且其中失败是由预定文件格式的读取器检测到第一替换数据包括代码部分的无效数据而引起的。

13.根据权利要求10-12中的任一项所述的方法,其中,初始文件中的指针引用初始文件中的代码部分的位置,并且其中修改文件中的替换数据包括替换指针的第二替换数据,使得失败是由以下内容之一引起的:

14.根据权利要求10-13中的任一项所述的方法,其中,初始文件是.dex文件,其中代码部分与.dex文件的特定类相关联,并且其中,当预定文件格式的读取器使用默认类加载器试图从修改文件加载代码部分时,发生失败。

15.根据权利要求14所述的方法,其中,处理补充文件以便从补充文件加载代码部分包括:

16.根据权利要求10-15中的任一项所述的方法,其中,处理补充文件以便从补充文件加载代码部分还包括按需将代码部分加载到堆存储器。

17.当从属于权利要求14或权利要求15时根据权利要求16所述的方法,其中,按需将代码部分加载到堆存储器包括:

18.根据权利要求10-12中的任一项所述的方法,其中,初始文件是与特定类相关联的java类文件,其中代码部分与特定类的特定方法相关联,并且其中当使用默认类加载器试图从修改文件加载代码部分时,失败发生。

19.根据权利要求18所述的方法,其中,处理补充文件以便从补充文件加载代码部分包括:


技术总结
描述了一种从初始文件生成受保护的数据包的方法。初始文件具有预定的文件格式,该方法包括:(a)标识要保护的初始文件的代码部分;(b)生成包括代码部分的副本(或版本)的补充文件;以及(c)修改初始文件,其中修改包括用替换数据至少替换初始文件的代码部分,从而提供修改文件,其中修改文件具有与初始文件相同的预定文件格式,并且其中修改被布置成当预定文件格式的读取器试图从修改文件加载代码部分时引起失败。受保护的数据包包括修改文件和补充文件。还描述了一种用于预定文件格式的读取器来执行受保护的数据包的方法。受保护的数据包包括修改文件和补充文件。修改文件包括替换数据,该替换数据已经替换了修改文件所基于的初始文件的至少代码部分。修改文件和初始文件具有预定的文件格式。补充文件包括代码部分的副本(或版本)。该方法包括,在运行时:响应于当试图从修改文件加载代码部分时的失败,处理补充文件以便从补充文件加载代码部分。

技术研发人员:蔡耀樟
受保护的技术使用者:爱迪德技术有限公司
技术研发日:
技术公布日:2024/3/17
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1