The invention provides a positioning method, a firmware loader base device and electronic equipment, the first function offset all the first to get the firmware and the corresponding function, at the same time on the basis of the firmware of the LDR command in LDR, obtaining instruction address is loaded as a function of second offset, can know the mapping to the embedded firmware the device memory and firmware function position, which is the first function of the offset and second function offset, and in each of the first offset function respectively with each function second offset do bad, calculate the difference results, using the principle of each function is mapped into memory before and after embedded devices the two function of the offset difference are the same, select the highest number of difference as a result of the base loading firmware, in order to improve the automatic loading base location, Based on saving the manual operation and the intervention time, improve the positioning efficiency of loading base.
【技术实现步骤摘要】
一种固件装载基址的定位方法、装置及电子设备
本专利技术涉及反汇编
,更具体的说,是涉及一种固件装载基址的定位方法、装置及电子设备。
技术介绍
固件逆向工程是针对固件中存储的代码和数据进行逆向分析和研究,从而演绎并得出该固件的处理流程、架构、算法等设计要素。随着固件逆向工程技术的不断发展,ARM(AdvancedRISCMachines)固件逆向工程逐渐成为固件逆向工程的重要分支。目前,ARM处理器通常应用于嵌入式设备,如手机、固态盘、智能手表、智能相机等。ARM固件为运行在ARM处理器上的固件。当需要对ARM固件进行逆向工程时,通常需要先获知该ARM固件映射到嵌入式设备内存中的起始位置,即该ARM固件的装载基址,进而才能借助反汇编工具(如IDAPro),对ARM固件进行逆向分析。目前对ARM固件的装载基址的定位方法主要是开发人员人工浏览固件的反汇编代码,进而凭借经验定位出ARM固件的装载基址,然而人工定位装载基址会增加装载基址定位过程中的人力资源消耗和时间成本,降低了装载基址的定位效率。
技术实现思路
有鉴于此,本专利技术提供了一种固件装载基址的定位方法、装置及 ...
【技术保护点】
一种固件装载基址的定位方法,其特征在于,包括:获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;从全部所述 ...
【技术特征摘要】
1.一种固件装载基址的定位方法,其特征在于,包括:获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;从全部所述差值结果中确定出目标差值,作为固件的装载基址,所述目标差值为出现次数最多的差值结果。2.根据权利要求1所述的定位方法,其特征在于,所述获取固件的第一函数和第一函数偏移量,包括:从所述固件的起始位置开始获取第一函数;当获取到所述第一函数时,获取所述第一函数的序言偏移量,作为所述第一函数对应的第一函数偏移量,所述序言偏移量为所述固件的起始位置与所述第一函数的序言所在位置之间的距离,所述序言为在所述第一函数的开始位置的代码;判断获取到的所述第一函数是否为最后一个第一函数;若获取到的所述第一函数不为所述最后一个第一函数,将位于获取到的所述第一函数之后的下一个第一函数所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取第一函数,直到获取到所述最后一个第一函数。3.根据权利要求1所述的定位方法,其特征在于,所述依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,包括:从所述固件的起始位置开始获取指令;判断获取到的所述指令是否为所述LDR指令;若获取到的所述指令为所述LDR指令,获取所述LDR指令加载的地址,作为所述第二函数偏移量;判断获取到的所述LDR指令是否为最后一条指令;若获取到的所述LDR指令不为所述最后一条指令,将位于获取到的所述LDR指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述LDR指令为所述最后一条指令;若获取到的所述指令不为所述LDR指令,判断获取到的所述指令是否为所述最后一条指令;若获取到的所述指令不为所述最后一条指令,将位于获取到的所述指令之后的下一条指令所在位置作为所述固件的起始位置,并返回执行所述从所述固件的起始位置开始获取指令,直到所述指令为所述最后一条指令。4.根据权利要求1所述的定位方法,其特征在于,所述从全部所述差值结果中确定出目标差值,作为固件的装载基址,包括:计算每一个所述差值结果的出现次数;按照所述差值结果的出现次数,降序排列所述差值结果;将处于第一排列位置的差值结果作为所述固件的装载基址。5.一种固件装载基址的定位装置,其特征在于,包括:第一获取模块,用于获取固件的第一函数和第一函数偏移量,所述第一函数的个数为多个,所述第一函数与所述第一函数偏移量一一对应,所述第一函数偏移量为所述固件的起始位置与所述第一函数的开始位置之间的距离;第二获取模块,用于依据所述固件的LDR指令,获取所述LDR指令加载的地址,作为第二函数偏移量,所述第二函数偏移量与第二函数一一对应,所述第二函数为将所述固件的第一函数映射到嵌入式设备内存后产生的函数,所述第二函数偏移量为所述嵌入式设备内存的起始位置与所述第二函数的开始位置之间的距离;做差模块,用于将每一个所述第一函数偏移量分别与每一个所述第二函数偏移量相减,获得多个差值结果;确定模块,用于从全部...
【专利技术属性】
技术研发人员:朱瑞瑾,张宝峰,毛军捷,谭毓安,骆扬,
申请(专利权)人:中国信息安全测评中心,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。