一种可移植的执行体文件的重组方法和装置制造方法及图纸

技术编号:9765982 阅读:154 留言:0更新日期:2014-03-15 11:59
本发明专利技术公开了一种可移植的执行体文件的重组方法和装置,所述方法包括:读取原可移植的执行体文件中功能逻辑序列;获取所述功能逻辑序列的调用记录;采用所述调用记录生成排序位置;按照所述排序位置重组所述功能逻辑序列,获得目标可移植的执行体文件。本发明专利技术获取可移植的执行体文件的功能逻辑序列的调用记录生成排序位置,再按照排序位置重组功能逻辑序列,使得CPU可以直接在内存中读取功能逻辑序列,避免了CPU频繁读磁盘,降低了系统资源的耗费,减少了缺页中断的产生,从而加快了应用程序的冷启动速度。

【技术实现步骤摘要】
一种可移植的执行体文件的重组方法和装置
本专利技术涉及数据优化的
,具体涉及一种可移植的执行体文件的重组方法和一种可移植的执行体文件的重组装置。
技术介绍
文件是一些在计算机磁盘上连续存放的二进制的数据。对于不同的操作系统,其可执行文件的格式是不同的。在Win9x、Win NT/2000/XP下,32位的可执行文件的格式是PE (Portable Executable,可移植的可执行文件)。例如在Windows平台下,Win32可执行文件,如 *.ΕΧΕ、*.DLL、*.0BJ、*.COX 等,都是 PE 格式。可执行文件的编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE,即计算机上的文件都是经过编译后的文件。链接器(Linker)是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件。目标文件是包括机器码和链接器可用信息的程序模块。简单的讲,链接器的工作就是解析未定义的符号引用,将目标文件中的占位符替换为符号的地址。链接器还要完成程序中各目标文件的地址空间的组织,这可能涉及重定位工作。在可执行文件(例如浏览器)的编译过程中,某些链接器(例如Visual Studio)生成的函数符号默认是无序的。而可执行文件(例如浏览器)在冷启动时会去寻找并执行这些符号所在的代码段,默认情况下,浏览器会优先从内存中寻找,当找不到的情况下,处理器会产生缺页中断,此时处理器会从硬盘中取出那一页放入内存。然而函数符号的无序性会导致这种缺页中断发生的频率远高于实际所需的次数,由于硬盘的速度远慢于内存,频繁地读取硬盘严重地影响了启动速度。此外,频繁从硬盘中读取代码到内存也会导致可执行文件(例如浏览器)运行时占用的内存增加。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种可移植的执行体文件的重组方法和相应的一种可移植的执行体文件的重组>J-U ρ?α装直。依据本专利技术的一个方面,提供了一种可移植的执行体文件的重组方法,包括:读取原可移植的执行体文件中功能逻辑序列;获取所述功能逻辑序列的调用记`录;采用所述调用记录生成排序位置;按照所述排序位置重组所述功能逻辑序列,获得目标可移植的执行体文件。可选地,所述获取所述功能逻辑序列的调用记录的步骤包括:在所述原可移植的执行体文件中植入追踪组件;运行所述原可移植的执行体文件归属的应用程序;采用所述追踪组件记录所述功能逻辑序列的调用信息。可选地,所述获取所述功能逻辑序列的调用记录的步骤还包括:采用所述追踪组件记录所述功能逻辑序列在调用时,与所述应用程序中的进程以及线程的对应关系。可选地,所述在所述原可移植的执行体文件中植入追踪组件的步骤包括:在所述原可移植的执行体文件中的导入表中添加所述追踪组件的标识;采用所述追踪组件为每个功能逻辑序列创建对应的调用组件。可选地,所述采用所述追踪组件记录所述功能逻辑序列的调用信息的步骤包括:当所述功能逻辑序列被调用时,通过所述调用组件调用所述追踪组件;采用所述追踪组件记录当前功能逻辑序列的地址信息及调用时间。可选地,所述采用所述调用记录生成排序位置的步骤包括:按照所述调用时间对所述功能逻辑序列的地址信息进行排序,获得排序位置。可选地,所述按照所述排序位置重组所述功能逻辑序列,获得目标可移植的执行体文件的步骤包括:按照排序后的地址信息将对应的功能逻辑序列进行重组,获得目标可移植的执行体文件。可选地,还包括:采用所述排序位置更新所述目标可移植的执行体文件归属的应用程序的程序数据库文件。可选地,所述采用所述排序位置更新所述可移植的执行体文件归属的应用程序的程序数据库文件的步骤包括:将重组后的地址信息更新至所述程序数据库文件存储的所述目标可移植的执行体文件的地址信息。可选地,还包括:将所述目标可移植的执行体文件、所述程序数据库文件和组成文件生成应用程序安装包;所述组成文件为除所述目标可移植的执行体文件和所述程序数据库文件外组成所述应用程序的文件。根据本专利技术的另一方面,提供了一种可移植的执行体文件的重组装置,包括:功能逻辑序列读取模块,适于读取原可移植的执行体文件中功能逻辑序列;调用记录获取模块,适于获取所述功能逻辑序列的调用记录;排序位置生成模块,适于采用所述调用记录生成排序位置;重组模块,适于按照所述排序位置重组所述功能逻辑序列,获得目标可移植的执行体文件。可选地,所述调用记录获取模块还适于:在所述原可移植的执行体文件中植入追踪组件;运行所述原可移植的执行体文件归属的应用程序;采用所述追踪组件记录所述功能逻辑序列的调用信息。可选地,所述调用记录获取模块还适于:采用所述追踪组件记录所述功能逻辑序列在调用时,与所述应用程序中的进程以及线程的对应关系。可选地,所述调用记录获取模块还适于:在所述原可移植的执行体文件中的导入表中添加所述追踪组件的标识;采用所述追踪组件为每个功能逻辑序列创建对应的调用组件。可选地,所述调用记录获取模块还适于:当所述功能逻辑序列被调用时,通过所述调用组件调用所述追踪组件;[0051 ] 采用所述追踪组件记录当前功能逻辑序列的地址信息及调用时间。可选地,所述排序位置生成模块还适于:按照所述调用时间对所述功能逻辑序列的地址信息进行排序,获得排序位置。可选地,所述重组模块还适于:按照排序后的地址信息将对应的功能逻辑序列进行重组,获得目标可移植的执行体文件。可选地,还包括:程序数据库文件更新模块,适于采用所述排序位置更新所述目标可移植的执行体文件归属的应用程序的程序数据库文件。可选地,所述程序数据库文件更新模块还适于:将重组后的地址信息更新至所述程序数据库文件存储的所述目标可移植的执行体文件的地址信息。可选地,还包括:安装包生成模块,适于将所述目标可移植的执行体文件、所述程序数据库文件和组成文件生成应用程序安装包;所述组成文件为除所述目标可移植的执行体文件和所述程序数据库文件外组成所述应用程序的文件。本专利技术获取可移植的执行体文件的功能逻辑序列的调用记录生成排序位置,再按照排序位置重组功能逻辑序列,使得CPU可以直接在内存中读取功能逻辑序列,避免了 CPU频繁读磁盘,降低了系统资源的耗费,减少了缺页中断的产生,从而加快了应用程序的冷启动速度。本专利技术实施例可以将重组后的可移植的执行体文件、更新后的程序数据库文件和其他组成文件生成应用程序安装包,其他用户给予词安装包进行应用程序的安装,可以大大减少其他用户重组可移植的执行体文件的步骤,大大减少了其他用户的设备的系统资源耗费。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的【具体实施方式】。【附图说明】通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得本文档来自技高网
...
一种可移植的执行体文件的重组方法和装置

【技术保护点】
一种可移植的执行体文件的重组方法,包括:读取原可移植的执行体文件中功能逻辑序列;获取所述功能逻辑序列的调用记录;采用所述调用记录生成排序位置;按照所述排序位置重组所述功能逻辑序列,获得目标可移植的执行体文件。

【技术特征摘要】
1.一种可移植的执行体文件的重组方法,包括: 读取原可移植的执行体文件中功能逻辑序列; 获取所述功能逻辑序列的调用记录; 采用所述调用记录生成排序位置; 按照所述排序位置重组所述功能逻辑序列,获得目标可移植的执行体文件。2.如权利要求1所述的方法,其特征在于,所述获取所述功能逻辑序列的调用记录的步骤包括: 在所述原可移植的执行体文件中植入追踪组件; 运行所述原可移植的执行体文件归属的应用程序; 采用所述追踪组件记录所述功能逻辑序列的调用信息。3.如权利要求2所述的方法,其特征在于,所述获取所述功能逻辑序列的调用记录的步骤还包括: 采用所述追踪组件记录所述功能逻辑序列在调用时,与所述应用程序中的进程以及线程的对应关系。4.如权利要求2或3所述的方法,其特征在于,所述在所述原可移植的执行体文件中植入追踪组件的步骤包括: 在所述原可移植的执行体文`件中的导入表中添加所述追踪组件的标识; 采用所述追踪组件为每个功能逻辑序列创建对应的调用组件。5.如权利要求4所述的方法,其特征在于,所述采用所述追踪组件记录所述功能逻辑序列的调用信息的步骤包括: 当所述功能逻辑序列被调用时,通过所述调用组件调用所述追踪组件; 采用所述追踪组件记录当前功...

【专利技术属性】
技术研发人员:李宝生郁利涛
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:

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

1