CN107861729B - 一种固件装载基址的定位方法、装置及电子设备 - Google Patents
一种固件装载基址的定位方法、装置及电子设备 Download PDFInfo
- Publication number
- CN107861729B CN107861729B CN201711089856.0A CN201711089856A CN107861729B CN 107861729 B CN107861729 B CN 107861729B CN 201711089856 A CN201711089856 A CN 201711089856A CN 107861729 B CN107861729 B CN 107861729B
- Authority
- CN
- China
- Prior art keywords
- function
- instruction
- firmware
- offset
- ldr
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种固件装载基址的定位方法、装置及电子设备,通过获取固件的全部第一函数和对应的第一函数偏移量,同时依据该固件中的LDR指令,获取LDR指令所加载的地址,作为第二函数偏移量,可以获知该固件映射到嵌入式设备内存前后,固件内函数所处的位置,即第一函数偏移量和第二函数偏移量,进而在将每一个第一函数偏移量分别与每一个第二函数偏移量做差,计算出多个差值结果时,利用每一函数映射到嵌入式设备内存前后的两个函数偏移量之差均相同的原理,选取出现次数最多的差值结果作为固件的装载基址,以提高装载基址定位的自动性,在节省人工操作和干预时间的基础上,提升装载基址的定位效率。
Description
技术领域
本发明涉及反汇编技术领域,更具体的说,是涉及一种固件装载基址的定位方法、装置及电子设备。
背景技术
固件逆向工程是针对固件中存储的代码和数据进行逆向分析和研究,从而演绎并得出该固件的处理流程、架构、算法等设计要素。
随着固件逆向工程技术的不断发展,ARM(Advanced RISC Machines)固件逆向工程逐渐成为固件逆向工程的重要分支。目前,ARM处理器通常应用于嵌入式设备,如手机、固态盘、智能手表、智能相机等。ARM固件为运行在ARM处理器上的固件。当需要对ARM固件进行逆向工程时,通常需要先获知该ARM固件映射到嵌入式设备内存中的起始位置,即该ARM固件的装载基址,进而才能借助反汇编工具(如IDAPro),对ARM固件进行逆向分析。
目前对ARM固件的装载基址的定位方法主要是开发人员人工浏览固件的反汇编代码,进而凭借经验定位出ARM固件的装载基址,然而人工定位装载基址会增加装载基址定位过程中的人力资源消耗和时间成本,降低了装载基址的定位效率。
发明内容
有鉴于此,本发明提供了一种固件装载基址的定位方法、装置及电子设备,节省了人力和时间,进而提高了装载基址的定位效率。
为实现上述目的,本发明提供如下技术方案:
一种固件装载基址的定位方法,包括:
获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;
依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;
从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果。
优选地,所述获取固件的第一函数和第一函数偏移量,包括:
从所述固件的起始位置开始获取第一函数;
当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
判断获取到的所述第一函数是否为最后一个第一函数;
若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取第一函数,直到获取到所述最后一个第一函数。
优选地,所述依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,包括:
从所述固件的起始位置开始获取指令;
判断获取到的所述指令是否为所述LDR指令;
若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;
判断获取到的所述LDR指令是否为最后一条指令;
若获取到的所述LDR指令不为所述最后一条指令,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述LDR指令为所述最后一条指令;
若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;
若获取到的所述指令不为所述最后一条指令,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述指令为所述最后一条指令。
优选地,所述从全部所述差值结果中确定出目标差值,作为固件的装载基址,包括:
计算每一个所述差值结果的出现次数;
按照所述差值结果的出现次数,降序排列所述差值结果;
将处于第一排列位置的差值结果作为所述固件的装载基址。
一种固件装载基址的定位装置,包括:
第一获取模块,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;
第二获取模块,用于依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
做差模块,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;
确定模块,用于从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果。
优选地,所述第一获取模块包括:
第一获取单元,用于从所述固件的起始位置开始获取第一函数;
第二获取单元,用于当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
第一判断单元,用于判断获取到的所述第一函数是否为最后一个第一函数;
第一更新单元,用于若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置;
所述第一获取单元,还用于在所述第一更新单元将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取第一函数。
优选地,所述第二获取模块包括:
第三获取单元,用于从所述固件的起始位置开始获取指令;
第二判断单元,用于判断获取到的所述指令是否为所述LDR指令;
第四获取单元,用于若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;
第三判断单元,用于在所述第四获取单元获取所述LDR指令加载的地址,作为所述第二函数偏移量之后,判断获取到的所述LDR指令是否为最后一条指令;
第二更新单元,用于在所述第三判断单元判断出获取到的所述LDR指令不为所述最后一条指令时,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置;
所述第三获取单元,还用于在所述第二更新单元将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取指令;
第四判断单元,用于若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;
第三更新单元,用于在所述第四判断单元判断出获取到的所述指令不为所述最后一条指令时,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置;
所述第三获取单元,还用于在所述第三更新单元将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取指令。
优选地,所述确定模块包括:
计算单元,用于计算每一个所述差值结果的出现次数;
降序排列单元,用于按照所述差值结果的出现次数,降序排列所述差值结果;
确定单元,用于将处于第一排列位置的差值结果作为所述固件的装载基址。
一种电子设备,包括收发器、存储器和处理器;
所述收发器,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;以及依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
所述存储器,用于存储所述第一函数偏移量和所述第二函数偏移量;
所述处理器,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果,并从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果。
经由上述的技术方案可知,与现有技术相比,本发明提供了一种固件装载基址的定位方法、装置及电子设备,通过获取固件的全部第一函数和与之对应的第一函数偏移量,同时依据该固件的LDR指令,获取LDR指令所加载的地址,作为第二函数偏移量,可以获知该固件映射到嵌入式设备内存前后,固件内函数所处的不同位置,即第一函数偏移量和第二函数偏移量,进而在将每一个第一函数偏移量分别与每一个第二函数偏移量做差,计算出多个差值结果时,能够利用每一函数映射到嵌入式设备内存前后的两个函数偏移量之差均相同的原理,选取出现次数最多的一个差值结果作为该固件的装载基址;可见,基于第一函数偏移量与第二函数偏移量相互做差获得的多个差值结果,自动选择出现次数最多的一个差值结果作为固件的装载基址,提高了装载基址定位的自动性,在节省人工操作和干预时间的基础上,提升了装载基址的定位效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种固件装载基址的定位方法的方法流程图;
图2为本发明实施例提供的一种第一函数和第一函数偏移量的场景示意图;
图3为本发明实施例提供的一种第二函数和函数地址的场景示意图;
图4为本发明实施例提供的一种第一函数和第一函数偏移量的获取方法的方法流程图;
图5为本发明实施例提供的一种第一函数和第一函数的序言偏移量的场景示意图;
图6为本发明实施例提供的一种第二函数偏移量的获取方法的方法流程图;
图7为本发明实施例提供的一种固件装载基址的确定方法的方法流程图;
图8为本发明实施例提供的一种固件装载基址的定位装置的结构示意图;
图9为本发明实施例提供的一种第一函数和第一函数偏移量的获取装置的结构示意图;
图10为本发明实施例提供的一种第二函数偏移量的获取装置的结构示意图;
图11为本发明实施例提供的一种固件装载基址的确定装置的结构示意图;
图12为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种固件装载基址的定位方法,请参见附图1,所述方法具体包括以下步骤:
S101:获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;
具体的,一个固件会包括多个二进制函数,每一个二进制函数具有与之对应的函数偏移量,即该二进制函数的开始位置距离固件起始位置的距离值。换句话说,固件包括多个第一函数,一个第一函数对应一个第一函数偏移量,其中,第一函数偏移量主要用于表示与之对应的第一函数的开始位置与固件起始位置之间存在的距离差值。
举例说明,如图2所示,固件“X”包括“第一函数a”、“第一函数b”和“第一函数c”这三个二进制函数,固件“X”的起始位置为“0”,其中,“第一函数a”具有与之对应的“第一函数偏移量3”、“第一函数b”具有与之对应的“第一函数偏移量5”、“第一函数c”具有与之对应的“第一函数偏移量9”。
需要说明的是,一旦固件制作完成,则固件中的第一函数及其对应的第一函数偏移量固定不变。
本发明实施例所涉及的固件为ARM(Advanced RISC Machines)固件。
S102:依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
具体的,固件通常运行在于嵌入式设备中,以协助嵌入式设备完成相应功能。在将固件映射到嵌入式设备内存的过程中,固件所包括的全部第一函数也随固件一起被映射到该嵌入式设备内存中,此时,将固件的第一函数映射到嵌入式设备内存后所产生的函数看作第二函数,从而获得与第一函数一一对应的第二函数。
由于固件往往会将嵌入式设备内存中的某一位置作为映射起点,进行映射操作,从而导致固件内多个第一函数所对应的第一函数偏移量随之发生数值变化,即第一函数的第一函数偏移量与第二函数的函数地址不一致。因此,需要利用固件中的LDR指令,来获取该LDR指令所加载的地址,作为第二函数的函数地址。
仍以包括“第一函数a”、“第一函数b”和“第一函数c”的固件“X”为例,对固件映射到嵌入式设备内存后导致多个第一函数所对应的第一函数偏移量发生数值变化进行具体阐述。如图3所示,固件“X”将嵌入式设备内存中距离其起始位置1000的“M点”作为映射起点,进行映射,从而导致与固件内每一个第一函数对应的第二函数的函数地址变为“函数地址1003”、“函数地址1005”和“函数地址1009”。其中,图3中嵌入式设备内存内虚线所包围的区域为固件“X”映射到嵌入式设备内存后所在的位置区域。
需要说明的是,固件内的一条LDR指令只能够从嵌入式设备内存中加载一条地址,而加载的地址可能是第二函数的函数地址,即固件中第一函数映射后在嵌入式设备内存所处的具体位置;也可能是非函数地址,如常量、结构体地址等。
S103:将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;
举例说明,固件包括的第一函数偏移量分别为“3”、“5”和“9”,嵌入式设备内存包括的第二函数偏移量分别为“1003”、“1005”和“1009”,将第一函数偏移量“3”分别与每一个第二函数偏移量相减,获得三个差值结果“1000、998、994”,再将第一函数偏移量“5”分别与每一个第二函数偏移量相减,获得三个差值结果“1002”、“1000”、“996”,最后将第一函数偏移量“9”分别与每一个第二函数偏移量相减,获得三个差值结果“1006”、“1004”、“1000”,最终获得了“1000、998、994、1002、1000、996、1006、1004、1000”九个差值结果。
需要说明的是,可以将相减所得的差值结果按照相减获得的先后顺序,依次存入一个矩阵中,从而利用矩阵的行与列,将差值结果清晰、有序地表示出来。仍以上述“1003、1005、1009、1000、998、994、1006、1004、1000”九个差值结果为例,可以按照这些差值结果经过相减获得的先后顺序生成下面的矩阵:
S104:从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果;
具体的,仍以上述图3为例,由于固件是映射到嵌入式设备内存的,因此第一函数与其对应的第二函数的函数偏移量进行做差运算,所得的差值结果均相同;而上述例子中所得的9个差值结果中,“1000”出现的次数最多,则证明固件“X”内三个第一函数各自对应的“第一函数偏移量3”、“第一函数偏移量5”和“第一函数偏移量9”,在固件“X”映射完成后分别更改为“函数地址1003”、“函数地址1005”和“函数地址1009”,此时,可将差值结果“1000”作为固件“X”映射到嵌入式设备内存的装载基址。
需要说明的是,上述S101与S102执行的先后顺序本发明并不限定,可以是先执行S101,再执行S102;还可以先执行S102,再执行S101;还可以同时执行S101与S102。
本发明实施例所公开的一种固件装载基址的定位方法,通过获取固件的全部第一函数和与之对应的第一函数偏移量,同时依据该固件的LDR指令,获取LDR指令所加载的地址,作为第二函数偏移量,可以获知该固件映射到嵌入式设备内存前后,固件内函数所处的不同位置,即第一函数偏移量和第二函数偏移量,进而在将每一个第一函数偏移量分别与每一个第二函数偏移量做差,计算出多个差值结果时,能够利用每一函数映射到嵌入式设备内存前后的两个函数偏移量之差均相同的原理,选取出现次数最多的一个差值结果作为该固件的装载基址;可见,基于第一函数偏移量与第二函数偏移量相互做差获得的多个差值结果,自动选择出现次数最多的一个差值结果作为固件的装载基址,提高了装载基址定位的自动性,在节省人工操作和干预时间的基础上,提升了装载基址的定位效率。
针对上述附图1所对应实施例中S101的获取固件的第一函数和第一函数偏移量,本发明实施例公开了一种第一函数和第一函数偏移量的获取方法,请参见附图4,所述方法具体包括以下步骤:
S201:从所述固件的起始位置开始获取第一函数;
举例说明,如图5所示,从固件“Y”的起始位置“0”开始进行第一函数的查询获取,避免遗漏固件包括的第一函数。
S202:当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
具体的,固件包括的每一个第一函数在生成时,会在每一个第一函数的开始位置添加一些代码,用于为其创建并初始化栈帧、保存寄存器等,而这些被添加到开始位置的代码称为该第一函数的序言。因此,可以通过获取第一函数的序言所处位置与固件的起始位置之间的距离差值,即第一函数的序言偏移量,进而获知第一函数的开始位置距离固件的起始位置的距离。
仍以图5所示内容为例对获取第一函数的序言偏移量进行说明,固件“Y”包括“第一函数a”、“第一函数b”和“第一函数c”这三个二进制函数,当从固件“Y”的起始位置“0”开始查询,并在获取到第一个“第一函数a”时,可以获取其所对应的序言偏移量“第一函数a的序言偏移量4”,并将其作为第一函数偏移量。
S203:判断获取到的所述第一函数是否为最后一个第一函数,若否,则执行S204,若是,则执行S205。
S204:将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置,并返回执行S201;
仍以图5所示内容为例进行说明,当判断出当前从固件“Y”获取到“第一函数a”不为该固件“Y”内的最后一个第一函数时,将位于该“第一函数a”之后的下一个第一函数所在位置作为固件“Y”的起始位置“0”,继续进行查询获取。也就是说,从位于“第一函数a”之后的“第一函数b”所在位置开始进行获取,以便获取到该“第一函数b”及其对应的序言偏移量“第一函数b的序言偏移量6”。
S205:结束。
本发明实施例中,通过从固件的起始位置开始依次进行第一函数的获取操作,并在每一次获取到一个第一函数及其序言偏移量时,及时判断获取到的第一函数是否为该固件内的最后一个第一函数,若不为最后一个第一函数,则将位于当前获取到的第一函数的下一个第一函数所在位置更新为固件的起始位置,继续进行查询获取操作,进而能够依次获取到固件所包括的全部第一函数及其序言偏移量,避免出现遗漏问题。
针对上述附图1所对应实施例中S102的依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,本发明实施例公开了一种第二函数偏移量的获取方法,请参见附图6,所述方法具体包括以下步骤:
S301:从所述固件的起始位置开始获取指令。
S302:判断获取到的所述指令是否为所述LDR指令,若是,则执行S303,若否,则执行S304;
具体的,由于固件既包括LDR指令,又包括一些其他类型的指令。因此,需要对每一次获取到的指令进行指令类型判断,以识别出是否为LDR指令,进而才能执行后续获取加载LDR指令所加载到的地址的相关操作。
S303:获取所述LDR指令加载的地址,作为所述第二函数偏移量,并执行S305。
S304:判断获取到的所述指令是否为所述最后一条指令,若是,则执行S306,若否,则执行S307;
S305:判断获取到的所述LDR指令是否为最后一条指令,若否,则执行S308,若是,则执行S306。
S306:结束;
具体的,当判断出当前获取到的指令是固件内的最后一条指令时,则证明已获取到LDR指令所全部加载的地址,此时结束获取操作。
S307:将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行S301;
具体的,当判断出当前获取到的指令既不是LDR指令,又不是固件内的最后一条指令时,则跳转到与之相邻的下一条指令继续进行获取操作。
S308:将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行S301;
具体的,当判断出当前获取到的指令是LDR指令,但不是固件内的最后一条指令时,跳转到与之相邻的下一条指令继续进行获取操作。
本发明实施例中,通过从固件的起始位置开始依次进行指令的获取操作,并在每一次获取到一个指令,且判断出该指令为LDR指令时,获取该LDR指令所加载到的地址作为第二函数偏移量,之后,在判断出该LDR指令不为固件内的最后一个指令时,将位于获取到的该LDR指令之后的下一条指令所在位置作为固件的起始位置,继续进行指令获取操作,进而能够依次对固件所包括的全部指令进行获取并判断操作,有效避免出现LDR指令遗漏问题,以及第二函数偏移量的获取遗漏问题。
针对上述附图1所对应实施例中S104的从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果,本发明实施例公开了一种固件装载基址的确定方法,请参见附图7,所述方法具体包括以下步骤:
S401:计算每一个所述差值结果的出现次数;
举例说明,获得的全部差值结果包括:“500、502、506、498、500、504、494、496、500”,对这些差值结果进行次数统计,可以获得差值结果“500”出现次数为3次,“502”出现次数为1次,“506”出现次数为1次,“498”出现次数为1次,“504”出现次数为1次,“494”出现次数为1次,“496”出现次数为3次。
S402:按照所述差值结果的出现次数,降序排列所述差值结果;
仍以上述全部差值结果包括:“500、502、506、498、500、504、494、496、500”为例进行说明,按照统计获得的出现次数高低进行降序排列,可以获得表1:
表1差值结果出现次数排序表
S403:将处于第一排列位置的差值结果作为所述固件的装载基址;
具体的,通过降序排列后获得的表1可知,出现次数最多的差值结果为“500”,因此将差值结果“500”作为固件的装载基址。
本发明实施例中,通过计算每一个差值结果的出现次数,并依据出现次数的大小进行降序排列,可以快速获知出现次数最多的差值结果作为固件的装载基址,进而有效提高了从多个差值结果筛选出固件装载基址的速率。
本发明实施例公开了一种固件装载基址的定位装置,请参见附图8,包括:
第一获取模块501,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;
第二获取模块502,用于依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
做差模块503,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;
确定模块504,用于从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果。
本发明实施例所公开的一种固件装载基址的定位装置,通过第一获取模块501获取固件的全部第一函数和与之对应的第一函数偏移量,同时第二获取模块502依据该固件的LDR指令,获取LDR指令所加载的地址,作为第二函数偏移量,可以获知该固件映射到嵌入式设备内存前后,固件内函数所处的不同位置,即第一函数偏移量和第二函数偏移量,进而在做差模块503将每一个第一函数偏移量分别与每一个第二函数偏移量做差,计算出多个差值结果时,能够利用每一函数映射到嵌入式设备内存前后的两个函数偏移量之差均相同的原理,由确定模块504选取出现次数最多的一个差值结果作为该固件的装载基址;可见,基于第一函数偏移量与第二函数偏移量相互做差获得的多个差值结果,自动选择出现次数最多的一个差值结果作为固件的装载基址,提高了装载基址定位的自动性,在节省人工操作和干预时间的基础上,提升了装载基址的定位效率。
本发明实施例提供的各个模块的工作过程,请参照附图1所对应的方法流程图,具体工作过程不再赘述。
请参见附图9,上述附图8所对应实施例中的第一获取模块501具体包括:
第一获取单元5011,用于从所述固件的起始位置开始获取第一函数;
第二获取单元5012,用于当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
第一判断单元5013,用于判断获取到的所述第一函数是否为最后一个第一函数;
第一更新单元5014,用于若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置;
所述第一获取单元5011,还用于在所述第一更新单元5014将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取第一函数。
本发明实施例中,通过第一获取单元5011从固件的起始位置开始依次进行第一函数的获取操作,并在每一次获取到一个第一函数及其序言偏移量时,第一判断单元5013及时判断获取到的第一函数是否为该固件内的最后一个第一函数,若不为最后一个第一函数,则由第一更新单元5014将位于当前获取到的第一函数的下一个第一函数所在位置更新为固件的起始位置,以便第一获取单元5011再次进行查询获取操作,进而能够依次获取到固件所包括的全部第一函数及其序言偏移量,避免出现遗漏问题。
本发明实施例提供的各个模块的工作过程,请参照附图4所对应的方法流程图,具体工作过程不再赘述。
请参见附图10,上述附图8所对应实施例中的第二获取模块502具体包括:
第三获取单元5021,用于从所述固件的起始位置开始获取指令;
第二判断单元5222,用于判断获取到的所述指令是否为所述LDR指令;
第四获取单元5023,用于若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;
第三判断单元5024,用于在所述第四获取单元5023获取所述LDR指令加载的地址,作为所述第二函数偏移量之后,判断获取到的所述LDR指令是否为最后一条指令;
第二更新单元5025,用于在所述第三判断单元5024判断出获取到的所述LDR指令不为所述最后一条指令时,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置;
所述第三获取单元5021,还用于在所述第二更新单元5025将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取指令;
第四判断单元5026,用于若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;
第三更新单元5027,用于在所述第四判断单元5026判断出获取到的所述指令不为所述最后一条指令时,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置;
所述第三获取单元5021,还用于在所述第三更新单元5027将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取指令。
本发明实施例中,通过第三获取单元5021从固件的起始位置开始依次进行指令的获取操作,并在每一次获取到一个指令,且第二判断单元5222判断出该指令为LDR指令时,第四获取单元5023获取该LDR指令所加载到的地址作为第二函数偏移量,之后,在第三判断单元5024判断出该LDR指令不为固件内的最后一个指令时,第二更新单元5025将位于获取到的该LDR指令之后的下一条指令所在位置作为固件的起始位置,以便第三获取单元5021继续进行指令获取操作,进而能够依次对固件所包括的全部指令进行获取并判断操作,有效避免出现LDR指令遗漏问题,以及第二函数偏移量的获取遗漏问题。
本发明实施例提供的各个模块的工作过程,请参照附图6所对应的方法流程图,具体工作过程不再赘述。
请参见附图11,上述附图8所对应实施例中的确定模块504具体包括:
计算单元5041,用于计算每一个所述差值结果的出现次数;
降序排列单元5042,用于按照所述差值结果的出现次数,降序排列所述差值结果;
确定单元5043,用于将处于第一排列位置的差值结果作为所述固件的装载基址。
本发明实施例中,通过计算单元5041计算每一个差值结果的出现次数,并由降序排列单元5042依据出现次数的大小进行降序排列,确定单元5043可以快速获知出现次数最多的差值结果作为固件的装载基址,进而有效提高了从多个差值结果筛选出固件装载基址的速率。
本发明实施例提供的各个模块的工作过程,请参照附图7所对应的方法流程图,具体工作过程不再赘述。
本发明实施例公开了一种电子设备,请参见附图12,包括收发器601、存储器602和处理器603;
所述收发器601,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;以及依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
所述存储器602,用于存储所述第一函数偏移量和所述第二函数偏移量;
所述处理器603,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果,并从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果。
需要说明的是,本发明实施例所提供的电子设备主要用于定位ARM固件的装载基址以便逆向工程工具利用该装载基址,方便对固件进行逆向分析。
本发明实施例所公开的一种电子设备,通过收发器601从固件中获取其内全部的第一函数和对应第一函数的第一函数偏移量,同时,依据固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,之后,由存储器602存储获取到的第一函数偏移量和第二函数偏移量,以便处理器603将存储的每一个第一函数偏移量分别与每一个第二函数偏移量相减,获得多个差值结果,进而将出现次数最多的差值结果作为目标差值确定出来,即为固件的装载基址;可见,基于存储的第一函数偏移量与第二函数偏移量相互做差获得的多个差值结果,自动选择出现次数最多的一个差值结果作为固件的装载基址,可以提高装载基址定位的自动性,进而在节省人工操作和干预时间的基础上,提升了装载基址的定位效率。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (5)
1.一种固件装载基址的定位方法,其特征在于,包括:
获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;
依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;
从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果;
所述获取固件的第一函数和第一函数偏移量,包括:
从所述固件的起始位置开始获取第一函数;
当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
判断获取到的所述第一函数是否为最后一个第一函数;
若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取第一函数,直到获取到所述最后一个第一函数;
所述依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,包括:
从所述固件的起始位置开始获取指令;
判断获取到的所述指令是否为所述LDR指令;
若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;
判断获取到的所述LDR指令是否为最后一条指令;
若获取到的所述LDR指令不为所述最后一条指令,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述LDR指令为所述最后一条指令;
若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;
若获取到的所述指令不为所述最后一条指令,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述指令为所述最后一条指令。
2.根据权利要求1所述的定位方法,其特征在于,所述从全部所述差值结果中确定出目标差值,作为固件的装载基址,包括:
计算每一个所述差值结果的出现次数;
按照所述差值结果的出现次数,降序排列所述差值结果;
将处于第一排列位置的差值结果作为所述固件的装载基址。
3.一种固件装载基址的定位装置,其特征在于,包括:
第一获取模块,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;
第二获取模块,用于依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
做差模块,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;
确定模块,用于从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果;
所述第一获取模块包括:
第一获取单元,用于从所述固件的起始位置开始获取第一函数;
第二获取单元,用于当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
第一判断单元,用于判断获取到的所述第一函数是否为最后一个第一函数;
第一更新单元,用于若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置;
所述第一获取单元,还用于在所述第一更新单元将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取第一函数;
所述第二获取模块包括:
第三获取单元,用于从所述固件的起始位置开始获取指令;
第二判断单元,用于判断获取到的所述指令是否为所述LDR指令;
第四获取单元,用于若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;
第三判断单元,用于在所述第四获取单元获取所述LDR指令加载的地址,作为所述第二函数偏移量之后,判断获取到的所述LDR指令是否为最后一条指令;
第二更新单元,用于在所述第三判断单元判断出获取到的所述LDR指令不为所述最后一条指令时,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置;
所述第三获取单元,还用于在所述第二更新单元将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取指令;
第四判断单元,用于若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;
第三更新单元,用于在所述第四判断单元判断出获取到的所述指令不为所述最后一条指令时,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置;
所述第三获取单元,还用于在所述第三更新单元将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置之后,从所述固件的起始位置开始获取指令。
4.根据权利要求3所述的定位装置,其特征在于,所述确定模块包括:
计算单元,用于计算每一个所述差值结果的出现次数;
降序排列单元,用于按照所述差值结果的出现次数,降序排列所述差值结果;
确定单元,用于将处于第一排列位置的差值结果作为所述固件的装载基址。
5.一种电子设备,其特征在于,包括收发器、存储器和处理器;
所述收发器,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;以及依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;
所述存储器,用于存储所述第一函数偏移量和所述第二函数偏移量;
所述处理器,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果,并从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果;
所述获取固件的第一函数和第一函数偏移量,包括:
从所述固件的起始位置开始获取第一函数;
当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;
判断获取到的所述第一函数是否为最后一个第一函数;
若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取第一函数,直到获取到所述最后一个第一函数;
所述依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,包括:
从所述固件的起始位置开始获取指令;
判断获取到的所述指令是否为所述LDR指令;
若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;
判断获取到的所述LDR指令是否为最后一条指令;
若获取到的所述LDR指令不为所述最后一条指令,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述LDR指令为所述最后一条指令;
若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;
若获取到的所述指令不为所述最后一条指令,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述指令为所述最后一条指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711089856.0A CN107861729B (zh) | 2017-11-08 | 2017-11-08 | 一种固件装载基址的定位方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711089856.0A CN107861729B (zh) | 2017-11-08 | 2017-11-08 | 一种固件装载基址的定位方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107861729A CN107861729A (zh) | 2018-03-30 |
CN107861729B true CN107861729B (zh) | 2021-08-24 |
Family
ID=61701368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711089856.0A Active CN107861729B (zh) | 2017-11-08 | 2017-11-08 | 一种固件装载基址的定位方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107861729B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933345B (zh) * | 2019-03-28 | 2022-05-31 | 杭州和利时自动化有限公司 | 一种控制器的无扰下装方法及相关装置 |
CN112965724B (zh) * | 2021-03-22 | 2024-06-07 | 中国信息安全测评中心 | 一种固件的装载基址范围的确定方法及系统 |
CN116880858A (zh) * | 2023-09-06 | 2023-10-13 | 北京华云安信息技术有限公司 | 固件实际基地址的获取方法、装置、设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
CN101776990A (zh) * | 2009-01-13 | 2010-07-14 | 联发科技股份有限公司 | 固件扩展方法以及固件生成器 |
CN101976319A (zh) * | 2010-11-22 | 2011-02-16 | 张平 | 基于行为特征的BIOS固件Rootkit检测方法 |
CN102646074A (zh) * | 2012-02-22 | 2012-08-22 | 中国人民解放军国防科学技术大学 | 龙芯3a平台大内存设备的地址映射方法 |
CN107066303A (zh) * | 2017-05-04 | 2017-08-18 | 深圳市欧瑞博电子有限公司 | 固件比对方法和装置 |
CN107194242A (zh) * | 2017-03-30 | 2017-09-22 | 百富计算机技术(深圳)有限公司 | 固件升级方法和装置 |
CN107273177A (zh) * | 2017-06-28 | 2017-10-20 | 中国信息安全测评中心 | 一种基于跳转表定位arm固件装载基址的方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222258B2 (en) * | 2002-12-18 | 2007-05-22 | Intel Corporation | Compressing a firmware image |
US8081838B2 (en) * | 2007-03-16 | 2011-12-20 | Massachusetts Institute Of Technology | System and method for providing two-scale tone management of an image |
CN103645672B (zh) * | 2013-12-16 | 2015-12-30 | 华南理工大学 | 一种plc固件完整性验证装置及验证方法 |
KR102083875B1 (ko) * | 2014-08-11 | 2020-03-03 | 한국전자통신연구원 | 홀로그래픽 영상에 대한 품질 측정 장치 및 방법 |
KR102414250B1 (ko) * | 2015-07-30 | 2022-06-29 | 삼성전자주식회사 | 전자 장치, 컴파일링 방법 및 컴퓨터 판독가능 기록매체 |
CN105740477B (zh) * | 2016-03-18 | 2019-03-29 | 中国科学院信息工程研究所 | 针对大规模嵌入式设备固件的函数搜索方法和搜索引擎 |
CN105893107B (zh) * | 2016-04-29 | 2019-03-19 | 山东省计算中心(国家超级计算济南中心) | 一种从64位Windows操作系统的内存镜像文件中获取已登录用户密码明文的方法 |
-
2017
- 2017-11-08 CN CN201711089856.0A patent/CN107861729B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211309A (zh) * | 2006-12-29 | 2008-07-02 | 中兴通讯股份有限公司 | 嵌入式系统中进程异常跟踪定位的方法 |
CN101776990A (zh) * | 2009-01-13 | 2010-07-14 | 联发科技股份有限公司 | 固件扩展方法以及固件生成器 |
CN101976319A (zh) * | 2010-11-22 | 2011-02-16 | 张平 | 基于行为特征的BIOS固件Rootkit检测方法 |
CN102646074A (zh) * | 2012-02-22 | 2012-08-22 | 中国人民解放军国防科学技术大学 | 龙芯3a平台大内存设备的地址映射方法 |
CN107194242A (zh) * | 2017-03-30 | 2017-09-22 | 百富计算机技术(深圳)有限公司 | 固件升级方法和装置 |
CN107066303A (zh) * | 2017-05-04 | 2017-08-18 | 深圳市欧瑞博电子有限公司 | 固件比对方法和装置 |
CN107273177A (zh) * | 2017-06-28 | 2017-10-20 | 中国信息安全测评中心 | 一种基于跳转表定位arm固件装载基址的方法和装置 |
Non-Patent Citations (3)
Title |
---|
Determining Image Base of Firmware Files for ARM Devices;Ruijin Zhu等;《IEICE Transactions on Information & Systems》;20161231;第99卷(第2期);第351-359页 * |
一种基于匹配字符串地址判定ARM 固件装载基址的方法;朱瑞瑾等;《电子学报》;20170615;第1475-1482页 * |
朱瑞瑾等.一种基于匹配字符串地址判定ARM 固件装载基址的方法.《电子学报》.2017,第1475-1482页. * |
Also Published As
Publication number | Publication date |
---|---|
CN107861729A (zh) | 2018-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107861729B (zh) | 一种固件装载基址的定位方法、装置及电子设备 | |
CN109146932B (zh) | 确定图像中目标点的世界坐标的方法、装置和系统 | |
US9460016B2 (en) | Cache way prediction | |
US11740932B2 (en) | Systems and methods for task switching in neural network processor | |
CN105159777A (zh) | 进程的内存回收方法及装置 | |
CN103019787B (zh) | 函数调用关系确定方法、热补丁升级方法及装置 | |
US7991984B2 (en) | System and method for executing loops in a processor | |
CN104871144A (zh) | 使用虚拟地址到物理地址跨页缓冲器的推测性寻址 | |
CN107392316B (zh) | 网络训练方法、装置、计算设备及计算机存储介质 | |
CN110399166A (zh) | ME Nonce值的保存方法、装置、设备及存储介质 | |
WO2018042349A1 (en) | Computer implemented method, welding system and apparatus for multiple application banks | |
CN111538453A (zh) | 书籍详情页面的显示方法、终端及计算机存储介质 | |
CN113485712B (zh) | 一种内核裁剪方法及计算设备 | |
CN114372928A (zh) | 一种数据处理方法、装置及电子设备 | |
CN104731557A (zh) | 指令执行的控制方法及装置 | |
CN109857469B (zh) | 显示屏控制方法及相关产品 | |
CN105912373A (zh) | 应用程序安装方法及装置 | |
CN111796869A (zh) | 程序指令块处理方法及装置 | |
CN107133081B (zh) | 指令分派方法和解释器 | |
CN113190455B (zh) | 一种元素定位方法及计算设备 | |
CN105278980B (zh) | 一种系统更新方法、装置及服务器 | |
CN109492147B (zh) | 数据记录总数量获取方法及装置 | |
CN105446822A (zh) | 基于Linux的软件异常处理系统及方法 | |
CN112560956A (zh) | 目标检测方法及装置、非易失性存储介质、电子设备 | |
CN107341076B (zh) | 通信处理器的故障辅助定位方法、装置及终端 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |