CN112732321B - 一种固件修改方法、装置、计算机可读存储介质和设备 - Google Patents
一种固件修改方法、装置、计算机可读存储介质和设备 Download PDFInfo
- Publication number
- CN112732321B CN112732321B CN202110083378.2A CN202110083378A CN112732321B CN 112732321 B CN112732321 B CN 112732321B CN 202110083378 A CN202110083378 A CN 202110083378A CN 112732321 B CN112732321 B CN 112732321B
- Authority
- CN
- China
- Prior art keywords
- file
- firmware
- source code
- memory address
- original
- 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
- 238000002715 modification method Methods 0.000 title claims abstract description 18
- 230000006870 function Effects 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000004048 modification Effects 0.000 claims description 21
- 238000012986 modification Methods 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- 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
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请公开了一种固件修改方法、装置、计算机可读存储介质和设备,对固件的可执行文件进行解析,得到源码的内存地址。基于源码的内存地址中所写入的数据,生成源码文件。根据用户输入的功能需求信息,对源码文件进行更改。对更改后的源码文件进行编译,得到编码文件。基于源码的内存地址,查找固件的原始编码文件,并利用编码文件替换固件的原始编码文件。可见,利用本申请所述方法,可以在固件源码未公开的情况下实现对固件的修改,令固件具备用户所需的功能。
Description
技术领域
本申请涉及电子设备技术领域,尤其涉及一种固件修改方法、装置、计算机可读存储介质和设备。
背景技术
市面上在交换机和服务器领域存在大量基于龙芯(一种国产芯片)的客户定制化硬件板卡,很多硬件驱动相关的功能只需要更改PMON固件(PMON固件是一个兼有BIOS和boot loader部分功能的开源代码软件,多用于嵌入式***)里面的设备树源码(DeviceTree Source,DTS)即可。所谓的设备树源码,是一种描述硬件的数据结构。然而,固件厂商(例如硬件板卡厂商)并不对外公开PMON固件的源码,用户便无法利用源码进行固件修改完成自身的功能需求。
为此,如何在固件源码未公开的情况下实现对固件的修改,成为本领域技术人员亟需解决的问题。
发明内容
本申请提供了一种固件修改方法、装置、计算机可读存储介质和设备,目的在于在固件源码未公开的情况下实现对固件的修改,以满足用户的功能需求。
为了实现上述目的,本申请提供了以下技术方案:
一种固件修改方法,包括:
对固件的可执行文件进行解析,得到源码的内存地址;
基于所述源码的内存地址中所写入的数据,生成源码文件;
根据用户输入的功能需求信息,对所述源码文件进行更改;
对更改后的所述源码文件进行编译,得到编码文件;
基于所述源码的内存地址,查找所述固件的原始编码文件,并利用所述编码文件替换所述固件的原始编码文件。
可选的,所述对固件的可执行文件进行解析,得到源码的内存地址,包括:
获取固件的可执行文件中所包含的数据;
对所述可执行文件中所包含的数据进行字符串格式分析,并将字符串格式与预设格式相同的数据,标记为源码;
提取所述源码的内存地址。
可选的,所述基于所述源码的内存地址中所写入的数据,生成源码文件,包括:
启动所述固件,并运行第一指令进入所述固件的运行界面;
在所述运行界面中,运行第二指令读取所述源码的内存地址中所写入的数据;
将读取得到的所述数据,拷贝到新建的源码文件中。
可选的,所述根据用户输入的功能需求信息,对所述源码文件进行更改之后,还包括:
为更改后的所述源码文件添加预设标识,其中,所述预设标识用于指示所述源码的版本。
可选的,所述利用所述编码文件替换所述固件的原始编码文件,包括:
获取所述编码文件的字节总数量,并判断所述字节总数量是否小于预设阈值;
在所述字节总数量不小于所述预设阈值的情况下,删除所述固件的原始编码文件,并将所述编码文件复制到所述固件中。
可选的,还包括:
在所述字节总数量小于所述预设阈值的情况下,将所述编码文件中所包含的数据,拷贝到新建的目标编码文件中;
对所述目标编码文件进行字节填充,使得所述目标编码文件的字节总数量不小于所述预设阈值;
累加计算所述目标编码文件中所包含的各个字节的值,得到第一数值;
对所述第一数值进行取反运算,得到校验值;
获取所述原始编码文件的内存地址;
在所述原始编码文件的内存地址的起始位置和结束位置,分别写入所述校验值;
在所述原始编码文件的内存地址的其它位置,写入所述目标编码文件。
可选的,所述利用所述编码文件替换所述固件的原始编码文件之后,还包括:
启动操作***,运行所述编码文件为所述操作***配置软硬件环境。
一种固件修改装置,包括:
解析单元,用于对固件的可执行文件进行解析,得到源码的内存地址;
生成单元,用于基于所述源码的内存地址中所写入的数据,生成源码文件;
更改单元,用于根据用户输入的功能需求信息,对所述源码文件进行更改;
编译单元,用于对更改后的所述源码文件进行编译,得到编码文件;
替换单元,用于基于所述源码的内存地址,查找所述固件的原始编码文件,并利用所述编码文件替换所述固件的原始编码文件。
一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行所述的固件修改方法。
一种固件修改设备,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行所述的固件修改方法。
本申请提供的技术方案,对固件的可执行文件进行解析,得到源码的内存地址。基于源码的内存地址中所写入的数据,生成源码文件。根据用户输入的功能需求信息,对源码文件进行更改。对更改后的源码文件进行编译,得到编码文件。基于源码的内存地址,查找固件的原始编码文件,并利用编码文件替换固件的原始编码文件。可见,利用本申请所述方法,可以在固件源码未公开的情况下实现对固件的修改,令固件具备用户所需的功能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例提供的一种固件修改方法的示意图;
图1b为本申请实施例提供的一种可执行文件的数据结构示意图;
图1c为本申请实施例提供的另一种可执行文件的数据结构示意图;
图1d为本申请实施例提供的又一种可执行文件的数据结构示意图;
图1e为本申请实施例提供的一种运行代码的示意图;
图1f为本申请实施例提供的一种***初始化示意图;
图2为本申请实施例提供的一种利用编码文件替换固件的原始编码文件的具体过程的示意图;
图3为本申请实施例提供的另一种固件修改方法的示意图;
图4为本申请实施例提供的一种固件修改装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请所述的流程应用于基于龙芯(一种国产处理器)的固件修改***中,具体的,可由处理器执行,用于在固件源码未公开的情况下实现对固件的修改,以满足用户的功能需求。
如图1a所示,以PMON固件(其源码为DTS)为例,为本申请实施例提供的一种固件修改方法的示意图,包括如下步骤:
S101:利用二进制编辑工具,获取PMON固件的可执行文件中所包含的数据。
其中,可执行文件的文件后缀名为.bin,可执行文件中所包含的数据(其数据格式为十六进制)包括固件代码、DTS、以及环境变量(一种常用参数项,通过修改环境变量可以影响PMON固件加载程序运行时的参数和特性)。
S102:对可执行文件中所包含的数据进行字符串格式分析,将字符串格式与预设格式相同的数据,标记为DTS,并提取DTS的内存地址。
其中,固件代码、DTS、以及环境变量各自的字符串格式是互不相同的,因此,可以利用字符串格式区分可执行文件中所包含的数据。
具体的,参见图1b、图1c、以及图1d所示的可执行文件的数据结构(在图1b中,“Addresss”代表内存地址,“0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f”代表字节,“Dump”代表数据的转储),对可执行文件中所包含的数据进行字符串格式分析,确定得到内存地址为以000fb000为起始位置、至000feff0结束位置的所有字节的字符串格式均与预设格式相同,故将000fb000~000feff0范围内的所有字节标记为DTS。此外,经过字符串格式分析,还发现:内存地址为以00000000为起始位置、至000faff0结束位置的所有字节,均用于指示固件代码;内存地址为以000ff000为起始位置、至000ff080结束位置的所有字节,均用于指示环境变量。
需要说明的是,上述具体实现过程仅仅用于举例说明。
S103:启动PMON固件,并运行第一指令进入PMON的运行界面。
其中,第一指令具体可以为“ctrl+b”命令。
S104:在PMON的运行界面中,运行第二指令读取DTS的内存地址中所写入的数据。
其中,第二指令具体可以为“print_dtb”命令(即DTB设备树打印命令),运行“print_dtb”命令读取DTS的内存地址中所写入的数据的具体实现代码,可以参见下述图1e所示。
S105:将读取得到的数据,拷贝到新建的源码文件(具体可以为设备树源码文件,即DTS文件)中。
其中,源码文件的文件后缀名为.dts。
S106:根据用户输入的功能需求信息,对源码文件进行更改,并为更改后的源码文件添加预设标识。
其中,根据用户输入的功能需求信息,对源码文件进行更改的具体实现过程,为本领域技术人员所熟悉的公知常识,这里不再赘述。
在本申请实施例中,预设标识用于指示DTS的版本,例如“/dts-v1/;”。为更改后的源码文件添加预设标识,具体的,通常在更改后的源码文件的文件头中添加预设标识,保证更改后的源码文件能够有效,即保证更改后的源码文件可被源码编译工具识别。
S107:调用预设的源码编译工具,对更改后的源码文件进行编译,得到编码文件。
其中,预设的源码编译工具包括但不限于dtc(一种用于将.dts文件编译成.dtb文件的免费工具)。在本申请实施例中,编码文件的文件后缀名为.dtb。
需要说明的是,调用预设的源码编译工具,对更改后的源码文件进行编译的具体实现代码可以为:dtc-I dts-O dtb-o demo.dtbdemo.dts,具体的,“dtc”代表源码编译工具,“dts”代表输入文件的格式,“dtb”代表输出文件的格式,“demo.dtb”代表输出文件的名称,“demo.dts”代表输入文件的名称。
S108:基于源码的内存地址,查找PMON固件的原始编码文件,并利用编码文件替换PMON固件的原始编码文件(具体可以为设备树编码文件,通常为代码片段)。
其中,原始编码文件包括固件原先所具备的DTS,编码文件包括根据功能需求信息进行修改后所得到的DTS,因此,原始编码文件所提供的功能,与编码文件所提供的功能各不相同。换而言之,利用编码文件替换固件的原始编码文件,能够实现对PMON固件的修改,使得PMON固件所提供的功能能够满足用户需求。在本申请实施例中,原始编码文件的文件后缀名为.dtb。
需要说明的是,利用编码文件替换PMON固件的原始编码文件的具体实现过程,可以参见下述图2示出的步骤、以及步骤的解释说明。
S109:启动操作***,运行编码文件为操作***配置软硬件环境。
其中,在为操作***配置软硬件环境的过程中,操作***会将编码文件拷贝到主存中,从而实现初始化操作。具体的,以图1f所示的Linux***为例,在为Linux***配置软硬件环境的过程中,Linux***会将编码文件(即DTS)拷贝到主存(即RAM)中。
综上所述,对固件的可执行文件进行解析,得到固件的源码文件,根据用户输入的功能需求信息,对源码文件进行修改,并对源码文件进行编译,得到编码文件,然后基于源码的内存地址,查找固件的原始编码文件,最后利用编码文件替换固件的原始编码文件,从而实现对固件的修改,使得固件所提供的功能能够满足用户需求。可见,利用本实施例所述方法,可以在固件源码未公开的情况下实现对固件的修改,令固件具备用户所需的功能。
如图2所示,为本申请实施例提供的一种利用编码文件替换固件的原始编码文件的具体过程的示意图,包括如下步骤:
S201:获取编码文件的字节总数量,并判断字节总数量是否小于预设阈值。
若字节总数量小于预设阈值,则执行S202,否则执行S209。
其中,获取编码文件的字节总数量的具体实现过程,为本领域技术人员所熟悉的公知常识。
S202:将编码文件中所包含的数据,拷贝到新建的目标编码文件中。
在执行S202之后,继续执行S203。
S203:对目标编码文件进行字节填充,使得目标编码文件的字节总数量不小于预设阈值。
其中,对目标编码文件进行字节填充,其实质就是:在目标编码文件中写入空值。
S204:累加计算目标编码文件中所包含的各个字节的值,得到第一数值。
S205:对第一数值进行取反运算,得到校验值。
S206:获取原始编码文件的内存地址。
S207:在原始编码文件的内存地址的起始位置和结束位置,分别写入校验值。
S208:在原始编码文件的内存地址的其它位置,写入目标编码文件。
S209:删除固件的原始编码文件,并将编码文件复制到固件中。
其中,在将校验值、以及目标编码文件写入原始编码文件的内存地址后,能够确定原始编码文件已经被编码文件所替换,并保证编码文件是现行有效的。
综上所述,利用本实施例所述方法,能够实现利用编码文件替换闪存中的原始编码文件。
需要说明的是,上述图1a、以及图2示出的实施例,均为本申请所述固件修改方法的一种可选的实现方式。为此,上述图1a所示的流程,可以概括为图3所示的方法。
如图3所示,为本申请实施例提供的另一种固件修改方法的示意图,包括如下步骤:
S301:对固件的可执行文件进行解析,得到源码的内存地址。
S302:基于源码的内存地址中所写入的数据,生成源码文件。
S303:根据用户输入的功能需求信息,对源码文件进行更改。
S304:对更改后的源码文件进行编译,得到编码文件。
S305:基于源码的内存地址,查找固件的原始编码文件,并利用编码文件替换固件的原始编码文件。
综上所述,对固件的可执行文件进行解析,得到固件的源码文件,根据用户输入的功能需求信息,对源码文件进行修改,并对源码文件进行编译,得到编码文件,然后基于源码的内存地址,查找固件的原始编码文件,最后利用编码文件替换固件的原始编码文件,从而实现对固件的修改,使得固件所提供的功能能够满足用户需求。可见,利用本实施例所述方法,可以在固件源码未公开的情况下实现对固件的修改,令固件具备用户所需的功能。
与上述本申请实施例提供的固件修改方法相对应,本申请实施例还提供了一种固件修改装置。
如图4所示,为本申请实施例提供的一种固件修改装置的结构示意图,包括:
解析单元100,用于对固件的可执行文件进行解析,得到源码的内存地址。
其中,解析单元100用于对固件的可执行文件进行解析,得到源码的内存地址的具体过程包括:获取固件的可执行文件中所包含的数据;对可执行文件中所包含的数据进行字符串格式分析,并将字符串格式与预设格式相同的数据,标记为源码;提取源码的内存地址。
生成单元200,用于基于源码的内存地址中所写入的数据,生成源码文件。
其中,生成单元200用于基于源码的内存地址中所写入的数据,生成源码文件的具体过程包括:启动固件,并运行第一指令进入固件的运行界面;在运行界面中,运行第二指令读取源码的内存地址中所写入的数据;将读取得到的数据,拷贝到新建的源码文件中。
更改单元300,用于根据用户输入的功能需求信息,对源码文件进行更改。
其中,更改单元300还用于为更改后的源码文件添加预设标识,其中,预设标识用于指示源码的版本。
编译单元400,用于对更改后的源码文件进行编译,得到编码文件。
替换单元500,用于基于源码的内存地址,查找固件的原始编码文件,并利用编码文件替换固件的原始编码文件。
其中,替换单元500用于利用编码文件替换固件的原始编码文件的具体过程包括:获取编码文件的字节总数量,并判断字节总数量是否小于预设阈值;在字节总数量不小于预设阈值的情况下,删除固件的原始编码文件,并将编码文件复制到固件中;在字节总数量小于预设阈值的情况下,将编码文件中所包含的数据,拷贝到新建的目标编码文件中;对目标编码文件进行字节填充,使得目标编码文件的字节总数量不小于预设阈值;累加计算目标编码文件中所包含的各个字节的值,得到第一数值;对第一数值进行取反运算,得到校验值;获取原始编码文件的内存地址;在原始编码文件的内存地址的起始位置和结束位置,分别写入校验值;在原始编码文件的内存地址的其它位置,写入目标编码文件。
启动单元600,用于启动操作***,运行编码文件为操作***配置软硬件环境。
综上所述,对固件的可执行文件进行解析,得到固件的源码文件,根据用户输入的功能需求信息,对源码文件进行修改,并对源码文件进行编译,得到编码文件,然后基于源码的内存地址,查找固件的原始编码文件,最后利用编码文件替换固件的原始编码文件,从而实现对固件的修改,使得固件所提供的功能能够满足用户需求。可见,利用本实施例所述方法,可以在固件源码未公开的情况下实现对固件的修改,令固件具备用户所需的功能。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,程序执行上述本申请提供的固件修改方法。
本申请还提供了一种固件修改设备,包括:处理器、存储器和总线。处理器与存储器通过总线连接,存储器用于存储程序,处理器用于运行程序,其中,程序运行时执行上述本申请提供的固件修改方法,包括如下步骤:
对固件的可执行文件进行解析,得到源码的内存地址;
基于所述源码的内存地址中所写入的数据,生成源码文件;
根据用户输入的功能需求信息,对所述源码文件进行更改;
对更改后的所述源码文件进行编译,得到编码文件;
基于所述源码的内存地址,查找所述固件的原始编码文件,并利用所述编码文件替换所述固件的原始编码文件。
可选的,所述对固件的可执行文件进行解析,得到源码的内存地址,包括:
获取固件的可执行文件中所包含的数据;
对所述可执行文件中所包含的数据进行字符串格式分析,并将字符串格式与预设格式相同的数据,标记为源码;
提取所述源码的内存地址。
可选的,所述基于所述源码的内存地址中所写入的数据,生成源码文件,包括:
启动所述固件,并运行第一指令进入所述固件的运行界面;
在所述运行界面中,运行第二指令读取所述源码的内存地址中所写入的数据;
将读取得到的所述数据,拷贝到新建的源码文件中。
可选的,所述根据用户输入的功能需求信息,对所述源码文件进行更改之后,还包括:
为更改后的所述源码文件添加预设标识,其中,所述预设标识用于指示所述源码的版本。
可选的,所述利用所述编码文件替换所述固件的原始编码文件,包括:
获取所述编码文件的字节总数量,并判断所述字节总数量是否小于预设阈值;
在所述字节总数量不小于所述预设阈值的情况下,删除所述固件的原始编码文件,并将所述编码文件复制到所述固件中。
可选的,还包括:
在所述字节总数量小于所述预设阈值的情况下,将所述编码文件中所包含的数据,拷贝到新建的目标编码文件中;
对所述目标编码文件进行字节填充,使得所述目标编码文件的字节总数量不小于所述预设阈值;
累加计算所述目标编码文件中所包含的各个字节的值,得到第一数值;
对所述第一数值进行取反运算,得到校验值;
获取所述原始编码文件的内存地址;
在所述原始编码文件的内存地址的起始位置和结束位置,分别写入所述校验值;
在所述原始编码文件的内存地址的其它位置,写入所述目标编码文件。
可选的,所述利用所述编码文件替换所述固件的原始编码文件之后,还包括:
启动操作***,运行所述编码文件为所述操作***配置软硬件环境。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种固件修改方法,其特征在于,包括:
对固件的可执行文件进行解析,得到源码的内存地址;
基于所述源码的内存地址中所写入的数据,生成源码文件;
根据用户输入的功能需求信息,对所述源码文件进行更改;
对更改后的所述源码文件进行编译,得到编码文件;
基于所述源码的内存地址,查找所述固件的原始编码文件,并利用所述编码文件替换所述固件的原始编码文件;
所述利用所述编码文件替换所述固件的原始编码文件,包括:
获取所述编码文件的字节总数量,并判断所述字节总数量是否小于预设阈值;在所述字节总数量不小于所述预设阈值的情况下,删除所述固件的原始编码文件,并将所述编码文件复制到所述固件中;
在所述字节总数量小于所述预设阈值的情况下,将所述编码文件中所包含的数据,拷贝到新建的目标编码文件中;对所述目标编码文件进行字节填充,使得所述目标编码文件的字节总数量不小于所述预设阈值;累加计算所述目标编码文件中所包含的各个字节的值,得到第一数值;对所述第一数值进行取反运算,得到校验值;获取所述原始编码文件的内存地址;在所述原始编码文件的内存地址的起始位置和结束位置,分别写入所述校验值;在所述原始编码文件的内存地址的其它位置,写入所述目标编码文件。
2.根据权利要求1所述的方法,其特征在于,所述对固件的可执行文件进行解析,得到源码的内存地址,包括:
获取固件的可执行文件中所包含的数据;
对所述可执行文件中所包含的数据进行字符串格式分析,并将字符串格式与预设格式相同的数据,标记为源码;
提取所述源码的内存地址。
3.根据权利要求1所述的方法,其特征在于,所述基于所述源码的内存地址中所写入的数据,生成源码文件,包括:
启动所述固件,并运行第一指令进入所述固件的运行界面;
在所述运行界面中,运行第二指令读取所述源码的内存地址中所写入的数据;
将读取得到的所述数据,拷贝到新建的源码文件中。
4.根据权利要求1所述的方法,其特征在于,所述根据用户输入的功能需求信息,对所述源码文件进行更改之后,还包括:
为更改后的所述源码文件添加预设标识,其中,所述预设标识用于指示所述源码的版本。
5.根据权利要求1所述的方法,其特征在于,所述利用所述编码文件替换所述固件的原始编码文件之后,还包括:
启动操作***,运行所述编码文件为所述操作***配置软硬件环境。
6.一种固件修改装置,其特征在于,包括:
解析单元,用于对固件的可执行文件进行解析,得到源码的内存地址;
生成单元,用于基于所述源码的内存地址中所写入的数据,生成源码文件;
更改单元,用于根据用户输入的功能需求信息,对所述源码文件进行更改;
编译单元,用于对更改后的所述源码文件进行编译,得到编码文件;
替换单元,用于基于所述源码的内存地址,查找所述固件的原始编码文件,并利用所述编码文件替换所述固件的原始编码文件;
所述利用所述编码文件替换所述固件的原始编码文件,包括:
获取所述编码文件的字节总数量,并判断所述字节总数量是否小于预设阈值;在所述字节总数量不小于所述预设阈值的情况下,删除所述固件的原始编码文件,并将所述编码文件复制到所述固件中;
在所述字节总数量小于所述预设阈值的情况下,将所述编码文件中所包含的数据,拷贝到新建的目标编码文件中;对所述目标编码文件进行字节填充,使得所述目标编码文件的字节总数量不小于所述预设阈值;累加计算所述目标编码文件中所包含的各个字节的值,得到第一数值;对所述第一数值进行取反运算,得到校验值;获取所述原始编码文件的内存地址;在所述原始编码文件的内存地址的起始位置和结束位置,分别写入所述校验值;在所述原始编码文件的内存地址的其它位置,写入所述目标编码文件。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1-5任一项所述的固件修改方法。
8.一种固件修改设备,其特征在于,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-5任一项所述的固件修改方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110083378.2A CN112732321B (zh) | 2021-01-21 | 2021-01-21 | 一种固件修改方法、装置、计算机可读存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110083378.2A CN112732321B (zh) | 2021-01-21 | 2021-01-21 | 一种固件修改方法、装置、计算机可读存储介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732321A CN112732321A (zh) | 2021-04-30 |
CN112732321B true CN112732321B (zh) | 2024-02-09 |
Family
ID=75593447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110083378.2A Active CN112732321B (zh) | 2021-01-21 | 2021-01-21 | 一种固件修改方法、装置、计算机可读存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732321B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419748B (zh) * | 2021-07-06 | 2024-03-15 | 柏科(常熟)电机有限公司 | 一种ecu原车数据的查找与清除方法、存储介质 |
CN114185609A (zh) * | 2021-11-04 | 2022-03-15 | 深圳市德明利技术股份有限公司 | 设备配置信息的处理方法、装置、储存介质和处理器 |
CN115795418B (zh) * | 2023-01-17 | 2023-04-14 | 泉州艾奇科技有限公司 | 水印嵌入方法、装置、计算机、存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005717A (zh) * | 2015-07-04 | 2015-10-28 | 深圳市乐迪电子有限公司 | Usbs固件升级及加密的方法 |
CN109165034A (zh) * | 2018-08-31 | 2019-01-08 | 深圳大势智能科技有限公司 | 基于ota的pos机升级方法、装置、设备及存储介质 |
CN109240902A (zh) * | 2017-05-27 | 2019-01-18 | 腾讯科技(深圳)有限公司 | 一种获取电子设备的固件代码的方法和装置 |
CN110083344A (zh) * | 2019-04-30 | 2019-08-02 | 北京金山安全软件有限公司 | 一种软件开发工具包修改方法、装置及电子设备 |
CN111414169A (zh) * | 2020-02-21 | 2020-07-14 | 苏州浪潮智能科技有限公司 | Bmc镜像升级方法及相关组件 |
CN111767056A (zh) * | 2020-06-29 | 2020-10-13 | Oppo广东移动通信有限公司 | 一种源码编译方法、可执行文件运行方法及终端设备 |
CN112068896A (zh) * | 2020-08-10 | 2020-12-11 | 珠海全志科技股份有限公司 | Dts修改的方法、装置及计算机可读存储介质 |
CN112130837A (zh) * | 2020-09-25 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种代码处理方法、装置及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140280271A1 (en) * | 2013-03-15 | 2014-09-18 | Intel Corporation | Instruction and logic for processing text strings |
US10929149B2 (en) * | 2014-11-11 | 2021-02-23 | Red Hat, Inc. | Method and system for updating firmware |
-
2021
- 2021-01-21 CN CN202110083378.2A patent/CN112732321B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005717A (zh) * | 2015-07-04 | 2015-10-28 | 深圳市乐迪电子有限公司 | Usbs固件升级及加密的方法 |
CN109240902A (zh) * | 2017-05-27 | 2019-01-18 | 腾讯科技(深圳)有限公司 | 一种获取电子设备的固件代码的方法和装置 |
CN109165034A (zh) * | 2018-08-31 | 2019-01-08 | 深圳大势智能科技有限公司 | 基于ota的pos机升级方法、装置、设备及存储介质 |
CN110083344A (zh) * | 2019-04-30 | 2019-08-02 | 北京金山安全软件有限公司 | 一种软件开发工具包修改方法、装置及电子设备 |
CN111414169A (zh) * | 2020-02-21 | 2020-07-14 | 苏州浪潮智能科技有限公司 | Bmc镜像升级方法及相关组件 |
CN111767056A (zh) * | 2020-06-29 | 2020-10-13 | Oppo广东移动通信有限公司 | 一种源码编译方法、可执行文件运行方法及终端设备 |
CN112068896A (zh) * | 2020-08-10 | 2020-12-11 | 珠海全志科技股份有限公司 | Dts修改的方法、装置及计算机可读存储介质 |
CN112130837A (zh) * | 2020-09-25 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种代码处理方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于CAN总线在线更新机制的设计与实现;冉晓蓉;杨志义;张凡;孙林;;计算机工程与科学(第01期);129-132 * |
Also Published As
Publication number | Publication date |
---|---|
CN112732321A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112732321B (zh) | 一种固件修改方法、装置、计算机可读存储介质和设备 | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
CN109145235B (zh) | 用于解析网页的方法、装置及电子设备 | |
CN111249736B (zh) | 代码处理方法及装置 | |
CN111309335B (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
CN113704706A (zh) | 代码加固方法、装置 | |
CN114327477A (zh) | 智能合约执行方法、装置、电子装置和存储介质 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN114610364A (zh) | 应用程序更新、应用程序开发方法、装置及计算机设备 | |
CN114911497A (zh) | 一种sdk升级方法、装置以及计算机设备 | |
CN108920179A (zh) | Java反射实现方法、装置和*** | |
CN113703779A (zh) | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 | |
CN111949303A (zh) | 升级包处理方法、装置、电子设备及存储介质 | |
CN107450937B (zh) | 一种应用程序的运行方法和运行装置 | |
CN117008920A (zh) | 引擎***、请求处理方法、装置、计算机设备及存储介质 | |
US7487227B2 (en) | Scripting engine having a sequencer table and a plurality of secondary tables for network communication software | |
CN109509467B (zh) | 代码生成方法及装置 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及*** | |
CN113721928B (zh) | 一种基于二进制分析的动态库裁剪方法 | |
CN115686589A (zh) | 实体类文件更新***、方法及相应计算机设备和存储介质 | |
US11789708B2 (en) | Compression of firmware updates | |
CN113849781B (zh) | Go语言源代码混淆方法、***、终端及存储介质 | |
CN113326063B (zh) | 数据处理方法、电子设备及存储介质 | |
CN111796832B (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 |