CN105677435A - 函数的调用方法、装置及终端 - Google Patents

函数的调用方法、装置及终端 Download PDF

Info

Publication number
CN105677435A
CN105677435A CN201511021199.7A CN201511021199A CN105677435A CN 105677435 A CN105677435 A CN 105677435A CN 201511021199 A CN201511021199 A CN 201511021199A CN 105677435 A CN105677435 A CN 105677435A
Authority
CN
China
Prior art keywords
function
address
offset address
private
offset
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.)
Pending
Application number
CN201511021199.7A
Other languages
English (en)
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.)
Beijing Xiaomi Technology Co Ltd
Xiaomi Inc
Original Assignee
Xiaomi Inc
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 Xiaomi Inc filed Critical Xiaomi Inc
Priority to CN201511021199.7A priority Critical patent/CN105677435A/zh
Publication of CN105677435A publication Critical patent/CN105677435A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Abstract

本公开是关于函数的调用方法、装置及终端,该方法包括:函数的调用方法,其特征在于,包括:对动态库进行反汇编,得到汇编代码;从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;基于所述第二地址对所述私有函数进行调用。应用本公开实施例,能够实现对私有函数的调用,使得终端的程序更具有健壮性。

Description

函数的调用方法、装置及终端
技术领域
本公开涉及网络通信技术领域,尤其涉及一种函数的调用方法、装置及终端。
背景技术
相关技术中,用户在使用某些平台的c/c++动态数据库的时候,能够获知公有函数的实现方式,但是用户没有权限获知私有函数的实现方式,也就不能够使用数据库中的私有函数,这就给用户带来了不便。
发明内容
为克服相关技术中存在的问题,本公开提供了一种函数的调用方法及装置。
根据本公开实施例的第一方面,提供一种函数的调用方法,包括:
对动态库进行反汇编,得到汇编代码;
从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
基于所述第二地址对所述私有函数进行调用。
可选的,所述基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址之前,所述方法还包括:
运行所述动态库,得到所述公有函数的第一地址。
可选的,所述从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址,包括:
基于所述公有函数和所述待调用的私有函数的名称,分别从所述汇编代码中查找所述公有函数的第一偏移地址,以及所述私有函数的第二偏移地址。
可选的,所述基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址,包括:
基于所述公有函数的第一地址及所述公有函数的第一偏移地址,确定所述动态库的库函数的起始地址;
基于所述库函数的起始地址和所述私有函数的第二偏移地址,确定所述私有函数的第二地址。
根据本公开实施例的第二方面,提供一种函数的调用装置,包括:
反汇编模块,被配置为对动态库进行反汇编,得到汇编代码;
获取模块,被配置为从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
确定模块,被配置为基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
调用模块,被配置为基于所述第二地址对所述私有函数进行调用。
可选的,所述装置还包括:
运行模块,被配置为运行所述动态库,得到所述公有函数的第一地址。
可选的,所述获取模块包括:
查找子模块,被配置为基于所述公有函数和所述待调用的私有函数的名称,分别从所述汇编代码中查找所述公有函数的第一偏移地址,以及所述私有函数的第二偏移地址。
可选的,所述确定模块包括:
第一确定子模块,被配置为基于所述公有函数的第一地址及所述公有函数的第一偏移地址,确定所述动态库的库函数的起始地址;
第二确定子模块,被配置为基于所述库函数的起始地址和所述私有函数的第二偏移地址,确定所述私有函数的第二地址。
根据本公开实施例的第三方面,提供一种终端,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
对动态库进行反汇编,得到汇编代码;
从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
基于所述第二地址对所述私有函数进行调用。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开中终端通过对动态库进行反汇编,从得到的汇编代码中获取公有函数及私有函数的偏移地址,再根据公有函数的第一地址就能够计算出私有函数的第二地址,从而基于第二地址能够实现对私有函数的调用,使得终端的程序更具有健壮性。
本公开中终端可以通过运行动态库得到公有函数的第一地址。
本公开中终端可以基于公有函数的名称及私有函数的名称去汇编代码中查找公有函数的第一偏移地址及私有函数的第二偏移地址,以便计算私有函数的第二地址。
本公开中终端可以通过公有函数的第一地址和第一偏移地址计算库函数的起始地址,再基于库函数的起始地址和私有函数的第二地址计算私有函数的第二地址,从而实现对私有函数的调用,该方法易于实现,且提高了终端运行程序的健壮性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开根据一示例性实施例示出的一种函数的调用方法流程图。
图2是本公开根据一示例性实施例示出的另一种函数的调用方法流程图。
图3是本公开根据一示例性实施例示出的一种函数的调用方法的应用场景示意图。
图4是本公开根据一示例性实施例示出的一种函数的调用装置框图。
图5是本公开根据一示例性实施例示出的另一种函数的调用装置框图。
图6是本公开根据一示例性实施例示出的另一种函数的调用装置框图。
图7是本公开根据一示例性实施例示出的另一种函数的调用装置框图。
图8是本公开根据一示例性实施例示出的一种用于函数的调用装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,图1是根据一示例性实施例示出的一种函数的调用方法流程图,该方法可以用于终端中,包括以下步骤:
步骤101、对动态库进行反汇编,得到汇编代码。
本公开中的终端可以是任何具有上网功能的智能终端,例如,可以具体为手机、平板电脑、PDA(PersonalDigitalAssistant,个人数字助理)等。其中,终端可以通过无线局域网接入路由器,并通过路由器访问公网上的服务器。
本公开实施例中的动态库即用户使用的平台的c/c++动态库,例如google的动态数据库,其中包含有用户能够直接使用的公有函数和用户想要使用但无法使用的私有函数。
其中,汇编代码中带有public(公有)的类成员为公有函数,能够被该类的所有成员所访问,也就是说能够利用对象来直接调用;带有private(私有)的类成员为私有函数,不能被对象直接访问。
本公开实施例中采用的反汇编方法可以为相关技术中常用的反汇编技术,例如IDA(InteractiveDisassembler,交互式反汇编)等。
步骤102、从汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址。
在反汇编得到的汇编代码中,基于公有函数的名称能够得到公有函数的偏移地址,这里称之为第一偏移地址,基于私有函数的名称能够得到私有函数的偏移地址,这里称之为第二偏移地址。
步骤103、基于公有函数的第一地址、第一偏移地址和第二偏移地址确定私有函数的第二地址。
其中第一地址可以理解为公有函数能够被调用的真正地址,第二地址可以理解为私有函数能够被调用的真正地址。
步骤104、基于第二地址对私有函数进行调用。
上述实施例中,终端通过对动态库进行反汇编,从得到的汇编代码中获取公有函数及私有函数的偏移地址,再根据公有函数的第一地址就能够计算出私有函数的第二地址,从而基于第二地址能够实现对私有函数的调用,使得终端的程序更具有健壮性。
如图2所示,图2是根据一示例性实施例示出的另一种函数的调用方法流程图,该方法可以用于终端中,并建立在图1所示实施例的基础上,该方法可以包括以下步骤:
步骤201、对动态库进行反汇编,得到汇编代码。
本公开实施例中该动态库为so格式的文件,终端可以对所使用的第三方平台的动态库进行反汇编和解析。
步骤202、运行动态库,得到公有函数的第一地址。
本公开实施例中,在运行动态库的程序的过程中,通过公有函数的名称能够查找得到公有函数的第一地址。
步骤203、基于公有函数和待调用的私有函数的名称,分别从汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址。
其中,公有函数中包含有私有函数。
步骤204、基于公有函数的第一地址及公有函数的第一偏移地址,确定动态库的库函数的起始地址。
本公开实施例中,公有函数的第一地址为动态库的库函数的起始地址加公有函数自身的第一偏移地址,通过该关系,能够确定库函数的起始地址。
步骤205、基于库函数的起始地址和私有函数的第二偏移地址,得到所述私有函数的第二地址。
本公开实施例中,私有函数的第二地址为库函数的起始地址加私有函数自身的第二偏移地址,通过该关系,能够确定私有函数的第二地址。
步骤206、基于第二地址调用私有函数。
上述实施例中,终端可以通过公有函数的第一地址和第一偏移地址计算库函数的起始地址,再基于库函数的起始地址和私有函数的第二地址计算私有函数的第二地址,从而实现对私有函数的调用,该方法易于实现。
如图3所示,图3是本公开根据一示例性实施例示出的一种函数的调用方法的应用场景示意图。在图3所示的场景中,包括:作为终端的智能手机。
用户希望通过智能手机使用某平台的私有函数,首先,智能手机获取该平台的动态库,对动态库的so文件进行反汇编,得到汇编代码,该汇编代码可以如下所示:
从上述汇编代码中,智能手机根据公有函数的名称dvmHeapSource能够查找到公有函数的第一偏移地址,第一偏移地址为75c1e;还可以通过私有函数的名称trimHeaps从上述汇编代码中查找到该私有函数的第二偏移地址,为75570。然后通过运行该动态库的程序,如下所示:
智能手机能够得到公有函数dvmHeapSource的第一地址tem_ptr,通过第一地址与第一偏移地址,能够计算得到动态库的库函数的起始地址,即tem_ptr+=14,基于该起始地址和第二偏移地址,能够计算出私有函数trimHeaps的第二地址trimHeaps_f_ptr,计算过程即trimHeaps_f_ptr=(VOID_FUNC_CALL)((unsignedlong)tem_ptr+2*offset+4+1)。智能手机调用该第二地址就能够使用私有函数trimHeaps。
在图3所示应用场景中,实现函数的调用的具体过程可以参见前述对图1-2中的描述,在此不再赘述。
与前述函数的调用方法实施例相对应,本公开还提供了函数的调用装置及其所应用的终端的实施例。
如图4所示,图4是本公开根据一示例性实施例示出的一种函数的调用装置框图,该装置可以应用于终端中,并用于执行图1所示的方法,该装置可以包括:反汇编模块410、获取模块420、确定模块430和调用模块440。
反汇编模块410,被配置为对动态库进行反汇编,得到汇编代码;
获取模块420,被配置为从反汇编模块410得到的汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
确定模块430,被配置为基于公有函数的第一地址、获取模块420获取的第一偏移地址和第二偏移地址确定私有函数的第二地址;
调用模块440,被配置为基于确定模块430确定的第二地址对私有函数进行调用。
上述实施例中,终端通过对动态库进行反汇编,从得到的汇编代码中获取公有函数及私有函数的偏移地址,再根据公有函数的第一地址就能够计算出私有函数的第二地址,从而基于第二地址能够实现对私有函数的调用,使得终端的程序更具有健壮性。
如图5所示,图5是本公开根据一示例性实施例示出的另一种函数的调用装置框图,该实施例在前述图4所示实施例的基础上,该装置还可以包括:运行模块450。
运行模块450,被配置为运行动态库,得到公有函数的第一地址。
上述实施例中,终端可以通过运行动态库得到公有函数的第一地址。
如图6所示,图6是本公开根据一示例性实施例示出的另一种函数的调用装置框图,该实施例在前述图5所示实施例的基础上,获取模块420可以包括:查找子模块421。
查找子模块421,被配置为基于公有函数和待调用的私有函数的名称,分别从反汇编模块410得到的汇编代码中查找公有函数的第一偏移地址,以及私有函数的第二偏移地址。
上述实施例中,终端可以基于公有函数的名称及私有函数的名称去汇编代码中查找公有函数的第一偏移地址及私有函数的第二偏移地址,以便计算私有函数的第二地址。
如图7所示,图7是本公开根据一示例性实施例示出的另一种函数的调用装置框图,该实施例在前述图6所示实施例的基础上,确定模块430可以包括:第一确定子模块431和第二确定子模块432。
第一确定子模块431,被配置为基于公有函数的第一地址及公有函数的第一偏移地址,确定动态库的库函数的起始地址;
第二确定子模块432,被配置为基于第一确定子模块431确定的库函数的起始地址和所述私有函数的第二偏移地址,确定所述私有函数的第二地址。
上述实施例中,终端可以通过公有函数的第一地址和第一偏移地址计算库函数的起始地址,再基于库函数的起始地址和私有函数的第二地址计算私有函数的第二地址,从而实现对私有函数的调用,该方法易于实现,且提高了终端运行程序的健壮性。
上述图4至图7示出的函数的调用装置实施例可以应用在终端中。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
与图4相应的,本公开还提供一种终端,该终端包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
对动态库进行反汇编,得到汇编代码;
从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
基于所述第二地址对所述私有函数进行调用。
如图8所示,图8是本公开根据一示例性实施例示出的一种用于函数的调用装置800(终端设备侧)的一结构示意图。例如,装置800可以是具有路由功能的移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图8,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器,微波传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本公开实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种函数的调用方法,所述方法包括:
对动态库进行反汇编,得到汇编代码;
从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
基于所述第二地址对所述私有函数进行调用。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

Claims (9)

1.一种函数的调用方法,其特征在于,包括:
对动态库进行反汇编,得到汇编代码;
从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
基于所述第二地址对所述私有函数进行调用。
2.根据权利要求1所述的方法,其特征在于,所述基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址之前,所述方法还包括:
运行所述动态库,得到所述公有函数的第一地址。
3.根据权利要求1所述的方法,其特征在于,所述从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址,包括:
基于所述公有函数和所述待调用的私有函数的名称,分别从所述汇编代码中查找所述公有函数的第一偏移地址,以及所述私有函数的第二偏移地址。
4.根据权利要求3所述的方法,其特征在于,所述基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址,包括:
基于所述公有函数的第一地址及所述公有函数的第一偏移地址,确定所述动态库的库函数的起始地址;
基于所述库函数的起始地址和所述私有函数的第二偏移地址,确定所述私有函数的第二地址。
5.一种函数的调用装置,其特征在于,包括:
反汇编模块,被配置为对动态库进行反汇编,得到汇编代码;
获取模块,被配置为从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
确定模块,被配置为基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
调用模块,被配置为基于所述第二地址对所述私有函数进行调用。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
运行模块,被配置为运行所述动态库,得到所述公有函数的第一地址。
7.根据权利要求5所述的装置,其特征在于,所述获取模块包括:
查找子模块,被配置为基于所述公有函数和所述待调用的私有函数的名称,分别从所述汇编代码中查找所述公有函数的第一偏移地址,以及所述私有函数的第二偏移地址。
8.根据权利要求7所述的装置,其特征在于,所述确定模块包括:
第一确定子模块,被配置为基于所述公有函数的第一地址及所述公有函数的第一偏移地址,确定所述动态库的库函数的起始地址;
第二确定子模块,被配置为基于所述库函数的起始地址和所述私有函数的第二偏移地址,确定所述私有函数的第二地址。
9.一种终端,其特征在于,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
对动态库进行反汇编,得到汇编代码;
从所述汇编代码中获取公有函数的第一偏移地址及待调用的私有函数的第二偏移地址;
基于所述公有函数的第一地址、所述第一偏移地址和所述第二偏移地址确定所述私有函数的第二地址;
基于所述第二地址对所述私有函数进行调用。
CN201511021199.7A 2015-12-30 2015-12-30 函数的调用方法、装置及终端 Pending CN105677435A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511021199.7A CN105677435A (zh) 2015-12-30 2015-12-30 函数的调用方法、装置及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511021199.7A CN105677435A (zh) 2015-12-30 2015-12-30 函数的调用方法、装置及终端

Publications (1)

Publication Number Publication Date
CN105677435A true CN105677435A (zh) 2016-06-15

Family

ID=56189810

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511021199.7A Pending CN105677435A (zh) 2015-12-30 2015-12-30 函数的调用方法、装置及终端

Country Status (1)

Country Link
CN (1) CN105677435A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897533A (zh) * 2018-06-06 2018-11-27 北京奇虎科技有限公司 一种函数调用的方法、装置及终端
CN111782302A (zh) * 2020-07-13 2020-10-16 腾讯科技(深圳)有限公司 进程更新方法和装置、存储介质及电子设备
CN113806251A (zh) * 2021-11-19 2021-12-17 沐曦集成电路(上海)有限公司 一种共享内存管理单元的系统及搭建方法、内存访问方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101714075A (zh) * 2009-12-17 2010-05-26 深圳市万兴软件有限公司 函数调用方法和装置
CN103218428A (zh) * 2013-04-09 2013-07-24 深圳市九洲电器有限公司 一种动态链接方法及系统
CN104268472A (zh) * 2014-09-11 2015-01-07 腾讯科技(深圳)有限公司 还原被第三方动态库修改函数地址的方法和装置
CN104375828A (zh) * 2014-10-27 2015-02-25 小米科技有限责任公司 内存优化方法及装置
CN104794046A (zh) * 2014-01-21 2015-07-22 腾讯科技(深圳)有限公司 符号化程序运行日志的方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101714075A (zh) * 2009-12-17 2010-05-26 深圳市万兴软件有限公司 函数调用方法和装置
CN103218428A (zh) * 2013-04-09 2013-07-24 深圳市九洲电器有限公司 一种动态链接方法及系统
CN104794046A (zh) * 2014-01-21 2015-07-22 腾讯科技(深圳)有限公司 符号化程序运行日志的方法和系统
CN104268472A (zh) * 2014-09-11 2015-01-07 腾讯科技(深圳)有限公司 还原被第三方动态库修改函数地址的方法和装置
CN104375828A (zh) * 2014-10-27 2015-02-25 小米科技有限责任公司 内存优化方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897533A (zh) * 2018-06-06 2018-11-27 北京奇虎科技有限公司 一种函数调用的方法、装置及终端
CN111782302A (zh) * 2020-07-13 2020-10-16 腾讯科技(深圳)有限公司 进程更新方法和装置、存储介质及电子设备
CN113806251A (zh) * 2021-11-19 2021-12-17 沐曦集成电路(上海)有限公司 一种共享内存管理单元的系统及搭建方法、内存访问方法

Similar Documents

Publication Publication Date Title
CN104038536B (zh) 插件通信方法和装置
CN106254467A (zh) 文件分享方法及装置
CN104375828A (zh) 内存优化方法及装置
CN104933170A (zh) 信息展示方法及装置
CN105722064A (zh) 获取终端信息的方法及装置
CN105516270A (zh) 信息推送方法及装置
CN105812515A (zh) 移动终端的保护套、设置系统主题的方法、装置及终端
CN104636453A (zh) 非法用户资料识别方法及装置
CN106201310A (zh) 通知消息的显示方法、装置及终端
CN105677338A (zh) 应用程序显示方法及装置
CN104767857A (zh) 基于云名片的电话呼叫方法及装置
CN105354017A (zh) 信息处理方法及装置
CN103916468A (zh) 系统升级方法、终端、服务器及升级系统
CN105808647A (zh) 消息编辑的处理方法和装置
CN105468417A (zh) 应用软件安装方法和装置
CN105183571A (zh) 函数调用方法和装置
CN105407160A (zh) 界面显示方法和装置
CN105430469B (zh) 音视频数据的播放方法、装置、终端及服务器
CN105677435A (zh) 函数的调用方法、装置及终端
CN105912202A (zh) 应用分享方法及装置
CN105843894A (zh) 信息推荐方法及装置
CN105094608A (zh) 任务展示方法和装置
CN106506808A (zh) 对通讯消息提示的方法及装置
CN106376053A (zh) 终端的驻网方法、装置及终端
CN105530332A (zh) 位置信息的处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160615

RJ01 Rejection of invention patent application after publication