CN109240902A - 一种获取电子设备的固件代码的方法和装置 - Google Patents
一种获取电子设备的固件代码的方法和装置 Download PDFInfo
- Publication number
- CN109240902A CN109240902A CN201710392482.3A CN201710392482A CN109240902A CN 109240902 A CN109240902 A CN 109240902A CN 201710392482 A CN201710392482 A CN 201710392482A CN 109240902 A CN109240902 A CN 109240902A
- Authority
- CN
- China
- Prior art keywords
- electronic equipment
- data
- storage location
- code
- file
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- 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/41—Compilation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种获取电子设备的固件代码的方法和装置,属于电子技术领域。所述方法包括:调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中第一存储位置中的数据,其中,所述数据包括所述电子设备的固件代码对应的编译数据;将读取的数据存储成预设格式的第一文件;当获取到对所述第一文件的裁剪指令时,对所述第一文件进行裁剪,得到包括所述固件代码对应的编译数据的第二文件;对所述第二文件中的编译数据进行反编译处理,得到所述电子设备的固件代码。采用本发明,可以对固件代码进行检测。
Description
技术领域
本发明涉及电子技术领域,特别涉及一种获取电子设备的固件代码的方法和装置。
背景技术
随着电子技术的发展,各种各样的电子设备得到了广泛的应用,比如,智能手表、智能手环等电子设备。电子设备中往往包含有固件,其中,固件可以是电子设备的程序代码(程序代码也可称为固件代码)经过编译后的编译数据,固件代码的逻辑正确与否决定该电子设备是否能够正常工作。
为了更好保证电子设备的固件代码的逻辑正确,往往电子设备的生产商会委托第三方检测电子设备的固件代码的逻辑是否正确。目前,第三方往往会从电子设备的官方网站下载电子设备的固件代码,进而,对固件代码的逻辑进行检测。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
有些电子设备的固件代码不是开源代码,开发商往往不会将固件代码放在官方网站,这种情况下,基于上述处理方式,第三方就无法得到电子设备的固件代码,从而,无法对固件代码进行检测。
发明内容
为了解决相关技术中无法对固件代码进行检测的问题,本发明实施例提供了一种获取电子设备的固件代码的方法。所述技术方案如下:
第一方面,提供了一种获取电子设备的固件代码的方法,所述方法包括:
调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中第一存储位置中的数据,其中,所述数据包括所述电子设备的固件代码对应的编译数据;
将读取到的数据存储成预设格式的第一文件;
当获取到对所述第一文件的裁剪指令时,对所述第一文件进行裁剪,得到包括所述固件代码对应的编译数据的第二文件;
对所述第二文件中的编译数据进行反编译处理,得到所述电子设备的固件代码。
第二方面,提供了一种获取电子设备的固件代码的装置,所述装置包括:
读取模块,用于调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中第一存储位置中的数据,其中,所述数据包括所述电子设备的固件代码对应的编译数据;
存储模块,用于将读取到的数据存储成预设格式的第一文件;
裁剪模块,用于当获取到对所述第一文件的裁剪指令时,对所述第一文件进行裁剪,得到包括所述固件代码对应的编译数据的第二文件;
反编译模块,用于对所述第二文件中的编译数据进行反编译处理,得到所述电子设备的固件代码。
第三方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的获取电子设备的固件代码的方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的获取电子设备的固件代码的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,终端可以调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中存储的固件代码对应的编译数据,然后,再对得到的编译数据进行反编译处理,得到电子设备的固件代码,从而,可以使得能够对固件代码进行检测。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种HOOK技术示意图;
图2是本发明实施例提供的一种HOOK技术具体实现示意图;
图3是本发明实施例提供的一种获取电子设备的固件代码的方法流程图;
图4是本发明实施例提供的一种电子设备的硬件结构示意图;
图5是本发明实施例提供的一种电子设备的存储地址的示意图;
图6是本发明实施例提供的一种***框架示意图;
图7是本发明实施例提供的一种界面示意图;
图8是本发明实施例提供的一种界面示意图;
图9是本发明实施例提供的一种获取电子设备的固件代码的方法流程图;
图10是本发明实施例提供的一种获取电子设备的固件代码的方法流程图;
图11是本发明实施例提供的一种获取电子设备的固件代码的装置结构示意图;
图12是本发明实施例提供的一种终端结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种获取电子设备的固件代码的方法,该方法的执行主体为终端。其中,该终端可以是具有获取电子设备的固件代码功能的终端,比如可以是个人电脑、计算机等。该终端中可以设置有处理器、收发器,处理器可以用于得到电子设备的固件代码的相关处理,收发器可以用于接收和发送数据,还可以设置有存储器,存储器可以用于存储下述处理过程中需要和产生的数据。
在很多场景下技术人员需要对电子设备的固件代码的逻辑进行分析,比如,电子设备的生产商为了保证电子设备的固件代码的逻辑正确,会委托第三方检测电子设备的固件代码的逻辑是否正确,此种场景下,受委托的第三方的技术人员即需要对该电子设备的固件代码的逻辑进行分析,而此种情况下,技术人员首先需要获取固件代码。目前,获取固件代码的方式可以有两种,其中,方式一:可以从电子设备的官方网站下载电子设备的固件代码,但是有些电子设备的固件代码不是开源代码,开发商往往不会将固件代码放在官方网站,这种情况下,基于此种处理方式,就无法得到电子设备的固件代码,从而,技术人员无法对固件代码进行检测。方式二:通过钩子hook技术触发电子设备对固件代码进行固件升级OTA(Over-the-Air Technology,空间下载技术),在OTA过程中,获取服务器下发的固件。
下面以android(安卓)操作***为例,对HOOK技术进行详细说明。具体的,在Android操作***中***程序维护着一套事件分发机制。应用程序包括的应用触发事件和后台逻辑处理,均是根据事件处理过程一步步向下执行。而HOOK的意思,就是在事件传送到终点前截获并监控事件的传输,像个钩子勾上事件一样。并且能够在勾上事件时,处理一些特定的事件。HOOK的这个功能,使它能够将用于实现特定事件的代码“融入”到被勾住(HOOK)的代码的执行进程(可称为目标进程)中,成为目标进程的一个部分,如图1所示。
HOOK技术的具体处理过程可以如下:首先找到目标函数在内存中的地址,然后把该地址块设置为可写,修改目标函数地址的内容,当调用目标函数时跳转到HOOK函数的函数地址,HOOK函数执行完后再跳转回来,具体步骤如图2所示。其中,左边部分表示需要HOOK的函数,命令1到N表示函数的实现指令,虚线框部分表示通过HOOK实现的HOOK函数,粗线框部分表示存储函数前几条指令命令1,以及回到执行命令2的跳转指令。因此,如果需要HOOK函数,首先需要在远程进程中申请空间,该空间会存储函数的前几条指令,以及跳转回函数后续指令的跳转指令。其次,需要将函数地址重定向到HOOK函数。这样,当应用程序执行函数时,由于之前被重定向到HOOK函数,因此会首先执行HOOK函数的代码,在HOOK函数中会处理传进来的参数,处理完成之后,跳转到右下粗线框部分命令1,此处命令1执行相当于执行原函数的命令1,命令1执行完之后接着执行跳转指令跳转到命令2处执行。因此,一次HOOK中转之后,函数被完整的执行。在获取固件代码的相关技术中,可以通过HOOK技术触发电子设备进行固件升级,进而,可以获取服务器下发的固件。具体可以通过改变电子设备中用于确定是否进行固件升级的判决条件,来触发电子设备进行固件升级,例如,可以将确定进行固件升级的判决条件由当前版本号小于最新版本,修改为当前版本大于或等于最新版本。但是目前的一些电子设备并没有固件升级的功能,此种情况下,无法通过HOOK技术触发电子设备进行固件升级,从而,导致技术人员无法获取电子设备的固件代码。另外,为安全起见,往往服务器下发的固件是加密后的固件,此种情况下,获取到的也是加密后的固件,无法对其进行解密,从而,导致无法获取到电子设备的固件代码。
本发明实施例所提供的方案中,终端可以直接读取电子设备中的固件,即终端可以调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中存储的固件代码对应的编译数据,然后,再对得到的编译数据进行反编译处理,得到电子设备的固件代码,从而,可以使得能够对固件代码进行检测。
为了便于对本发明实施例的理解,下面首先介绍本发明实施例涉及的基本概念。
1.Keil编译应用:Keil编译应用提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。Keil5编译应用推出基于μVision界面,用于调试ARM7,ARM9,Cortex-M(其中,ARM7,ARM9,Cortex-M是微处理器的名称)内核的MDK-ARM(嵌入式应用程序),用于控制领域的开发。
2.嵌入式设备:嵌入式设备主要由嵌入式处理器、相关支撑硬件和嵌入式软件***组成,它是集软硬件于一体的可独立工作的“设备器件”。
3.固件:在本方案中指的是在嵌入式设备中运行的可执行程序;
4.JTAG基本原理:JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP(digital signal processor,数字信号处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-SystemProgrammable,在线编程),对FLASH等器件进行在线编程。JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程实现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。
下面将结合具体实施方式,对图3所示的处理流程进行详细的说明,内容可以如下:
步骤301,调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中第一存储位置中的数据,其中,数据包括电子设备的固件代码对应的编译数据。
其中,调试接口可以是用于实现在线编程的器件,比如,调试接口可以是JTAG接口、UART(Universal Asynchronous Receiver/Transmitte,通用异步收发传输器)接口等,在线调试器可以是用于向电子设备加载可执行程序的器件。电子设备可以是具有嵌入式处理器的设备,比如可以是手环、手表、路由器等设备。固件代码可以是电子设备的程序代码,比如可以是汇编语言的代码,编译数据可以是电子设备可执行的数据,可以是固件代码经过编译后的编译数据。
在实施中,电子设备的PCB(Printed Circuit Board,印制电路板)上往往设置有调试接口。技术人员获取到电子设备后,可以将电子设备的外壳去掉,获取到电子设备的PCB,进而,可以确定PCB上的微处理器的芯片型号。得到芯片型号后,技术人员可以通过查阅芯片数据手册,确定该电子设备中固件的存储位置。
例如,电子设备包括主控MCU(Microcontroller Unit,微控制单元)、蓝牙MCU、安全芯片、锂电池、无线充电部件、片外Flash(闪存)、显示屏、天线和传感器/震动马达***电路,其中,主控MCU即上述微处理器,硬件结构图如图4所示,该电子设备的芯片型号为STM32F103ZET6,则可以通过查阅芯片数据手册得知,该芯片为STM32F103xE系列下的增强型,为32位基于ARM(嵌入式)核心的微处理器,该芯片包含512KB(千字节)的闪存芯片,闪存芯片对应的地址为0x08000000~0x0807FFFF,包含该芯片的电子设备的固件即存储在闪存芯片中,即存储在0x08000000~0x0807FFFF对应的存储位置中(此种情况下,第一存储位置可以是0x08000000~0x0807FFFF对应的存储位置),其中,电子设备的存储地址示意图如图5所示。
得到电子设备的PCB后,除确定出该电子设备的固件的存储位置后,技术人员还可以将PCB上的调试接口与在线调试器(该在线调试器可以是J-Link调试器,其中,J-Link是一种在线调试器的名称)的一端连接,将在线调试器的另一端与终端连接,实现电子设备通过在线调试器与终端的连接,如图6所示。将电子设备、在线调试器和终端连接后,终端可以获取电子设备的相应信息,比如,技术人员可以在终端中的调试应用中的相应界面中输入微处理器的芯片型号,进而,可以通过操作,触发终端获取输入的微处理器的芯片型号。
终端中还可以安装有编译应用,比如,可以安装有Keil编译应用(其中,Keil是一种编译应用的名称)。上述准备工作完成后,终端可以通过Keil编译应用,来实现调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中第一存储位置中的数据的处理,其中,第一存储位置即是技术人员通过查阅芯片数据手册确定出的固件的存储位置。也就是说,终端读取到的第一存储位置的数据包含电子设备的固件,即包含电子设备的固件代码对应的编译数据。
可选的,终端可以通过向电子设备的内存中加载目标代码,读取第一存储位置中的数据,相应的,步骤301的处理过程可以如下:获取用于读取电子设备中第一存储位置中的数据的目标代码,调用电子设备的调试接口和连接电子设备的在线调试器,将目标代码加载到电子设备的内存中;通过目标代码读取电子设备中第一存储位置中的数据。
在实施中,技术人员可以通过终端中的编译应用,编写用于读取电子设备中第一存储位置中的数据的目标代码。编写完成后,终端可以获取编写的目标代码,进而终端可以将目标代码加载到电子设备的内存中,其中,电子设备的内存对应的地址也可以通过查阅芯片数据手册得知。将目标代码加载到电子设备中后,终端可以通过目标代码,读取第一存储位置中的数据。具体的,将目标代码加载到电子设备的内存中后,电子设备可以执行目标代码,即可以通过目标代码,读取第一存储位置中的数据,读取到数据后,可以将数据发送至终端。相应的,终端可以接收电子设备发送的第一存储位置中的数据。
例如,微处理器的芯片类型为STM32F103ZET6,则目标代码的部分代码可以如下:
可选的,在向电子设备加载目标代码前,终端还可以确定目标代码的存储位置,相应的,处理过程可以如下:获取电子设备的内存中用于存储目标代码的第二存储位置信息,相应的,处理过程可以如下:调用电子设备的调试接口和连接电子设备的在线调试器,将目标代码加载到电子设备的内存中的第二存储位置。
在实施中,在加载目标代码之前,终端还可以获取电子设备内存中用于存储目标代码的存储位置的信息(可称为第二存储位置信息)。具体的,终端可以显示设置页面,设置页面中可以显示有用于存储目标代码的存储位置的输入框,技术人员可以在输入框中输入第二存储位置信息(其中,第二存储位置信息对应的第二存储位置可以是内存中的某存储位置),设置页面中还可以显示有确定按键,当终端获取到对确定按键的选择指令时,可以获取第二存储位置信息。例如,芯片型号为STM32F103ZET6,设置页面如图7所示,技术人员可以通过查阅芯片数据手册,得到该芯片型号的微处理器的内存对应的地址,进而,可以在设置页面中的IROM对应的输入框中输入第二存储位置信息(比如,输入内存的开始地址0x20000000),然后点击ok按键,此时,终端可以获取到第二存储位置信息。
获取到第二存储位置信息后,还可以对预先设置好的配置文件进行加载,其中,当芯片型号为STM32F103ZET6,配置文件的内容如下:
获取到第二存储位置信息以及加载配置文件后,电子设备还可以进行复位处理。上述准备工作完成后,终端可以获取目标代码,并可以调用电子设备的调试接口和连接电子设备的在线调试器,将目标代码加载到电子设备的内存中的第二存储位置。
步骤302,将读取到的数据存储成预设格式的第一文件。
在实施中,读取到第一存储位置中的数据后,可以将读取到的数据存储成预设格式的第一文件,其中,预设格式可以是hex(十六机制)格式。具体的,终端通过上述目标代码读取到第一存储位置中的数据后,可以对其进行显示,如图8所示,进而,终端可以将显示的数据存储成预设格式的第一文件。
可选的,步骤301的处理还可以通过保存指令完成,相应的,处理过程可以如下:获取保存指令,调用电子设备的调试接口和连接电子设备的在线调试器,基于保存指令,读取电子设备中第一存储位置中的数据。
在实施中,技术人员可以在终端的相应界面输入保存指令(save指令),当终端接收到运行指令后,可以获取保存指令,并运行保存指令,进而,可以读取到第一存储位置中的数据,并将读取到的数据以预设格式的第一文件存储到预设文件夹中。
可选的,保存指令可以包括指令标识、第一存储位置信息,该指令标识用于标识该指令为保存指令,第一存储位置信息可以是第一存储位置对应的地址。相应的,处理过程可以如下:调用电子设备的调试接口和连接电子设备的在线调试器,基于保存指令中的第一存储位置信息,读取电子设备中第一存储位置中的数据。
在实施中,保存指令可以包括指令标识和待获取数据的存储位置的信息(即第一存储位置信息)。终端运行保存指令时,可以读取保存指令中的第一存储位置信息对应的第一存储位置中的数据,并将其存储成预设格式的第一文件。
可选的,还可以在保存指令中指定第一文件的存储位置,相应的,处理过程可以如下:基于保存指令中的本地的第三存储位置信息,将读取到的数据以预设格式的第一文件存储到所述第三存储位置。
在实施中,终端读取到第一存储位置中的数据后,可以通过在编译应用中输入的保存指令,将读取到的数据存储成预设格式的第一文件,保存指令中还可以包括第一文件的存储位置的信息(即第三存储位置对应的位置信息),其中,第三存储位置是终端本地中的存储位置,即终端得到第一文件后,可以将第一文件存储到保存指令中的第三存储位置信息对应的第三存储位置上。例如,编译应用为Keil编译应用,芯片型号为STM32F103ZET6,则保存指令可以如下:SAVE C:\TEST 0x08000000,0x0807FFFF。
步骤303,当获取到对第一文件的裁剪指令时,对第一文件进行裁剪,得到包括固件代码对应的编译数据的第二文件。
在实施中,通过芯片数据手册查询到用于存储固件的存储位置后,当终端向电子设备加载固件时,电子设备会从该存储位置的起始地址开始存储加载的固件。当存储位置可存储的数据量上限大于该电子设备的固件的数据量时,第一存储位置的后半部分的地址中将为空,此种情况下,从第一存储位置读取到的数据会包含固件,以及包含为空的存储地址中的数据(该数据可称为空数据,空数据一般为00,或者为FF)。
基于上述情况,终端得到既包含固件代码的编译数据,又包含空数据的第一文件后,终端可以对第一文件进行裁剪,得到包含编译数据的第二文件。具体的,终端可以显示第一文件中的数据,进而,可以对其中的数据进行裁剪,比如,可以删除第一文件中的空数据,此时,终端将会获取到裁剪指令,进而,终端可以对第一文件进行裁剪(比如,删除技术人员想要删除的数据),得到包括固件代码对应的编译数据的第二文件。
步骤304,对第二文件中的编译数据进行反编译处理,得到电子设备的固件代码。
在实施中,得到第二文件后,终端可以对第二文件中的编译数据进行反编译处理,得到电子设备的固件代码,比如,得到汇编语言的固件代码,以便后续技术人员对固件代码进行分析,检测固件代码的逻辑的正确性。
另外,针对终端通过向电子设备的内存中加载目标代码来获取电子设备的固件代码的情况,对本方案进行详细的说明,如图9所示。
步骤901,获取与在线调试器连接的电子设备的微处理器的芯片型号。
在实施中,电子设备的PCB上往往设置有调试接口。技术人员获取到电子设备后,可以将电子设备的外壳去掉,获取到电子设备的PCB。得到电子设备的PCB后,除确定出该电子设备的固件的存储位置后,技术人员还可以将PCB上的调试接口与在线调试器(该在线调试器可以是J-Link调试器,其中,J-Link是一种在线调试器的名称)的一端连接,将在线调试器的另一端与终端连接,实现电子设备通过在线调试器与终端的连接,如图6所示。将电子设备、在线调试器和终端连接后,终端可以获取电子设备的相应信息,比如,技术人员可以在终端中的调试应用中的相应界面中输入微处理器的芯片型号,进而,可以通过操作,触发终端获取输入的微处理器的芯片型号。
步骤902,获取电子设备的内存中用于存储目标代码的第二存储位置信息。
在实施中,在加载目标代码之前,终端还可以获取电子设备内存中用于存储目标代码的存储位置的信息(可称为第二存储位置信息)。具体的,终端可以显示设置页面,设置页面中可以显示有用于存储目标代码的存储位置的输入框,技术人员可以在输入框中输入第二存储位置信息,设置页面中还可以显示有确定按键,当终端检测到对确定按键的选择指令时,可以获取第二存储位置信息。例如,芯片型号为STM32F103ZET6,设置页面如图7所示,技术人员可以通过查阅芯片数据手册,得到该芯片型号的微处理器的内存对应的地址,进而,可以在设置页面中的IROM对应的输入框中输入第二存储位置信息(比如,输入内存的开始地址0x20000000),然后点击ok按键,将会触发终端获取到第二存储位置信息。
步骤903,加载配置文件。
在实施中,获取到第二存储位置信息后,终端还可以对预先设置好的配置文件进行加载,以便终端后续可以成功将目标代码加载到电子设备的内存中。
步骤904,调用电子设备的调试接口和连接电子设备的在线调试器,将用于读取电子设备中第一存储位置中的数据的目标代码,加载到电子设备的内存中的第二存储位置。
在实施中,获取到第二存储位置信息以及加载配置文件后,电子设备可以进行复位。上述准备工作完成后,终端可以获取目标代码,并可以通过调试接口和在线调试器,将目标代码加载到电子设备的内存中的第二存储位置。
步骤905,通过目标代码读取电子设备中第一存储位置中的数据。
具体的,将目标代码加载到电子设备的内存中的第二存储位置后,电子设备可以执行目标代码,即可以通过目标代码,读取第一存储位置中的数据,读取到数据后,可以将数据发送至终端。相应的,终端可以接收电子设备发送的第一存储位置中的数据。
步骤906,将读取到的数据存储成预设格式的第一文件。
在实施中,读取到第一存储位置中的数据后,可以将读取到的数据存储成预设格式的第一文件,其中,预设格式可以是hex(十六机制)格式。具体的,终端通过上述目标代码读取到第一存储位置中的数据后,可以对其进行显示,如图8所示,进而,终端可以将显示的数据存储成预设格式的第一文件。
可选的,此种情况下,终端可以基于保存指令,将读取到的数据存储成预设格式的第一文件,具体的,终端读取到第一存储位置中的数据后,可以通过在编译应用中输入的保存指令,将读取到的数据存储成预设格式的第一文件。
可选的,还可以在保存指令中指定第一文件的存储位置,相应的,处理过程可以如下:基于保存指令中的本地中的第三存储位置信息,将读取到的数据以预设格式的第一文件存储到第三存储位置。
在实施中,保存指令中还可以包括第一文件的存储位置的信息(即第三存储位置信息),即终端得到第一文件后,可以将第一文件存储到保存指令中的第三存储位置信息对应的第三存储位置上。例如,编译应用为Keil编译应用,芯片型号为STM32F103ZET6,则保存指令可以如下:SAVE C:\TEST 0x08000000,0x0807FFFF。
步骤907,当获取到对第一文件的裁剪指令时,对第一文件进行裁剪,得到包括固件代码对应的编译数据的第二文件。
在实施中,通过芯片数据手册查询到用于存储固件的存储位置后,当终端向电子设备加载固件时,电子设备会从该存储位置的起始地址开始存储加载的固件。当存储位置可存储的数据量上限大于该电子设备的固件的数据量时,第一存储位置的后半部分的地址中将为空,此种情况下,从第一存储位置读取到的数据会包含固件,以及包含为空的存储地址中的数据(该数据可称为空数据,空数据一般为00,或者为FF)。
基于上述情况,终端得到既包含固件代码的编译数据,又包含空数据的第一文件后,终端可以对第一文件进行裁剪,得到包含编译数据的第二文件。具体的,终端可以显示第一文件中的数据,进而,可以对其中的数据进行裁剪,比如,可以删除第一文件中的空数据,此时,终端将会获取到裁剪指令,进而,终端可以对第一文件进行裁剪(比如,删除技术人员想要删除的数据),得到包括固件代码对应的编译数据的第二文件。
步骤908,对第二文件中的编译数据进行反编译处理,得到电子设备的固件代码。
在实施中,得到第二文件后,终端可以对第二文件中的编译数据进行反编译处理,得到电子设备的固件代码,比如,得到汇编语言的固件代码,以便后续技术人员对固件代码进行分析,检测固件代码的逻辑的正确性,提高获取电子设备的固件代码的便捷性和可靠性。
另外,针对终端通过保存指令来获取电子设备的固件代码的情况,对本方案进行详细的说明,如图10所示。
步骤1001,获取与在线调试器连接的电子设备的微处理器的芯片型号。
在实施中,电子设备的PCB上往往设置有调试接口。技术人员获取到电子设备后,可以将电子设备的外壳去掉,获取到电子设备的PCB。得到电子设备的PCB后,除确定出该电子设备的固件的存储位置后,技术人员还可以将PCB上的调试接口与在线调试器(该在线调试器可以是J-Link调试器,其中,J-Link是一种在线调试器的名称)的一端连接,将在线调试器的另一端与终端连接,实现电子设备通过在线调试器与终端的连接,如图6所示。将电子设备、在线调试器和终端连接后,终端可以对电子设备的相应信息进行配置,比如,技术人员可以在终端中的调试应用中的相应界面中输入微处理器的芯片型号,进而,可以通过操作,触发终端获取输入的微处理器的芯片型号。终端获取到芯片型号后,即获取到与在线调试器连接的电子设备的微处理器的芯片型号。
步骤1002,调用电子设备的调试接口和连接电子设备的在线调试器,基于保存指令中的第一存储位置信息,读取电子设备中第一存储位置中的数据。
在实施中,技术人员可以在终端的相应界面输入保存指令(save指令),当终端接收到运行指令后,可以获取保存指令,并运行保存指令,进而,可以读取到第一存储位置中的数据。
步骤1003,基于保存指令中的本地的第三存储位置信息,将读取到的数据以预设格式的第一文件存储到第三存储位置。
在实施中,保存指令中还可以包括第一文件的存储位置信息(即第三存储位置信息),即终端得到第一文件后,可以将第一文件存储到保存指令中的第三存储位置信息对应的第三存储位置上。例如,编译应用为Keil编译应用,芯片型号为STM32F103ZET6,则保存指令可以如下:SAVE C:\TEST 0x08000000,0x0807FFFF。
步骤1004,当获取到对第一文件的裁剪指令时,对第一文件进行裁剪,得到包括固件代码对应的编译数据的第二文件。
在实施中,通过芯片数据手册查询到用于存储固件的存储位置后,当终端向电子设备加载固件时,电子设备会从该存储位置的起始地址开始存储加载的固件。当存储位置可存储的数据量上限大于该电子设备的固件的数据量时,第一存储位置的后半部分的地址中将为空,此种情况下,从第一存储位置读取到的数据会包含固件,以及包含为空的存储地址中的数据(该数据可称为空数据,空数据一般为00,或者为FF)。
基于上述情况,终端得到既包含固件代码的编译数据,又包含空数据的第一文件后,终端可以对第一文件进行裁剪,得到包含编译数据的第二文件。具体的,终端可以显示第一文件中的数据,进而,可以对其中的数据进行裁剪,比如,可以删除第一文件中的空数据,此时,终端将会获取到裁剪指令,进而,终端可以对第一文件进行裁剪(比如,删除技术人员想要删除的数据),得到包括固件代码对应的编译数据的第二文件。
步骤1005,对第二文件中的编译数据进行反编译处理,得到电子设备的固件代码。
在实施中,得到第二文件后,终端可以对第二文件中的编译数据进行反编译处理,得到电子设备的固件代码,比如,得到汇编语言的固件代码,以便后续技术人员对固件代码进行分析,检测固件代码的逻辑的正确性。
本发明实施例中,终端可以通过调试接口和在线调试器,读取电子设备中存储的固件代码对应的编译数据,然后,再对得到的编译数据进行反编译处理,得到电子设备的固件代码,从而,可以使得能够对固件代码进行检测。
另外,通过本发明实施例提供的获取电子设备的固件代码的方法,终端通过与电子设备相连,直接读取电子设备中第一存储位置中的数据,来获取电子设备的固件代码,从而,可以提高获取电子设备的固件代码的便捷性,并达到了在不改变电子设备中的固件,以及不破坏电子设备的微处理器的前提下,获取电子设备的固件代码的目的,提高获取电子设备的固件代码的便捷性和可靠性。
基于相同的技术构思,本发明实施例还提供了一种获取电子设备的固件代码的装置,如图11所示,该装置包括:
读取模块1110,用于调用电子设备的调试接口和连接电子设备的在线调试器,读取电子设备中第一存储位置中的数据,其中,所述数据包括所述电子设备的固件代码对应的编译数据;
存储模块1120,用于将读取到的数据存储成预设格式的第一文件;
裁剪模块1130,用于当获取到对所述第一文件的裁剪指令时,对所述第一文件进行裁剪,得到包括所述固件代码对应的编译数据的第二文件;
反编译模块1140,用于对所述第二文件中的编译数据进行反编译处理,得到所述电子设备的固件代码。
可选的,所述读取模块1110,用于:
获取用于读取所述电子设备中第一存储位置中的数据的目标代码;
调用电子设备的调试接口和连接电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中;
通过所述目标代码读取所述电子设备中第一存储位置中的数据。
可选的,所述读取模块1110,用于:
获取所述电子设备的内存中用于存储目标代码的第二存储位置信息;
调用电子设备的调试接口和连接电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中的第二存储位置。
可选的,所述读取模块1110,用于:
获取保存指令;
调用电子设备的调试接口和连接电子设备的在线调试器,基于所述保存指令,读取所述电子设备中第一存储位置中的数据。
可选的,所述读取模块1110,用于:
调用电子设备的调试接口和连接电子设备的在线调试器,基于保存指令中的第一存储位置信息,读取电子设备中所述第一存储位置中的数据。
可选的,所述存储模块1120,包括:
基于保存指令,将读取到的数据存储成预设格式的第一文件。
可选的,所述存储模块1120,包括:
基于保存指令中的本地的第三存储位置信息,将读取到的数据存储成预设格式的第一文件,并将所述第一文件存储到所述第三存储位置。
需要说明的是,上述读取模块1110、存储模块1120、裁剪模块1130、反编译模块1140可以由处理器实现,或者处理器配合存储器来实现,或者,处理器执行存储器中的程序指令来实现。
本发明实施例中,终端可以通过调试接口和在线调试器,读取电子设备中存储的固件代码对应的编译数据,然后,再对得到的编译数据进行反编译处理,得到电子设备的固件代码,从而,可以使得能够对固件代码进行检测。
另外,通过本发明实施例提供的获取电子设备的固件代码的方法,终端通过与电子设备相连,直接读取电子设备中第一存储位置中的数据,来获取电子设备的固件代码,从而,可以提高获取电子设备的固件代码的便捷性,并达到了在不改变电子设备中的固件,以及不破坏电子设备的微处理器的前提下,获取电子设备的固件代码的目的,提高获取电子设备的固件代码的便捷性和可靠性。
需要说明的是:上述实施例提供的获取电子设备的固件代码的装置在获取电子设备的固件代码的装置时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的获取电子设备的固件代码的装置与获取电子设备的固件代码的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图12,其示出了本发明实施例所涉及的终端的结构示意图,可以用于实施上述实施例中提供的获取电子设备的固件代码的方法。具体来讲:
终端1200可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图12中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1200的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端1200的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图12中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端1200还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1200移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1200还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端1200之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端1200的通信。
WiFi属于短距离无线传输技术,终端1200通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图12示出了WiFi模块170,但是可以理解的是,其并不属于终端1200的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端1200的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1200的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端1200还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理***与处理器180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端1200还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端1200的显示单元是触摸屏显示器,终端1200还包括有存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、至少一段程序、代码集或指令集可由处理器加载并执行以完成上述获取电子设备的固件代码的方法。
在示例性实施例中,还提供了一种包括至少一条指令、至少一段程序、代码集或指令集的非临时性计算机可读存储介质,例如包括指令的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器加载并执行以完成上述获取电子设备的固件代码的方法。例如,所述非临时性计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种获取电子设备的固件代码的方法,其特征在于,所述方法包括:
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,读取所述电子设备中第一存储位置中的数据,其中,所述数据包括所述电子设备的固件代码对应的编译数据;
将读取到的数据存储成预设格式的第一文件;
当获取到对所述第一文件的裁剪指令时,对所述第一文件进行裁剪,得到包括所述固件代码对应的编译数据的第二文件;
对所述第二文件中的编译数据进行反编译处理,得到所述电子设备的固件代码。
2.根据权利要求1所述的方法,其特征在于,所述调用所述电子设备的调试接口和连接所述电子设备的在线调试器,读取所述电子设备中第一存储位置中的数据,包括:
获取用于读取所述电子设备中第一存储位置中的数据的目标代码;
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中;
通过所述目标代码读取所述电子设备中第一存储位置中的数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述电子设备的内存中用于存储目标代码的第二存储位置信息;
所述调用所述电子设备的调试接口和连接所述电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中,包括:
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中的第二存储位置。
4.根据权利要求1所述的方法,其特征在于,所述调用所述电子设备的调试接口和连接所述电子设备的在线调试器,读取所述电子设备中第一存储位置中的数据,包括:
获取保存指令;
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,基于所述保存指令,读取所述电子设备中第一存储位置中的数据。
5.根据权利要求4所述的方法,其特征在于,所述保存指令中包含第一存储位置信息,所述调用所述电子设备的调试接口和连接所述电子设备的在线调试器,基于所述保存指令,读取所述电子设备中第一存储位置中的数据,包括:
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,基于所述保存指令中的第一存储位置信息,读取所述电子设备中所述第一存储位置中的数据。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述将读取到的数据存储成预设格式的第一文件,包括:
基于保存指令中的本地的第三存储位置信息,将读取到的数据以预设格式的第一文件存储到所述第三存储位置。
7.一种获取电子设备的固件代码的装置,其特征在于,所述装置包括:
读取模块,用于调用所述电子设备的调试接口和连接所述电子设备的在线调试器,读取所述电子设备中第一存储位置中的数据,其中,所述数据包括所述电子设备的固件代码对应的编译数据;
存储模块,用于将读取到的数据存储成预设格式的第一文件;
裁剪模块,用于当获取到对所述第一文件的裁剪指令时,对所述第一文件进行裁剪,得到包括所述固件代码对应的编译数据的第二文件;
反编译模块,用于对所述第二文件中的编译数据进行反编译处理,得到所述电子设备的固件代码。
8.根据权利要求7所述的装置,其特征在于,所述读取模块,用于:
获取用于读取所述电子设备中第一存储位置中的数据的目标代码;
调用所述电子设备的调试接口和用于连接所述电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中;
通过所述目标代码读取所述电子设备中第一存储位置中的数据。
9.根据权利要求8所述的装置,其特征在于,所述读取模块,用于:
获取所述电子设备的内存中用于存储目标代码的第二存储位置信息;
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,将所述目标代码加载到所述电子设备的内存中的第二存储位置。
10.根据权利要求7所述的装置,其特征在于,所述读取模块,用于:
获取保存指令;
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,基于所述保存指令,读取所述电子设备中第一存储位置中的数据。
11.根据权利要求10所述的装置,其特征在于,所述保存指令中包含第一存储位置信息,所述读取模块,用于:
调用所述电子设备的调试接口和连接所述电子设备的在线调试器,基于所述保存指令中的第一存储位置信息,读取所述电子设备中所述第一存储位置中的数据。
12.根据权利要求7-11任意一项所述的装置,其特征在于,所述存储模块,用于:
基于保存指令中的本地的第三存储位置信息,将读取到的数据以预设格式的第一文件存储到所述第三存储位置。
13.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一所述的获取电子设备的固件代码的方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一所述的获取电子设备的固件代码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710392482.3A CN109240902B (zh) | 2017-05-27 | 2017-05-27 | 一种获取电子设备的固件代码的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710392482.3A CN109240902B (zh) | 2017-05-27 | 2017-05-27 | 一种获取电子设备的固件代码的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109240902A true CN109240902A (zh) | 2019-01-18 |
CN109240902B CN109240902B (zh) | 2021-03-19 |
Family
ID=65082608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710392482.3A Active CN109240902B (zh) | 2017-05-27 | 2017-05-27 | 一种获取电子设备的固件代码的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240902B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515842A (zh) * | 2019-08-09 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种程序调试方法、装置及电子设备和存储介质 |
CN110798356A (zh) * | 2019-11-04 | 2020-02-14 | 腾讯科技(深圳)有限公司 | 固件监控方法、装置、存储介质和计算机设备 |
CN111198832A (zh) * | 2020-01-02 | 2020-05-26 | 联想(北京)有限公司 | 一种处理方法和电子设备 |
CN112732321A (zh) * | 2021-01-21 | 2021-04-30 | 恒为科技(上海)股份有限公司 | 一种固件修改方法、装置、计算机可读存储介质和设备 |
CN113377370A (zh) * | 2021-05-18 | 2021-09-10 | 龙芯中科(西安)科技有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2320680A1 (en) * | 2000-09-28 | 2002-03-28 | Myrddin Technologies Consulting Ltd. | Electronic medical record storage compact disc |
CN1564136A (zh) * | 2004-04-02 | 2005-01-12 | 清华大学 | 基于目标机上的ejtag部件的交叉调试器实现方法 |
CN201435083Y (zh) * | 2009-05-08 | 2010-03-31 | 四川赛狄信息技术有限公司 | 微处理器及其程序的保密装置 |
CN102117243A (zh) * | 2010-12-29 | 2011-07-06 | 杭州晟元芯片技术有限公司 | 一种在Flash存储器中高效的使用软件断点调试的方法 |
CN102193556A (zh) * | 2011-04-18 | 2011-09-21 | 华东师范大学 | 汽车电子器件中断安全隐患检测***及其检测方法 |
CN103176904A (zh) * | 2013-03-29 | 2013-06-26 | 北京经纬恒润科技有限公司 | 一种仿真测试平台软件架构及基于该架构的测试方法 |
CN104407975A (zh) * | 2014-11-29 | 2015-03-11 | 蔡杨毅 | 一种希捷硬盘维修固件处理装置及其应用方法 |
US20150271658A1 (en) * | 2014-03-24 | 2015-09-24 | Qualcomm Incorporated | Vendor-specific docking management operations |
CN105446920A (zh) * | 2015-12-07 | 2016-03-30 | 中国电子科技集团公司第三十二研究所 | 基于龙芯的fpga嵌入式计算机及其配置方法 |
CN105630678A (zh) * | 2015-12-22 | 2016-06-01 | 国网天津市电力公司 | 一种智能电能表软件的可靠性检测仪及其检测方法 |
US20170024266A1 (en) * | 2015-07-20 | 2017-01-26 | Kabushiki Kaisha Toshiba | Memory system, information processing system, and host device |
CN106547541A (zh) * | 2016-10-12 | 2017-03-29 | 北京奇虎科技有限公司 | 统计应用页面展示时长的方法、装置和加固安装包的装置 |
-
2017
- 2017-05-27 CN CN201710392482.3A patent/CN109240902B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2320680A1 (en) * | 2000-09-28 | 2002-03-28 | Myrddin Technologies Consulting Ltd. | Electronic medical record storage compact disc |
CN1564136A (zh) * | 2004-04-02 | 2005-01-12 | 清华大学 | 基于目标机上的ejtag部件的交叉调试器实现方法 |
CN201435083Y (zh) * | 2009-05-08 | 2010-03-31 | 四川赛狄信息技术有限公司 | 微处理器及其程序的保密装置 |
CN102117243A (zh) * | 2010-12-29 | 2011-07-06 | 杭州晟元芯片技术有限公司 | 一种在Flash存储器中高效的使用软件断点调试的方法 |
CN102193556A (zh) * | 2011-04-18 | 2011-09-21 | 华东师范大学 | 汽车电子器件中断安全隐患检测***及其检测方法 |
CN103176904A (zh) * | 2013-03-29 | 2013-06-26 | 北京经纬恒润科技有限公司 | 一种仿真测试平台软件架构及基于该架构的测试方法 |
US20150271658A1 (en) * | 2014-03-24 | 2015-09-24 | Qualcomm Incorporated | Vendor-specific docking management operations |
CN104407975A (zh) * | 2014-11-29 | 2015-03-11 | 蔡杨毅 | 一种希捷硬盘维修固件处理装置及其应用方法 |
US20170024266A1 (en) * | 2015-07-20 | 2017-01-26 | Kabushiki Kaisha Toshiba | Memory system, information processing system, and host device |
CN105446920A (zh) * | 2015-12-07 | 2016-03-30 | 中国电子科技集团公司第三十二研究所 | 基于龙芯的fpga嵌入式计算机及其配置方法 |
CN105630678A (zh) * | 2015-12-22 | 2016-06-01 | 国网天津市电力公司 | 一种智能电能表软件的可靠性检测仪及其检测方法 |
CN106547541A (zh) * | 2016-10-12 | 2017-03-29 | 北京奇虎科技有限公司 | 统计应用页面展示时长的方法、装置和加固安装包的装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515842A (zh) * | 2019-08-09 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种程序调试方法、装置及电子设备和存储介质 |
CN110515842B (zh) * | 2019-08-09 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种程序调试方法、装置及电子设备和存储介质 |
CN110798356A (zh) * | 2019-11-04 | 2020-02-14 | 腾讯科技(深圳)有限公司 | 固件监控方法、装置、存储介质和计算机设备 |
CN110798356B (zh) * | 2019-11-04 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 固件监控方法、装置、存储介质和计算机设备 |
CN111198832A (zh) * | 2020-01-02 | 2020-05-26 | 联想(北京)有限公司 | 一种处理方法和电子设备 |
CN111198832B (zh) * | 2020-01-02 | 2022-09-23 | 联想(北京)有限公司 | 一种处理方法和电子设备 |
CN112732321A (zh) * | 2021-01-21 | 2021-04-30 | 恒为科技(上海)股份有限公司 | 一种固件修改方法、装置、计算机可读存储介质和设备 |
CN112732321B (zh) * | 2021-01-21 | 2024-02-09 | 恒为科技(上海)股份有限公司 | 一种固件修改方法、装置、计算机可读存储介质和设备 |
CN113377370A (zh) * | 2021-05-18 | 2021-09-10 | 龙芯中科(西安)科技有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109240902B (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108415739B (zh) | 一种动态链接库函数的钩挂方法、装置和存储介质 | |
CN105320598B (zh) | 软件测试方法及装置 | |
CN109240902A (zh) | 一种获取电子设备的固件代码的方法和装置 | |
CN109753276B (zh) | 一种基于虚幻引擎的控制方法及相关装置 | |
CN105490919B (zh) | 消息撤回方法和装置 | |
CN107943683B (zh) | 一种测试脚本生成方法、装置、电子设备及存储介质 | |
CN106126411B (zh) | 一种对被测程序代码进行测试的方法和装置 | |
CN110032512A (zh) | 一种小程序的调试方法、相关设备及终端 | |
CN104423822B (zh) | 录制自动化测试脚本的方法及装置 | |
CN105847325B (zh) | 应用客户端的调试方法及装置 | |
CN104077211B (zh) | 一种移动终端软件的测试方法及测试*** | |
CN105740145B (zh) | 定位控件中的元素的方法及装置 | |
CN104298587A (zh) | 一种代码覆盖测试方法、装置和*** | |
CN106713608B (zh) | 应用的功能状态修改方法、装置及终端 | |
CN105530239B (zh) | 多媒体数据获取方法及装置 | |
CN110058850A (zh) | 一种应用的开发方法、装置以及存储介质 | |
CN106155717A (zh) | 一种将sdk集成到第三方apk的方法和装置 | |
CN110046497A (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN105808043B (zh) | 一种终端应用的设置方法和移动终端 | |
CN106407800A (zh) | 一种hook的方法及终端设备 | |
CN108052430A (zh) | 移动终端重启定位方法、移动终端及计算机可读存储介质 | |
CN106681884B (zh) | 一种***调用的监控方法和装置 | |
CN110413639A (zh) | 数据核查方法及装置、电子设备和计算机可读存储介质 | |
CN105005529B (zh) | 一种对应用程序进行测试的方法及装置 | |
CN104978237B (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 |