当前位置: 首页 > 专利查询>埃沙尔公司专利>正文

选择软件文件的方法技术

技术编号:24296758 阅读:13 留言:0更新日期:2020-05-26 21:23
本发明专利技术涉及用于选择可执行软件应用的程序文件的方法,包括:从可执行应用文件(APF)中提取程序文本文件(CF);对于每个程序文本文件,计算至少一个句法度量或程序复杂度度量(QT1‑QTn),并基于所计算的度量来计算分数(FMT);以及生成根据计算的分数与阈值的比较而选择的程序文本文件的列表(SFL)。

How to select software files

【技术实现步骤摘要】
【国外来华专利技术】选择软件文件的方法
本专利技术涉及软件程序和/或应用,并且涉及该应用对逆向工程的保护以及对在该应用中操纵或包括的数据的保护。
技术介绍
应用的逆向工程包括对应用的分析,以便收集有关其操作和其操纵的数据的信息。逆向工程的目的是总结,以从其分布式二进制形式重建应用的原始源代码。同时,近年来,可以从公共“应用商店”或“市场”下载到移动设备的软件应用的数量激增。诸如安卓(Android)应用的应用使用称为AndroidTMPackage工具包(APK)的文件进行分发,该文件包括应用将需要与安卓操作系统相关的安装并正确操作的代码和数据。为产生APK文件,首先编译针对安卓平台设计的程序,并且然后将其所有部分组装到一个包文件APK中,该包文件APK包括所有程序可执行代码(诸如.dex文件)、资源文件、资产文件、证书文件以及清单文件。APK文件通常是具有JavaArchive(JAR)文件格式的ZIP格式的包文件。APK文件是通常包含以下文件和文件夹的归档文件:-META-INF文件夹,其包含:清单文件,应用的证书,清单文件中对应行的SHA-1摘要和资源的列表,-LIB文件夹,其包含专用于处理器架构的二进制代码,该文件夹在其中分为多个文件夹,包含针对不同处理器编译的程序文件,-包含未编译的资源文件的文件夹,-包含应用资产的文件夹,-附加的安卓清单文件,其包括名称、版本、访问权限和应用所引用的库文件;该文件为安卓二进制XML,该安卓二进制XML可用专用工具(诸如AXMLPrinter2、APKTOOL或Androguard)转换为人可读的纯文本XML,-一个程序文件“classes.dex”或几个程序文件“classesN.dex”(N对程序文件编号),其包含类的编译的字节码,为Dalvik虚拟机或AndroidRuntime环境可以理解的dex文件格式,以及-包含预编译的资源的文件,诸如二进制XML。每个APK文件具有一个或多个程序文件“classes.dex”,“classesN.dex”,其包含整个程序Java代码。出于可移植性的原因,用于安卓设备的程序通常用Java编写并编译为字节码(其包含在程序.class文件中)。然后,将编译的字节码从与Java虚拟机兼容的.class文件转换为Dalvik兼容的.dex(Dalvik可执行)文件,以便能够在计算设备上进行安装。.class文件中的Java字节码具有二进制格式,并表示可由Dalvik虚拟机执行的指令。可以使用逆向工程工具(诸如APKTOOL)反汇编APK文件,该工具产生称为“类”的字节码程序文件以及在称为“包(package)”的目录和子目录中布置的数据文件。诸如Java类的类是用于创建对象的可扩展程序代码模板。类代表对象类别,并具有一组对象共有的成员、方法和属性。类的属性定义了属于该类的对象的特性。对象是类的实例。类的方法定义了属于该类的对象的行为或功能。方法是操纵该类的对象的属性的一组程序指令。Java源代码文件中存在的许多信息通常包含在对应的字节码文件中。这包括有关在“LineNumberTable”中可存在的类、方法、类属性和源代码的信息。该表将指令链接到源代码的特定行,并且另一个称为“StackMapTable”的表用于验证变量类型。逆向工程工具(诸如反编译工具)利用该附加的嵌入式信息来提高反编译的源代码的输出质量。一些应用包括、存储或操纵潜在的敏感或私人信息。该敏感信息可以通过反汇编应用包文件并通过手动分析由此获得的文件和/或通过在运行时分析所执行的代码和/或所操纵的数据来取得。为了防止此类分析或使其更加困难和耗时,已经开发了诸如混淆技术的技术和工具。一些工具对应用的必须隐藏的代码部分进行转换,以使这些部分复杂和/或令人困惑。混淆技术的目的是使代码部分的透明度降低且可读性降低,以及增加代码部分的数据和控制流的复杂度。混淆可以应用于代码、数据、控制流和布局。混淆还可以防止反编译。然而,在考虑某个应用时,很难评估或测量该应用的防篡改性或对其施加的混淆的质量,尤其是在反汇编后的应用包含数百个或数千个类文件的情况下。对混淆质量的评估应要求确定混淆了哪些代码部分,如何对其进行混淆,混淆的弹性如何以及该混淆为了向外部世界隐藏做了何种贡献。确实,与非敏感代码部分相比,应用的安全敏感代码部分可能需要更加混淆。另外,对安全敏感代码部分的混淆可能旨在隐藏安全敏感信息。在软件开发中已经存在一些用于度量软件的可维护性的软件度量。这些度量中的一些度量使用诸如代码部分的透明度、可读性和数据和控制流复杂度的特性,来评估对代码部分的理解。透明度反映了如何从代码部分中提取直接的算法概念。可读性反映了变量、函数和类的名称对理解代码部分的逻辑的贡献。控制流定义哪些条件控制代码部分的操作,以及按什么顺序对其进行测试。数据流定义了代码部分的数据输入,以及这些输入如何被转换和输出。数据和控制流复杂度反映了代码部分的各组成之间的相互依赖性以及它们在运行时如何彼此通信。因此,需要对程序文件的混淆进行量化。然后,混淆量化可用于对应被更加混淆的文件进行排序或选择。还需要选择对于当前需求没有被充分混淆的程序文件,并且可选地处理所选的文件以使用混淆来改进对它们的保护。
技术实现思路
描述了一种方法,该方法用于评估应用的混淆级别以及用于根据所评估的混淆质量对文件进行选择或排序。评估可执行软件应用的混淆的方法可以包括:由处理器从可执行软件应用生成程序文本文件;对于软件应用的每个程序文本文件,计算至少一个句法度量或程序复杂度度量;由处理器基于所计算的度量针对每个程序文本文件计算相应的分数;由处理器根据程序文本文件的相应的所计算的分数对程序文本文件执行排序操作;以及由处理器提供排序操作的结果,或通过对与每个识别的程序文本文件相对应的相应的源代码文件应用混淆处理来生成新的可执行软件应用,以生成用于每个识别的程序文本文件的修改的源代码文件,该新的可执行软件应用从与程序文本文件相对应的源代码文件中获得,其中每个识别的程序文本文件的源代码文件被对应的修改的源代码文件替换。根据实施例,该方法进一步包括:从可执行应用文件中提取程序代码文件;以及将程序代码文件转换为程序文本文件。根据实施例,该方法进一步包括:将每个计算的分数与阈值进行比较;以及根据比较的结果来选择程序文本文件。根据实施例,该方法进一步包括显示所计算的分数,每个分数被显示为具有取决于分数值的颜色并且与对应的程序文本文件的名称相关联的图块。根据实施例,所显示的图块以行和列布置。根据实施例,该方法进一步包括从可执行软件应用文件中提取程序代码和数据文件,该程序代码和数据文件分配在文件夹树结构的文件夹中,每个文件夹对应于可执行软件应用的包,并且每个程序代码文件对应于包中的一个包的类。根据实施例,句法度量被应用于程序文本文件的字符串,并且包括以下中的至少一项:按字符串大小划分的字符串数量相对于总本文档来自技高网
...

【技术保护点】
1.一种评估可执行软件应用的混淆性的方法,所述方法包括:/n由处理器从所述可执行软件应用生成程序文本文件(CF);/n对于所述软件应用的每个程序文本文件,计算至少一个句法度量或程序复杂度度量(QT1-QTn);/n由所述处理器基于所计算的度量针对每个程序文本文件计算相应的分数(FMT);/n由所述处理器根据程序文本文件的相应的所计算的分数对所述程序文本文件执行排序操作;以及/n由所述处理器提供所述排序操作的结果,或者通过对对应于每个识别的程序文本文件的相应的源代码文件(SCF)应用混淆处理来生成新的可执行软件应用(APF1),以生成用于每个识别的程序文本文件的修改的源代码文件,所述新的可执行软件应用(APF1)从对应于所述程序文本文件的源代码文件中获得,其中每个识别的程序文本文件的所述源代码文件被所述对应的修改的源代码文件替换。/n

【技术特征摘要】
【国外来华专利技术】20171005 EP 17194988.61.一种评估可执行软件应用的混淆性的方法,所述方法包括:
由处理器从所述可执行软件应用生成程序文本文件(CF);
对于所述软件应用的每个程序文本文件,计算至少一个句法度量或程序复杂度度量(QT1-QTn);
由所述处理器基于所计算的度量针对每个程序文本文件计算相应的分数(FMT);
由所述处理器根据程序文本文件的相应的所计算的分数对所述程序文本文件执行排序操作;以及
由所述处理器提供所述排序操作的结果,或者通过对对应于每个识别的程序文本文件的相应的源代码文件(SCF)应用混淆处理来生成新的可执行软件应用(APF1),以生成用于每个识别的程序文本文件的修改的源代码文件,所述新的可执行软件应用(APF1)从对应于所述程序文本文件的源代码文件中获得,其中每个识别的程序文本文件的所述源代码文件被所述对应的修改的源代码文件替换。


2.根据权利要求1所述的方法,进一步包括:
从所述可执行应用文件(APF)中提取程序代码文件;以及
将所述程序代码文件转换为所述程序文本文件(CF)。


3.根据权利要求1和2中的一项所述的方法,进一步包括:
将每个计算的分数(FMT)与阈值进行比较,以及
根据所述比较的结果来选择程序文本文件(CF)。


4.根据权利要求1至3中的一项所述的方法,进一步包括:显示所计算的分数(FMT),每个分数被显示为具有取决于所述分数值的颜色并且与对应的程序文本文件(CF)的名称相关联的图块(TL)。


5.根据权利要求4所述的方法,其中,所显示的图块以行和列布置。


6.根据权利要求1至5中的一项所述的方法,进一步包括:从所述可执行软件应用文件中提取程序代码和数据文件(CF、DF),所述程序代码和数据文件被分配在文件夹树结构(FTS)的文件夹(FD)中,每个文件夹对应于所述可执行软件应用的包,并且每个程序代码文件(CF)对应于所述包中的一个包的类。


7.根据权利要求1至6中的一项所述的方法,其中,所述句法度量(QT1-QTn)被应用于所述程序文本文件的字符串,并且包括以下中的至少一项:
按字符串的大小划分的字符串数量相对于总字符串数量的比率、这些比率的分布以及字符串的平均大小,
具有至少一个非ASCII字符的字符串的数量相对于所述总字符串数量的比率,
具有至少一个非字母字符的字符串的数量相对于所述总字符串数量的比率,
具有第一编码的字符串和具有第二编码的字符串的数量相对于所述总字符串数量的比率,
具有至少一个Unicode字符(无...

【专利技术属性】
技术研发人员:G·加戈纳罗特T·拉扎芬德拉郎博
申请(专利权)人:埃沙尔公司
类型:发明
国别省市:法国;FR

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利