CN108984391B - 应用程序的分析方法、装置及电子设备 - Google Patents
应用程序的分析方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108984391B CN108984391B CN201810574402.0A CN201810574402A CN108984391B CN 108984391 B CN108984391 B CN 108984391B CN 201810574402 A CN201810574402 A CN 201810574402A CN 108984391 B CN108984391 B CN 108984391B
- Authority
- CN
- China
- Prior art keywords
- open source
- information
- application program
- target
- license
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序的分析方法、装置及电子设备。该方法包括:获取目标应用程序的可执行文件,根据可执行文件获取目标应用程序的程序特征信息;根据程序特征信息,确定与目标应用程序对应的目标开源许可证信息;根据目标开源许可证信息,获取目标应用程序的风险信息。根据本发明,可以提高应用程序的分析效率,节省人力成本,同时避免泄露应用程序的源代码。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种应用程序的分析方法、装置及电子设备。
背景技术
随着计算机技术发展,应用程序作为具有可视用户界面与用户进行交互、提供某项或多项特定应用服务的计算机程序,得到广泛的应用。
而随着用户对应用程序提供的功能服务的需求多样化、大量化、复杂化,应用程序的开发工作日趋繁重、复杂,市场的高速更迭又对应用程序的开发的时效带来更大的压力,在此背景下,基于开源许可证提供给任意开发者根据需求进行直接使用或针对性修改使用的开源项目,因为其具有友好的商用性,在应用程序开发时被大量使用,以提高应用程序的开发效率。
但是,目前各种开源项目使用开源许可证各不相同,而不同开源许可证对应不同的授权范围和限制条款,盲目使用开源项目可能会因为对应的开源许可证的限制,带来法律或市场风险。例如,使用基于GPL开源许可证的开源项目,如果不遵从GPL许可证将使用对应开源项目的应用程序再次开源,就可能因为违背GPL许可证而面临诉讼风险,或者,遵从GPL许可证将自身开发的应用程序再次开源,会降低该应用程序的市场竞争性,也会带来其他的法律问题。
因此,目前通常是依赖人工对应用程序的源代码进行检测分析,确定所使用的开源项目,评估应用程序面临的法律或者市场风险,但是,通过人工对应用程序的源代码的进行检测分析,存在多种缺点,例如,人工分析耗时较长效率较低,人力成本较高,并且,依赖人工分析源代码确定使用的开源项目,会带来源代码泄露的风险。
发明内容
本发明的一个目的是提供一种用于分析应用程序的新技术方案。
根据本发明的第一方面,提供了一种应用程序的分析方法,其中,包括:
获取目标应用程序的可执行文件,根据所述可执行文件获取所述目标应用程序的程序特征信息;
其中,所述程序特征信息至少包括所述对应的应用程序包括的类名、方法名以及对应的关联信息;
根据所述程序特征信息,确定与所述目标应用程序对应的目标开源许可证信息;
根据所述目标开源许可证信息,获取所述目标应用程序的风险信息;
其中,所述风险信息至少包括对应的应用程序的风险等级。
可选地,根据所述可执行文件获取程序特征信息的步骤包括:
读取所述可执行文件,获取所述可执行文件的内容分区表;
其中,所述内容分区表用于描述对应的可执行文件的内容分区存储信息;
根据所述内容分区表,获取与所述可执行文件的所述程序特征信息对应的分区存储信息;
根据所述分区存储信息,读取对应的所述程序特征信息。
可选地,所述确定与所述目标应用程序对应的目标开源许可证的步骤包括:
根据所述程序特征信息,在预先构建的开源特征数据库中查询,确定与所述程序特征信息对应的至少一个开源项目,标记为与所述目标应用程序对应的目标开源项目;
其中,所述开源特征数据库中包括多个开源项目的开源特征数据,所述开源特征数据至少包括对应的开源项目中所使用的开源许可证信息、类名、方法名以及对应的关联关系;
根据所述目标开源项目,确定与所述目标应用程序对应的目标开源许可证。
可选地,该方法还包括:
从可接入的开源社区获取多个开源项目;
对每个所述开源项目,提取对应的所述开源特征数据以构建对应的开源特征数据库。
可选地,所述提取开源特征数据以构建对应的开源特征数据库的步骤包括:
从所述开源项目的指定目录下,读取所述开源项目的开源许可证信息并存储;
其中,所述开源许可证信息至少包括开源许可证的类型;
扫描所述开源项目的代码文件,提取所述开源项目所使用的类名、方法名并存储;
将所述开源项目的开源许可证信息、类名、方法名之间建立关联,得到对应的所述开源特征数据,以构建所述开源特征数据库。
可选地,该方法还包括:
追踪可接入的开源社区提供的开源项目,当出现新的开源项目时,提取新的开源项目的所述开源特征数据,以更新所述开源特征数据库;
和/或,
追踪可接入的开源社区提供的开源项目,当所述开源特征数据库中已有的开源项目的开源许可证信息发生变化时,更新对应的所述开源许可证信息,并生成开源许可证信息变化通知,以通知对应的开源项目使用者。
可选地,所述根据所述目标开源许可证信息,获取所述目标应用程序的风险信息的步骤包括:
根据所述目标开源许可证信息,在预先构建的开源许可证风险列表中,查询获取所述风险信息;
其中,所述开源许可证风险列表中包括每一个开源许可证对应的风险信息。
可选地,所述方法还包括:
当所述目标应用程序的风险等级大于预设的风险等级阈值时,生成告警信息,指示所述目标应用程序的开发者或使用者。
根据本发明的第二方面,提供一种应用程序的分析装置,其中,包括:
特征信息获取单元,用于获取目标应用程序的可执行文件,根据所述可执行文件获取所述目标应用程序的程序特征信息;
其中,所述程序特征信息至少包括所述目标应用程序包括的类名信息、方法名信息;
许可证信息确定单元,用于根据所述程序特征信息,确定与所述目标应用程序对应的目标开源许可证信息;
风险信息获取单元,用于根据所述目标开源许可证信息,获取所述应用程序的风险信息;
其中,所述应用程序的风险信息至少包括所述应用程序的风险等级。
根据本发明的第三方面,提供一种电子设备,其中,包括:
存储器,用于存储可执行的指令;
控制器,用于根据所述可执行的指令的控制,运行所述电子设备执行如本发明的第一方面提供的任意一项的应用程序的分析方法。
根据本公开的一个实施例,提供一种应用程序的分析方法、装置以及电子设备,根据获取的目标应用程序的可执行文件,获取对应的程序特征信息,确定与目标应用程序的目标开源许可证信息,以此获取对应的目标应用程序的风险信息,实现不依赖人工、直接基于应用程序的可执行文件分析,完成对应用程序的风险评估,提高应用程序的分析效率,节省人力成本,同时无需应用程序开发者提供源代码进行分析,避免泄露应用程序的源代码。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明的实施例的电子设备的硬件配置的例子的框图。
图2示出了本发明实施例的应用程序的分析方法的流程图。
图3示出了本发明实施例的获取程序特征信息步骤的流程图。
图4示出了本发明实施例的确定目标开源许可证步骤的流程图。
图5示出了本发明实施例的构建开源特征数据库步骤的流程图。
图6示出了本发明实施例的开源项目的代码例子示意图。
图7是本发明实施例的应用程序的分析装置的框图。
图8是本发明实施例的电子设备的框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的电子设备1000的硬件配置的框图。
电子设备1000可以是便携式电脑、台式计算机、手机、平板电脑等。如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,具体地可以包括Wifi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
图1所示的电子设备仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项应用程序的分析方法。本领域技术人员应当理解,尽管在图1中对电子设备1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,电子设备1000只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
<实施例>
本实施例的总体构思,是提供一种应用程序的分析方案,可以不依赖人工,直接对应用程序的可执行文件(而非源代码)分析,获取应用程序使用的开源项目进行风险评估,提高应用程序的分析效率,节省人力成本,同时无需应用程序开发者提供源代码进行分析,避免泄露应用程序的源代码。
<方法>
在本实施例中,提供一种应用程序的分析方法。
该应用程序是能提供某项或者多项应用服务的计算机程序,通过可视用户界面与用户进行交互。
该应用程序的分析方法,如图2所示,包括:步骤S2100-S2300。
步骤S2100,获取目标应用程序的可执行文件,根据可执行文件获取目标应用程序的程序特征信息。
可执行文件是可被电子设备的操作系统直接加载运行的文件。在不同的操作系统环境中,可执行文件的表现形式不一样。
应用程序的可执行文件通常可以从应用程序的压缩包中解压缩获取。例如,对于iOS操作系统的应用程序,可以解压缩该应用程序的压缩包,获取对应的可执行文件。
根据应用程序的可执行文件,获取对应的程序特征信息。
程序特征信息是表述应用程序的相关特征的信息,至少包括对应的应用程序包括的类名、方法名以及对应的关联信息。
类(Class)是应用程序开发时使用的一种基础的用户定义类型,通常包括数据说明和用于处理数据或传递消息的函数(或方法)。类名是类的名称。
方法(Method)是用于处理数据或者传递消息的具体计算机程序语言实现,通常是计算机程序语言中函数的形式。方法名是方法的名称。
关联信息是指类与方法之间相关的联系信息,具体可以是类名对应一个或多个方法名的关联关系,或者是一个方法名对应一个或多个类名的关系。在本实施例中,并不限制关联信息的具体表达形式。
根据可执行文件获取程序特征信息,结合后续步骤确定目标应用程序对应的开源许可证信息以评估获取目标应用程序的风险信息,无需应用程序开发者提供源代码进行分析,避免泄露应用程序的源代码。
在一个例子中,根据可执行文件获取程序特征信息的步骤,如图3所示,包括:步骤S2110-S2130。
步骤S2110,读取所可执行文件,获取可执行文件的内容分区表。
内容分区表用于描述对应的可执行文件的内容分区存储信息。
例如,在iOS应用程序的可执行文件中,通常包括符号的分区表,作为内容分区表,用于描述对应的可执行文件的内容分区存储信息;安卓应用程序的可执行文件中,通常包括索引文件,可以作为内容分区表,用于描述对应的可执行文件的内容分区存储信息。
内容分区存储信息包括可执行文件中各种类型内容的存储信息,至少包括各种类型的内容的分区存储信息,该分区存储信息可以存储分区的指示、索引、地址等。
步骤S2120,根据内容分区表,获取与可执行文件的程序特征信息对应的分区存储信息。
根据内容分区表,可以获取可执行文件的程序特征信息对应的分区存储信息,包括用于存储类名的分区存储信息、用于存储方法名的分区存储信息以及方法名与类名关联对应的关联信息的分区存储信息。
步骤S2130,根据分区存储信息,读取对应的程序特征信息。
根据分区存储信息,可以读取对应的程序特征信息。
例如,根据存储类名的分区存储信息,找到对应类名的分区表读取出类名和对应的内存地址:AClass=>0x00abc123;根据存储方法名信的分区存储信息,以类似的方法,读取到方法名与内存地址信息:addOne=>0x00bcd222;根据存储方法名与类名对应的关联信息的分区存储信息,读取到00abc123->0x00bcd222,对应可以关联得到AClass->addOne之间的关联信息。
以类似的方法,可以根据内容分区表,获取目标应用程序的可执行文件中所有程序特征信息。
步骤S2200,根据程序特征信息,确定与目标应用程序对应的目标开源许可证信息。
基于根据可执行文件获取的程序特征信息,确定与目标应用程序对应的目标开源许可证信息,以结合后续步骤评估获取目标应用程序的风险信息,无需应用程序开发者提供源代码进行分析,避免泄露应用程序的源代码。
在一个例子中,确定与目标应用程序对应的目标开源许可证的步骤如图4所示,包括:步骤S2210-S2220。
步骤SS2210,根据程序特征信息,在预先构建的开源特征数据库中查询,确定与程序特征信息对应的至少一个开源项目,标记为与目标应用程序对应的目标开源项目。
开源项目是基于开源许可证提供给任意开发者根据需求进行使用、修改的程序项目(Project),包括可以实现某种应用功能的开源组件或者开源模块。
开源许可证是对开源项目的使用许可条款,使用者可以在开源许可证规定的授权范围内,针对需要修改开源项目的代码来满足需要并作为开源或商业产品发布/销售。常见的开源许可证包括GPL(GNU通用公共许可协议)、BSD(伯克利软件套件)等。
随着应用程序开发的复杂化,基于开源项目进行程序开发,成为应用程序开发过程中提升开发效率的常见技术手段。但应用程序开发中,引入开源项目,在提升开发效率的同时也会引入风险。
在本例中,基于根据应用程序的可执行文件得到的程序特征信息,在开源特征数据库中查询,确定应用程序对应的(或者,在开发过程中引入的)开源项目,可以结合后续步骤评估该应用程序存在的风险。
该开源特征数据库中包括多个开源项目的开源特征数据。
开源特征数据至少包括对应的开源项目中所使用的开源许可证信息、类名、方法名以及对应的关联关系。
根据目标应用程序的程序特征信息,在开源数据库中查询,如果存在与该程序特征信息对应的开源特征数据,将该开源特征数据对应的开源项目,标记为与目标应用程序对应的目标开源项目。
例如,当开源特征数据库中存在与程序特征信息包括的类名相同的类名、或者存在与程序特征信息包括的方法名相同的方法名、或者存在程序特征信息包括的关联信息相同的关联关系等,可以将与该类名或方法名或关联关系对应的开源项目,标记为与目标应用程序对应的目标开源项目。
在一个例子中,如图4所示的方法中还包括构建开源特征数据库的步骤:
从可接入的开源社区获取多个开源项目;
对每个开源项目,提取对应的开源特征数据以构建对应的开源特征数据库。
开源社区是提供开源项目的网络社区,提供网络平台供应用程序开发者基于相应的开源许可证发布开源项目,以及供其他应用程序的开发者下载需要的开源项目进行程序开发。常见的开源社区有GitHub社区等。
在本例中,可以通过网络抓取等手段,从可接入的开源社区中获取可获取的多个开源项目。在获取多个开源项目后,再针对每个开源项目提取对应的开源特征数据构建对应的开源特征数据库。
具体地,提取开源特征数据以构建对应的开源特征数据库的步骤,如图5所示,包括:步骤S2201-S2203。
步骤S2201,从开源项目的指定目录下,读取开源项目的开源许可证信息并存储。
开源许可证信息是对应的开源许可证的相关信息。开源许可证信息至少包括开源许可证的类型,还可以包括开源许可证的条款内容、许可证等级分类等。
通常在开源社区获取到的开源项目,开源许可证的相关信息都存放在第一级目录下,可以从第一级目录下可以读取开源许可证信息。
步骤S2202,扫描开源项目的代码文件,提取开源项目所使用的类名、方法名并存储。
开源项目的代码文件是获取开源项目时就可以得到的。通过代码分析工具可以扫描开源项目的代码文件中的每一段代码,提取开源项目所使用的类名、方法名。
步骤S2203,将开源项目的开源许可证信息、类名、方法名之间建立关联,得到对应的开源特征数据,以构建开源特征数据库。
将开源项目的开源许可证信息、类名、方法名建立关联,包括建立开源项目下与开源许可证的关联、与类名、方法名的关联、类名与方法名之间的关联等。在本实施例中,并不限制建立管理后的具体记录形式。
以下将进一步举例说明图6所示的提取开源数据特征建立开源数据特征库的例子。
假设,从Github开源社区中获取开源项目:
SDWebimage(https://github.com/rs/SDWebImage)。
基于开源项目“SDWebimage”这一名字,从该开源项目的根目录下的LICENSE中读取开源许可证内容,解释出许可证的类型是MIT;而后扫描开源项目“SDWebimage”的代码文件,得到如图6所示的一段代码,从该段代码中可以提取得到类名“SDImageCache”,方法名“initWithNamespace:diskCacheDirectory”、“makeDiskCachePath”以及“addReadOnlyCachePath”;将开源项目下开源许可证、类名、方法名建立关联,得到对应的开源特征数据:
“SDWebimage”:
“MIT”;“SDImageCache”;{“initWithNamespace:diskCacheDirectory”,“makeDiskCachePath”,“addReadOnlyCachePath”};
以此类推,可以扫描分析开源项目的所有代码后提取该开源项目的开源特征数据,添加构建对应的开源特征数据库。
在步骤S2210之后,进入:
步骤S2220,根据目标开源项目,确定与目标应用程序对应的目标开源许可证。
标记目标应用程序对应的目标开源项目后,可以直接得到该开源项目对应的目标开源许可证,从而确定目标应用程序对应的目标开源许可证。
在实际应用中,开源社区中提供的开源项目是动态变化的,随时可能出现新增的开源项目。因此,本例中提供的方法还可以包括:
追踪可接入的开源社区提供的开源项目,当出现新的开源项目时,提取新的开源项目的开源特征数据,以更新开源特征数据库。
在本例中,追踪开源项目的具体实施方式,可以是以预设周期计入开源社区检索查询对应提供的开源项目。
通过追踪可接入的开源社区提供的开源项目,可以及时跟踪新增的开源项目,提取对应的开源特征数据更新开源特征数据库,可以实时更新开源特征数据库中开源特征数据,使得基于该开源特征数据库分析目标应用程序的开源许可证更精确,提高应用程序的分析准确率。
在实际应用中,开源项目的提供者也可能随时更新其提供的开源项目的开源许可证。因此,本例中提供的方法还可以包括:
追踪可接入的开源社区提供的开源项目,当开源特征数据库中已有的开源项目的开源许可证信息发生变化时,更新对应的开源许可证信息,并生成开源许可证信息变化通知,以通知对应的开源项目使用者。
在本例中,追踪开源项目的具体实施方式,可以是以预设周期计入开源社区检索查询对应提供的开源项目。开源许可证信息变化包括开源许可证类型改变、开源许可证条款内容改变等。
通过追踪可接入的开源社区提供的开源项目,可以及时跟踪已有的开源项目的开源许可证信息的变化,可以实时更新开源特征数据库中开源特征数据,对应提高基于开源特征数据库分析应用程序的准确率,并且能及时提醒开源项目使用者相关的开源许可证信息变化,避免开源项目使用者因为不能及时跟踪开源许可证变化而存在法律风险。
在确定目标应用程序对应的目标开源许可证后,进入:
步骤S2300,根据目标开源许可证信息,获取目标应用程序的风险信息。
风险信息是对应的应用程序存在法律风险或者应用风险的相关信息。该风险信息至少包括对应的应用程序的风险等级。风险等级越高,对应的应用程序在商用或者发布过程中可能存在的法律风险或应用风险就越高。
在一个例子中,根据目标开源许可证信息,获取目标应用程序的风险信息的步骤包括:
根据目标开源许可证信息,在预先构建的开源许可证风险列表中,查询获取风险信息。
开源许可证风险列表中包括每一个开源许可证对应的风险信息。该开源许可证风险列表可以根据每个开源许可证的条款内容、开源许可证的应用历史数据进行归类、评分得到,例如,可以基于预设的评分的规则,根据每个开源许可证的条款内容(授权范围、应尽义务、违反责任)分项计分,综合得到每个开源许可证的风险评分,进而划分每个开源许可证的风险等级,汇总得到开源许可证风险列表。
根据目标开源许可证信息,获取目标应用程序的风险信息后,可以基于该风险信息生成对应的风险评估报告,提供给有评估目标应用程序风险的需求方参考应用,实现无需依赖人工,就能自动评估应用程序应引入开源项目面临的法律或市场风险,提高应用程序的分析效率。
在一个例子中,本实施例中提供的应用程序的分析方法,还可以包括:
当目标应用程序的风险等级大于预设的风险等级阈值时,生成告警信息,指示目标应用程序的开发者或使用者。
该风险等级阈值是应用程序的法律风险或市场风险较高对应的阈值。当目标应用程序的风险等级大于预设的风险等级阈值时,生成告警信息,指示目标应用程序的开发者或使用者,可以及时提示开发者或使用者具有较高法律风险或者市场风险的应用程序,尽早规避可能面临的法律或者市场风险。
<装置>
在本实施例中,还提供一种应用程序的分析装置3000,如图7所示,包括:特征信息获取单元3100、许可证信息确定单元3200以及风险信息获取单元3300,用于实施本实施例中提供的任意一种应用程序的分析方法,在此不再赘述。
应用程序的分析装置3000,包括:特征信息获取单元3100、许可证信息确定单元3200以及风险信息获取单元3300。
特征信息获取单元3100,用于获取目标应用程序的可执行文件,根据所述可执行文件获取所述目标应用程序的程序特征信息。
其中,所述程序特征信息至少包括所述目标应用程序包括的类名信息、方法名信息。
在一个例子中,特征信息获取单元3100还用于:
读取所述可执行文件,获取所述可执行文件的内容分区表;
其中,所述内容分区表用于描述对应的可执行文件的内容分区存储信息;
根据所述内容分区表,获取与所述可执行文件的所述程序特征信息对应的分区存储信息;
根据所述分区存储信息,读取对应的所述程序特征信息。
许可证信息确定单元3200,用于根据所述程序特征信息,确定与所述目标应用程序对应的目标开源许可证信息。
可选地,许可证信息确定单元3200还用于:
根据所述程序特征信息,在预先构建的开源特征数据库中查询,确定与所述程序特征信息对应的至少一个开源项目,标记为与所述目标应用程序对应的目标开源项目;
其中,所述开源特征数据库中包括多个开源项目的开源特征数据,所述开源特征数据至少包括对应的开源项目中所使用的开源许可证信息、类名、方法名以及对应的关联关系;
根据所述目标开源项目,确定与所述目标应用程序对应的目标开源许可证。
可选地,许可证信息确定单元3200还用于:
从可接入的开源社区获取多个开源项目;
对每个所述开源项目,提取对应的所述开源特征数据以构建对应的开源特征数据库。
可选地,许可证信息确定单元3200还用于:
从所述开源项目的指定目录下,读取所述开源项目的开源许可证信息并存储;
其中,所述开源许可证信息至少包括开源许可证的类型;
扫描所述开源项目的代码文件,提取所述开源项目所使用的类名、方法名并存储;
将所述开源项目的开源许可证信息、类名、方法名之间建立关联,得到对应的所述开源特征数据,以构建所述开源特征数据库。
可选地,许可证信息确定单元3200还用于:
追踪可接入的开源社区提供的开源项目,当出现新的开源项目时,提取新的开源项目的所述开源特征数据,以更新所述开源特征数据库;
和/或,
追踪可接入的开源社区提供的开源项目,当所述开源特征数据库中已有的开源项目的开源许可证信息发生变化时,更新对应的所述开源许可证信息,并生成开源许可证信息变化通知,以通知对应的开源项目使用者。
风险信息获取单元3300,用于根据所述目标开源许可证信息,获取所述应用程序的风险信息;
其中,所述应用程序的风险信息至少包括所述应用程序的风险等级。
可选地,风险信息获取单元3300还用于:
根据所述目标开源许可证信息,在预先构建的开源许可证风险列表中,查询获取所述风险信息;
其中,所述开源许可证风险列表中包括每一个开源许可证对应的风险信息。
可选地,风险信息获取单元3300还用于:
当所述目标应用程序的风险等级大于预设的风险等级阈值时,生成告警信息,指示所述目标应用程序的开发者或使用者。
本领域技术人员应当明白,可以通过各种方式来实现应用程序的分析装置3000。例如,可以通过指令配置处理器来实现应用程序的分析装置3000。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现应用程序的分析装置3000。例如,可以将应用程序的分析装置3000固化到专用器件(例如ASIC)中。可以将应用程序的分析装置3000分成相互独立的单元,或者可以将它们合并在一起实现。应用程序的分析装置3000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,应用程序的分析装置可以是被嵌入任意应用程序的程序插件、嵌入件,或者可以是独立地、可被安装的应用程序。
<电子设备>
在本实施例中,还提供一种电子设备4000,如图8所示,包括:
存储器4100,用于存储可执行的指令;
控制器4200,用于根据可执行的指令的控制,运行电子设备执行本实施例中提供的任意一项的应用程序的分析方法。
在本实施例中,电子设备4000可以是台式计算机、服务器、手机、掌上电脑、笔记本电脑、平板电脑等各种形式的电子设备,在此不做限制。
电子设备4000还可以包括其他的功能模块,例如,如图1所示的电子设备1000,还包括显示装置等。
以上已经结合附图描述了本发明的实施例,根据本实施例,提供一种应用程序的分析方法、装置以及电子设备,根据获取的目标应用程序的可执行文件,获取对应的程序特征信息,确定与目标应用程序的目标开源许可证信息,以此获取对应的目标应用程序的风险信息,实现不依赖人工、直接基于应用程序的可执行文件分析,完成对应用程序的风险评估,提高应用程序的分析效率,节省人力成本,同时无需应用程序开发者提供源代码进行分析,避免泄露应用程序的源代码。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种应用程序的分析方法,其中,包括:
获取目标应用程序的可执行文件,根据所述可执行文件获取所述目标应用程序的程序特征信息;
其中,所述程序特征信息至少包括所述目标应用程序包括的类名、方法名以及对应的关联信息;
根据所述程序特征信息,确定与所述目标应用程序对应的目标开源许可证信息;
根据所述目标开源许可证信息,获取所述目标应用程序的风险信息;
其中,所述风险信息至少包括对应的应用程序的风险等级。
2.根据权利要求1所述的方法,其中,根据所述可执行文件获取程序特征信息的步骤包括:
读取所述可执行文件,获取所述可执行文件的内容分区表;
其中,所述内容分区表用于描述对应的可执行文件的内容分区存储信息;
根据所述内容分区表,获取与所述可执行文件的所述程序特征信息对应的分区存储信息;
根据所述分区存储信息,读取对应的所述程序特征信息。
3.根据权利要求1所述的方法,其中,所述确定与所述目标应用程序对应的目标开源许可证的步骤包括:
根据所述程序特征信息,在预先构建的开源特征数据库中查询,确定与所述程序特征信息对应的至少一个开源项目,标记为与所述目标应用程序对应的目标开源项目;
其中,所述开源特征数据库中包括多个开源项目的开源特征数据,所述开源特征数据至少包括对应的开源项目中所使用的开源许可证信息、类名、方法名以及对应的关联关系;
根据所述目标开源项目,确定与所述目标应用程序对应的目标开源许可证。
4.根据权利要求3所述的方法,其中,还包括:
从可接入的开源社区获取多个开源项目;
对每个所述开源项目,提取对应的所述开源特征数据以构建对应的开源特征数据库。
5.根据权利要求4所述方法,其中,所述提取对应的开源特征数据以构建对应的开源特征数据库的步骤包括:
从所述开源项目的指定目录下,读取所述开源项目的开源许可证信息并存储;
其中,所述开源许可证信息至少包括开源许可证的类型;
扫描所述开源项目的代码文件,提取所述开源项目所使用的类名、方法名并存储;
将所述开源项目的开源许可证信息、类名、方法名之间建立关联,得到对应的所述开源特征数据,以构建所述开源特征数据库。
6.根据权利要求4所述的方法,其中,包括:
追踪可接入的开源社区提供的开源项目,当出现新的开源项目时,提取新的开源项目的所述开源特征数据,以更新所述开源特征数据库;
和/或,
追踪可接入的开源社区提供的开源项目,当所述开源特征数据库中已有的开源项目的开源许可证信息发生变化时,更新对应的所述开源许可证信息,并生成开源许可证信息变化通知,以通知对应的开源项目使用者。
7.根据权利要求1所述的方法,其中,所述根据所述目标开源许可证信息,获取所述目标应用程序的风险信息的步骤包括:
根据所述目标开源许可证信息,在预先构建的开源许可证风险列表中,查询获取所述风险信息;其中,所述开源许可证风险列表中包括每一个开源许可证对应的风险信息。
8.根据权利要求1所述的方法,其中,还包括:
当所述目标应用程序的风险等级大于预设的风险等级阈值时,生成告警信息,指示所述目标应用程序的开发者或使用者。
9.一种应用程序的分析装置,其中,包括:
特征信息获取单元,用于获取目标应用程序的可执行文件,根据所述可执行文件获取所述目标应用程序的程序特征信息;
其中,所述程序特征信息至少包括所述目标应用程序包括的类名信息、方法名信息;
许可证信息确定单元,用于根据所述程序特征信息,确定与所述目标应用程序对应的目标开源许可证信息;
风险信息获取单元,用于根据所述目标开源许可证信息,获取所述应用程序的风险信息;
其中,所述应用程序的风险信息至少包括所述应用程序的风险等级。
10.一种电子设备,其中,包括:
存储器,用于存储可执行的指令;
控制器,用于根据所述可执行的指令的控制,执行如权利要求1-8中任意一项所述的应用程序的分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810574402.0A CN108984391B (zh) | 2018-06-06 | 2018-06-06 | 应用程序的分析方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810574402.0A CN108984391B (zh) | 2018-06-06 | 2018-06-06 | 应用程序的分析方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984391A CN108984391A (zh) | 2018-12-11 |
CN108984391B true CN108984391B (zh) | 2022-07-12 |
Family
ID=64540790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810574402.0A Active CN108984391B (zh) | 2018-06-06 | 2018-06-06 | 应用程序的分析方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984391B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552504B (zh) * | 2020-07-13 | 2020-10-27 | 深圳开源互联网安全技术有限公司 | 一种开源组件的资产信息维护方法、装置及存储介质 |
CN113065125A (zh) * | 2021-03-30 | 2021-07-02 | 深圳开源互联网安全技术有限公司 | Docker镜像的分析方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110112622A (ko) * | 2010-04-07 | 2011-10-13 | 김인상 | 앱스토어용 콘텐츠 오픈 라이센싱 시스템 및 그 방법 |
US9052917B2 (en) * | 2013-01-14 | 2015-06-09 | Lenovo (Singapore) Pte. Ltd. | Data storage for remote environment |
CN106934254B (zh) * | 2017-02-15 | 2020-05-26 | 中国银联股份有限公司 | 一种开源许可证的分析方法及装置 |
-
2018
- 2018-06-06 CN CN201810574402.0A patent/CN108984391B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108984391A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108153848B (zh) | 轻应用数据的搜索方法、设备及电子设备 | |
EP2677451B1 (en) | License verification method and apparatus, and computer readable storage medium storing program therefor | |
KR20150035798A (ko) | 현지화된 사용자 인터페이스의 생성 방법 | |
CN110941942A (zh) | 电路原理图检查方法、装置及系统 | |
US20160179800A1 (en) | Revision management | |
CN108932320B (zh) | 文章搜索方法、装置及电子设备 | |
WO2017157104A1 (zh) | 信息复制系统、方法及电子设备和机器可读存储介质 | |
CN107015794B (zh) | 软件即服务参考流程扩展验证框架 | |
US10678926B2 (en) | Identifying security risks in code using security metric comparison | |
CN108984391B (zh) | 应用程序的分析方法、装置及电子设备 | |
US20130174116A1 (en) | Systems and methods for metamodel transformation | |
CN109558619B (zh) | 基于建筑信息模型的数据处理方法、终端及可读存储介质 | |
KR102308062B1 (ko) | 창업을 위한 정보를 제공하기 위한 전자 장치 및 그 동작 방법 | |
CN110865818A (zh) | 应用关联域名的检测方法、装置及电子设备 | |
CN108520063B (zh) | 事件日志的处理方法、装置及终端设备 | |
CN108804917B (zh) | 一种文件检测方法、装置、电子设备及存储介质 | |
US10831635B2 (en) | Preemption of false positives in code scanning | |
US8615744B2 (en) | Methods and system for managing assets in programming code translation | |
JP2017204272A (ja) | オープンソース基盤ソースコードマッチング方法及び装置 | |
US20180165308A1 (en) | Deriving a data structure for a process model software | |
CN112000876A (zh) | 一种信息显示的方法、终端、服务器 | |
CN115705470A (zh) | 短信审核方法、装置及电子设备 | |
CN111191795A (zh) | 一种训练机器学习模型的方法、装置及系统 | |
JP6528285B2 (ja) | 危機対応マネジメント装置 | |
US9632918B1 (en) | Creating expected test results using previous test results |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200526 Address after: 310051 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Alibaba (China) Co.,Ltd. Address before: 100083, Beijing, Haidian District, Cheng Fu Road, No. 28, A building, block 12 Applicant before: UC MOBILE Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |