CN105528220B - 加载动态共享对象的方法和装置 - Google Patents

加载动态共享对象的方法和装置 Download PDF

Info

Publication number
CN105528220B
CN105528220B CN201410506142.5A CN201410506142A CN105528220B CN 105528220 B CN105528220 B CN 105528220B CN 201410506142 A CN201410506142 A CN 201410506142A CN 105528220 B CN105528220 B CN 105528220B
Authority
CN
China
Prior art keywords
executable file
shared object
loading
dynamic shared
instruction
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
Application number
CN201410506142.5A
Other languages
English (en)
Other versions
CN105528220A (zh
Inventor
许汉杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410506142.5A priority Critical patent/CN105528220B/zh
Publication of CN105528220A publication Critical patent/CN105528220A/zh
Application granted granted Critical
Publication of CN105528220B publication Critical patent/CN105528220B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种加载动态共享对象的方法和装置,属于通信领域。所述方法包括:获取待加载的动态共享对象的信息;根据所述动态共享对象的信息生成加载指令;在可执行文件中查找加载指令列表;在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。所述装置包括:获取模块、生成模块、查找模块和修改模块。本发明实施例实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。

Description

加载动态共享对象的方法和装置
技术领域
本发明涉及通信领域,特别涉及一种加载动态共享对象的方法和装置。
背景技术
Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件、目标代码、动态共享对象和内核转储的文件格式。NeXTSTEP、OPENSTEP和Mac OS X等操作***都使用这种格式作为其原生可执行文件、目标代码和动态共享对象的格式。
动态共享对象(Dynamic Shared Object,简称DSO)是一个包含可由多个程序同时使用的代码和数据的库,不是可执行文件。多个应用程序可同时访问内存中单个DSO副本的内容。
一个Mach-O格式的可执行文件可以加载Mach-O格式的动态共享对象。当需要加载一个新的动态共享对象时,通常是先修改该可执行文件的程序源代码,然后再使用编译器重新进行编译,生成新的可执行文件,使用新的可执行文件来替代原有的可执行文件,从而实现加载新的动态共享对象。
但是,上述过程必须依赖于原有可执行文件的源代码,当原有可执行文件的源代码不可知时,则无法实现加载新的动态共享对象。
发明内容
有鉴于此,本发明实施例提供了一种加载动态共享对象的方法和装置,以解决在可执行文件的源代码不可知的情况下无法加载新的动态共享对象的技术问题。所述技术方案如下:
一方面,提供了一种加载动态共享对象的方法,包括:
获取待加载的动态共享对象的信息;
根据所述动态共享对象的信息生成加载指令;
在可执行文件中查找加载指令列表;
在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
另一方面,提供了一种加载动态共享对象的装置,包括:
获取模块,用于获取待加载的动态共享对象的信息;
生成模块,用于根据所述动态共享对象的信息生成加载指令;
查找模块,用于在可执行文件中查找加载指令列表;
修改模块,用于在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
本发明实施例提供的技术方案带来的有益效果是:通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的加载动态共享对象的方法流程图;
图2是本发明另一实施例提供的加载动态共享对象的方法流程图;
图3是本发明另一实施例提供的加载动态共享对象的方法流程图;
图4是本发明另一实施例提供的加载动态共享对象的装置结构图;
图5是本发明另一实施例提供的加载动态共享对象的装置结构图;
图6是本发明另一实施例提供的终端结构图;
图7是本发明另一实施例提供的服务器结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例涉及加载动态共享对象的方法和装置,可以应用于NeXTSTEP、OPENSTEP或Mac OS X等操作***中,中央处理器可以为32位或者64位等等,涉及的可执行文件和动态共享对象为Mach-O格式。
参见图1,本发明一实施例提供了一种加载动态共享对象的方法,包括:
101:获取待加载的动态共享对象的信息。
其中,待加载的动态共享对象可以为一个,或者为多个,本实施例对此不做具体限定。动态共享对象的信息至少包括:动态共享对象的路径和名称,进一步地,还可以包括大小等其它信息,此处不限定。
102:根据该动态共享对象的信息生成加载指令。
其中,加载指令用于写入可执行文件中,通过该加载指令该可执行文件可以加载相应的动态共享对象。不同格式的可执行文件对应的加载指令格式也不同,具体地,可以根据可执行文件的格式来确定加载指令的格式,从而生成符合格式要求的加载指令,以保证该加载指令能够正确执行,完成加载动态共享对象的功能。
103:在可执行文件中查找加载指令列表。
其中,加载指令列表中包含可执行文件要加载的所有动态共享对象的信息,在加载动态共享对象时,按照该加载指令列表中各项的顺序逐一加载相应的动态共享对象。此处,对加载指令列表中加载项的个数不做限定。
104:在该加载指令列表的指定位置处添加该加载指令,得到新的可执行文件。
优选地,所述可执行文件和动态共享对象均为Mach-O格式。
其中,所述指定位置可以根据需要预先设定,优选地,设置为加载指令列表的末尾处,可以保证加载指令列表中原有的加载各项能够正常执行,不受影响。
可选的,所述在该加载指令列表的指定位置处添加该加载指令,得到新的可执行文件,可以包括:
在该加载指令列表的末尾处添加该加载指令,得到新的可执行文件。
可选的,所述在该加载指令列表的指定位置处添加该加载指令,得到新的可执行文件,可以包括:
将该加载指令列表中的第一加载指令替换为该加载指令,得到新的可执行文件;其中,该第一加载指令对应第一动态共享对象,该加载指令对应第二动态共享对象,且该第二动态共享对象包含该第一动态共享对象的功能。
可选的,所述根据该动态共享对象的信息生成加载指令,可以包括:
确定该可执行文件中加载指令的格式;
根据该动态共享对象的信息,按照该格式生成加载指令。
可选的,所述在可执行文件中查找加载指令列表,可以包括:
在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境;
相应的,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,可以包括:
在查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
本实施例提供的上述方法,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
参见图2,本发明另一实施例提供了一种加载动态共享对象的方法,包括:
201:获取待加载的动态共享对象的信息。
202:根据该动态共享对象的信息生成加载指令。
具体地,本步骤可以包括:
确定该可执行文件中加载指令的格式;根据该动态共享对象的信息,按照该格式生成加载指令。
其中,生成的加载指令中包含有动态共享对象的路径和名称等信息,且该加载指令的格式符合该可执行文件中加载指令的格式,从而保证该可执行文件在运行时能够正确解析该加载指令,进而保证动态共享对象的正确加载。
203:在可执行文件中查找加载指令列表。
其中,加载指令列表为一系列加载指令的集合,根据加载指令的格式可以在可执行文件中定位到加载指令列表。例如,可执行文件中的第一条加载指令为加载指令列表的开始位置,最后一条加载指令为加载指令列表的末尾位置。
在可执行文件中,加载指令列表可以为一个或者多个,当为多个时,其中每一个加载指令列表对应一个运行环境,且该多个加载指令列表在可执行文件中位于不同的位置。根据不同运行环境对应可执行文件中的偏移值可以得到与该环境对应的加载指令列表,从而可以对该加载指令列表进行修改。
例如,在可执行文件a.exe中有加载指令列表A和B,其中加载指令列表A对应32位的中央处理器,加载指令列表B对应64位的中央处理器,且加载指令列表A与B在可执行文件中的偏移值不同。
204:在该加载指令列表的末尾处添加该加载指令,得到新的可执行文件。
具体地,当查找得到多个加载指令列表时,可以在查找得到的每一个加载指令列表的末尾处添加所述加载指令,得到新的可执行文件。
或者,也可以根据运行该可执行文件的设备中的环境,来确定相应的加载指令列表,并对该确定的加载指令列表进行上述修改。
例如,运行可执行文件的设备为32位的中央处理器,则可以只修改该可执行文件中与32位运行环境对应的加载指令列表。
本实施例中,待加载的动态共享对象为一个新的动态共享对象,因此,采取添加新的加载指令的方式来修改可执行文件。具体地,在加载指令列表的末尾处添加该新生成的加载指令,可以保证加载指令列表中原有的各项加载指令不受影响,且能够实现新动态共享对象的加载。
本实施例提供的上述方法,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在该加载指令列表的末尾处添加该加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
参见图3,本发明另一实施例提供了一种加载动态共享对象的方法,包括:
301:获取待加载的动态共享对象的信息。
302:根据该动态共享对象的信息生成加载指令。
具体地,本步骤可以包括:
确定该可执行文件中加载指令的格式;根据该动态共享对象的信息,按照该格式生成加载指令。
303:在可执行文件中查找加载指令列表。
其中,加载指令列表位于可执行文件的文件头中,分析可执行文件的文件头可以得到加载指令列表,此处不做过多说明。
304:将该加载指令列表中的第一加载指令替换为该加载指令,得到新的可执行文件。
其中,该第一加载指令对应第一动态共享对象,该加载指令对应第二动态共享对象,且该第二动态共享对象包含该第一动态共享对象的功能。
本实施例中,该第一加载指令为加载指令列表中原有的加载指令,用于加载第一动态共享对象,新生成的加载指令用于加载第二动态共享对象,由于该第二动态共享对象包含第一动态共享对象的功能,可以替代该第一动态共享对象,在加载第二动态共享对象的情况下,无需再加载第一动态共享对象,因此,可以用新生成的加载指令替换原有的第一加载指令。修改后的可执行文件在加载该加载指令后,既可以实现第一动态共享对象的功能,也可以实现第二动态共享对象的功能。
本实施例中,具体地,当查找得到多个加载指令列表时,可以在查找得到的每一个加载指令列表中将第一加载指令替换为所述加载指令,得到新的可执行文件。
或者,也可以根据运行该可执行文件的设备中的环境,来确定相应的加载指令列表,并对该确定的加载指令列表进行上述修改。
本实施例提供的上述方法,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,将该加载指令列表中的第一加载指令替换为该加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
参见图4,本发明另一实施例提供了一种加载动态共享对象的装置,包括:
获取模块401,用于获取待加载的动态共享对象的信息;
生成模块402,用于根据该动态共享对象的信息生成加载指令;
查找模块403,用于在可执行文件中查找加载指令列表;
修改模块404,用于在该加载指令列表的指定位置处添加该加载指令,得到新的可执行文件。
参见图5,本实施例中,可选的,修改模块404可以包括:
添加单元404a,用于在该加载指令列表的末尾处添加该加载指令,得到新的可执行文件。
本实施例中,可选的,修改模块404可以包括:
修改单元404b,用于将该加载指令列表中的第一加载指令替换为该加载指令,得到新的可执行文件;其中,该第一加载指令对应第一动态共享对象,该加载指令对应第二动态共享对象,且该第二动态共享对象包含该第一动态共享对象的功能。
本实施例中,可选的,生成模块402可以包括:
生成单元,用于确定该可执行文件中加载指令的格式,根据该动态共享对象的信息,按照该格式生成加载指令。
本实施例中,可选的,查找模块403可以用于:
在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境;
相应的,修改模块404可以用于:
在所述查找模块查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
本实施例提供的上述装置,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
参见图6,本发明另一实施例提供了一种终端600,可以包括通信单元610、包括有一个或一个以上非易失性可读存储介质的存储器620、输入单元630、显示单元640、传感器650、音频电路660、WiFi(wireless fidelity,无线保真)模块670、包括有一个或者一个以上处理核心的处理器680、以及电源690等部件。
本领域技术人员可以理解,图6中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
通信单元610可用于收发信息或通话过程中,信号的接收和发送,该通信单元610可以为RF(Radio Frequency,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元610为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器680处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,通信单元610还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(GeneralPacket Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code Division Multiple Access,宽带码分多址)、LTE(LongTerm Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端600的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器620还可以包括存储器控制器,以提供处理器680和输入单元630对存储器620的访问。
输入单元630可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。可选地,输入单元630可包括触敏表面630a以及其他输入设备630b。触敏表面630a,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面630a上或在触敏表面630a附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面630a可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面630a。除了触敏表面630a,输入单元630还可以包括其他输入设备630b。可选地,其他输入设备630b可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及终端600的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元640可包括显示面板640a,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板640a。进一步的,触敏表面630a可覆盖显示面板640a,当触敏表面630a检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板640a上提供相应的视觉输出。虽然在图6中,触敏表面630a与显示面板640a是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面630a与显示面板640a集成而实现输入和输出功能。
终端600还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。可选地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板640a的亮度,接近传感器可在终端600移动到耳边时,关闭显示面板640a和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端600还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器660a,传声器660b可提供用户与终端600之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器660a,由扬声器660a转换为声音信号输出;另一方面,传声器660b将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一终端,或者将音频数据输出至存储器620以便进一步处理。音频电路660还可能包括耳塞插孔,以提供外设耳机与终端600的通信。
为了实现无线通信,该终端上可以配置有无线通信单元670,该无线通信单元670可以为WiFi模块。WiFi属于短距离无线传输技术,终端600通过无线通信单元670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了无线通信单元670,但是可以理解的是,其并不属于终端600的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是终端600的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行终端600的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理核心;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
终端600还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理***与处理器680逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源690还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端600还可以包括摄像头、蓝牙模块等,在此不再赘述。
以上结合图6给出了终端600的可选结构,其中一个或多个模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个模块具有如下功能:
获取待加载的动态共享对象的信息;
根据所述动态共享对象的信息生成加载指令;
在可执行文件中查找加载指令列表;
在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
其中,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
在所述加载指令列表的末尾处添加所述加载指令,得到新的可执行文件。
其中,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
将所述加载指令列表中的第一加载指令替换为所述加载指令,得到新的可执行文件;
其中,所述第一加载指令对应第一动态共享对象,所述加载指令对应第二动态共享对象,且所述第二动态共享对象包含所述第一动态共享对象的功能。
其中,所述根据所述动态共享对象的信息生成加载指令,包括:
确定所述可执行文件中加载指令的格式;
根据所述动态共享对象的信息,按照所述格式生成加载指令。
其中,所述在可执行文件中查找加载指令列表,包括:
在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境;
相应的,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
在查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
本实施例提供的上述终端,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
本发明另一实施例提供了一种服务器,该服务器可以用于执行上述实施例中提供的加载动态共享对象的方法。参见图7,该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,和/或,一个或一个以上操作***1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
具体在本实施例中,经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取待加载的动态共享对象的信息;
根据所述动态共享对象的信息生成加载指令;
在可执行文件中查找加载指令列表;
在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
其中,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
在所述加载指令列表的末尾处添加所述加载指令,得到新的可执行文件。
其中,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
将所述加载指令列表中的第一加载指令替换为所述加载指令,得到新的可执行文件;
其中,所述第一加载指令对应第一动态共享对象,所述加载指令对应第二动态共享对象,且所述第二动态共享对象包含所述第一动态共享对象的功能。
其中,所述根据所述动态共享对象的信息生成加载指令,包括:
确定所述可执行文件中加载指令的格式;
根据所述动态共享对象的信息,按照所述格式生成加载指令。
其中,所述在可执行文件中查找加载指令列表,包括:
在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境;
相应的,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
在查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
本实施例提供的上述服务器,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
本发明另一实施例提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备中时,可以使得该设备执行如下步骤的指令(instructions):
获取待加载的动态共享对象的信息;
根据所述动态共享对象的信息生成加载指令;
在可执行文件中查找加载指令列表;
在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
其中,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
在所述加载指令列表的末尾处添加所述加载指令,得到新的可执行文件。
其中,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
将所述加载指令列表中的第一加载指令替换为所述加载指令,得到新的可执行文件;
其中,所述第一加载指令对应第一动态共享对象,所述加载指令对应第二动态共享对象,且所述第二动态共享对象包含所述第一动态共享对象的功能。
其中,所述根据所述动态共享对象的信息生成加载指令,包括:
确定所述可执行文件中加载指令的格式;
根据所述动态共享对象的信息,按照所述格式生成加载指令。
其中,所述在可执行文件中查找加载指令列表,包括:
在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境;
相应的,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:
在查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
本实施例提供的上述非易失性可读存储介质,通过获取待加载的动态共享对象的信息,根据所述动态共享对象的信息生成加载指令,在可执行文件中查找加载指令列表,在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,实现了在可执行文件的源代码不可知的情况下,能够加载新的动态共享对象,无需知道可执行文件的源代码,而且也不用使用编译器重新编译,摆脱了对可执行文件源代码的依赖,实用性强,应用更广泛。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种非易失性可读存储介质中,所述非易失性可读存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种加载动态共享对象的方法,其特征在于,应用于NeXTSTEP、OPENSTEP或Mac OS X中,所述方法包括:
获取待加载的动态共享对象的信息;
根据所述动态共享对象的信息生成加载指令,包括:确定可执行文件中加载指令的格式;根据所述动态共享对象的信息,按照所述格式生成所述加载指令;
在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境,且所述多个加载指令列表在所述可执行文件中位于不同的位置,所述运行环境对应的所述加载指令列表根据所述可执行文件中的偏移值得到;
在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,包括:在查找得到的每一个加载指令列表中将第一加载指令替换为所述加载指令,得到新的可执行文件,其中,所述第一加载指令对应第一动态共享对象,所述加载指令对应第二动态共享对象,且所述第二动态共享对象包含所述第一动态共享对象的功能。
2.根据权利要求1所述的方法,其特征在于,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,还包括:
在所述加载指令列表的末尾处添加所述加载指令,得到新的可执行文件。
3.根据权利要求1所述的方法,其特征在于,所述在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,还包括:
在所述查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
4.一种加载动态共享对象的装置,其特征在于,所述装置应用于NeXTSTEP、OPENSTEP或Mac OS X***中,所述装置包括:
获取模块,用于获取待加载的动态共享对象的信息;
生成模块,用于根据所述动态共享对象的信息生成加载指令,其中,所述生成模块包括:生成单元,用于确定可执行文件中加载指令的格式,根据所述动态共享对象的信息,按照所述格式生成所述加载指令;
查找模块,用于在所述可执行文件中查找得到多个加载指令列表,其中,每个加载指令列表分别对应一个运行环境,且所述多个加载指令列表在所述可执行文件中位于不同的位置,所述运行环境对应的所述加载指令列表根据所述可执行文件中的偏移值得到;
修改模块,用于在所述加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件,其中,所述修改模块包括:第二修改单元,用于在查找得到的每一个加载指令列表中将第一加载指令替换为所述加载指令,得到新的可执行文件,其中,所述第一加载指令对应第一动态共享对象,所述加载指令对应第二动态共享对象,且所述第二动态共享对象包含所述第一动态共享对象的功能。
5.根据权利要求4所述的装置,其特征在于,所述修改模块还包括:
添加单元,用于在所述加载指令列表的末尾处添加所述加载指令,得到新的可执行文件。
6.根据权利要求4所述的装置,其特征在于,所述修改模块还包括:
第一修改单元,用于在所述查找得到的每一个加载指令列表的指定位置处添加所述加载指令,得到新的可执行文件。
7.一种终端,其特征在于,包括存储器和一个或多个处理器,其中一个或多个程序模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个程序模块实现权利要求1-3中任一项所述的方法。
8.一种非易失性可读存储介质,其特征在于,所述存储介质中存储有一个或多个程序模块,所述一个或多个程序模块被应用在设备中时,使得所述设备执行权利要求1-3中任一项所述的方法。
CN201410506142.5A 2014-09-28 2014-09-28 加载动态共享对象的方法和装置 Active CN105528220B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410506142.5A CN105528220B (zh) 2014-09-28 2014-09-28 加载动态共享对象的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410506142.5A CN105528220B (zh) 2014-09-28 2014-09-28 加载动态共享对象的方法和装置

Publications (2)

Publication Number Publication Date
CN105528220A CN105528220A (zh) 2016-04-27
CN105528220B true CN105528220B (zh) 2020-12-01

Family

ID=55770469

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410506142.5A Active CN105528220B (zh) 2014-09-28 2014-09-28 加载动态共享对象的方法和装置

Country Status (1)

Country Link
CN (1) CN105528220B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105974231B (zh) * 2016-05-10 2018-09-07 电子科技大学 一种用于航电***l波段设备测试的中频信号产生装置
CN109525584B (zh) * 2018-11-26 2020-12-04 竞技世界(北京)网络技术有限公司 一种构建移动端跨平台多类型应用容器的方法
CN111399927B (zh) * 2018-12-14 2024-06-18 北京奇虎科技有限公司 应用共享Class文件的方法及装置、计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998033106A1 (en) * 1997-01-29 1998-07-30 Shopnow.Com, Inc. Method and system for injecting new code into existing application code
CN102004884A (zh) * 2009-08-28 2011-04-06 华为技术有限公司 一种获取可执行文件输入表的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409717B1 (en) * 2002-05-23 2008-08-05 Symantec Corporation Metamorphic computer virus detection
CN101719077B (zh) * 2009-12-24 2012-06-27 飞天诚信科技股份有限公司 在.Net程序中注入代码的方法和装置
CN102929716B (zh) * 2012-11-07 2015-04-15 北京亿赛通科技发展有限责任公司 一种启动多进程的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998033106A1 (en) * 1997-01-29 1998-07-30 Shopnow.Com, Inc. Method and system for injecting new code into existing application code
CN102004884A (zh) * 2009-08-28 2011-04-06 华为技术有限公司 一种获取可执行文件输入表的方法及装置

Also Published As

Publication number Publication date
CN105528220A (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
US10186244B2 (en) Sound effect processing method and device, plug-in unit manager and sound effect plug-in unit
CN104518953B (zh) 删除消息的方法、即时通信终端及***
CN106502703B (zh) 一种函数调用方法和装置
US20150163232A1 (en) Method, device and system for detecting malware in a mobile terminal
CN106775827B (zh) 一种应用程序更新方法及装置、计算机设备
CN106775833B (zh) 设备驱动程序加载方法、终端及***
CN106775828B (zh) 应用程序安装方法及装置、计算机设备
WO2015078342A1 (en) Method for acquiring memory information, and terminal
CN111770009B (zh) 一种数据传输方法及相关设备
CN110046497B (zh) 一种函数挂钩实现方法、装置和存储介质
EP2869604A1 (en) Method, apparatus and device for processing a mobile terminal resource
CN106095423B (zh) 提供浏览服务的方法、终端及服务器
CN109688611B (zh) 一种频段参数的配置方法、装置、终端和存储介质
CN105528220B (zh) 加载动态共享对象的方法和装置
US11327639B2 (en) Split view exiting method, split view exiting device, and electronic device
CN105278942B (zh) 组件管理方法及装置
WO2015154700A1 (en) Method and apparatus for repairing dynamic link library file
CN111045737B (zh) 设备标识获取方法、装置、终端设备和存储介质
WO2015067206A1 (zh) 一种文件查找的方法及终端
CN106933626B (zh) 应用关联方法及装置
CN107122204B (zh) 应用的卸载状态检测方法及装置
US10057740B2 (en) Methods and devices for processing mobile terminal resource
CN108280798B (zh) 一种浏览器内核渲染显示的方法和装置
CN109240986B (zh) 一种日志处理方法、装置及存储介质
CN107346347B (zh) 网页表格显示方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant