动态修改指令的方法、装置、电子设备及储存介质与流程

文档序号:30171291发布日期:2022-05-26 10:31阅读:181来源:国知局
动态修改指令的方法、装置、电子设备及储存介质与流程

1.本发明涉及通信技术领域,特别是涉及一种动态修改指令的方法、一种动态修改指令的装置、一种电子设备以及一种存储介质。


背景技术:

2.vxworks操作系统是一种嵌入式实时操作系统,它以其良好的操作性和实时性被广泛地应用在高精尖且实时性要求极高的技术领域。
3.一般而言,对于vxworks操作系统中运行的应用程序,可能需要对某程序执行测试任务,以测试该程序运行时的稳定性和功能覆盖性。通常,需要测试人员通过修改程序的执行指令对程序的运行情况进行测试。
4.然而,通常需要对某程序的源代码进行修改、编译、重新加载执行或者编译冗余的多份程序等步骤,才可以完成修改该程序的执行指令的过程,进而改变该程序的执行行为,以测试该程序的运行情况。可以看出,目前修改程序的执行指令的过程较为繁琐,导致修改的效率较低。


技术实现要素:

5.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种动态修改指令的方法,以提高修改程序的执行指令的效率。
6.相应的,本发明实施例还提供了一种动态修改指令的装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
7.为了解决上述问题,本发明实施例公开了一种动态修改指令的方法,其特征在于,应用于运行vxworks操作系统的电子设备,所述方法包括:
8.接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序;
9.响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指令;
10.根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集;
11.根据所述汇编指令集,确定待修改指令在所述内存中的目标地址;
12.将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
13.本发明实施例还公开了一种动态修改指令的装置,应用于运行vxworks操作系统的电子设备,所述装置包括:
14.接收模块,用于接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序;
15.查找模块,用于响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指令;
16.反汇编模块,用于根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集;
17.确定模块,用于根据所述汇编指令集,确定待修改指令在所述内存中的目标地址;
18.修改模块,用于将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
19.本发明实施例还公开了一种电子设备,所述电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
20.接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序;
21.响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指令;
22.根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集;
23.根据所述汇编指令集,确定待修改指令在所述内存中的目标地址;
24.将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
25.本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的动态修改指令的方法。
26.本发明实施例包括以下优点:
27.本发明实施例能够响应于所述第一命令,根据所述第一命令中携带的目标程序的程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,进而可以根据所述入口地址对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集,并在所述汇编指令集中定位待修改指令在内存中的目标地址,从而将所述目标地址存储的待修改指令修改为目标指令。所述目标程序为所述电子设备中运行的且包含待修改指令的程序,通过本发明实施例,可以动态修改目标程序的指令,不用对目标程序源代码进行修改、编译、重新加载等操作,简化了将所述待修改指令修改为目标指令的步骤,从而可以提高修改程序的执行指令的效率,减少修改指令过程中的空间占用率。
附图说明
28.图1是本发明的一种动态修改指令方法实施例的步骤流程图;
29.图2是本发明的一种动态修改指令装置实施例的结构框图;
30.图3是根据一示例性实施例示出的一种用于动态修改指令的电子设备的结构框图。
具体实施方式
31.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
32.方法实施例
33.参照图1,示出了本发明的一种动态修改指令方法实施例的步骤流程图,应用于运行vxworks操作系统的电子设备,所述方法具体可以包括如下步骤:
34.步骤101,接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序。
35.本发明实施例可应用于运行vxworks操作系统的电子设备。所述电子设备包括但不限于:服务器、智能手机、录音笔、平板电脑、电子书阅读器、mp3(动态影像专家压缩标准音频层面3,moving picture experts group audio layer iii)播放器、mp4(动态影像专家压缩标准音频层面4,moving picture experts group audio layer iv)播放器、膝上型便携计算机、车载电脑、台式计算机、机顶盒、智能电视机、可穿戴设备等等。
36.在本发明实施例的一个示例中,所述电子设备可以为配置有龙芯处理器的龙芯平台,优选的,所述处理器可以是龙芯系列处理器,如:龙芯1号、龙芯2号或者龙芯3号等,本发明实施例对所述处理器的类型不加以限制。
37.在vxworks操作系统中,如果技术人员需要修改某程序的执行指令,通常需要对该程序的源代码进行重新编译、修改、重新加载执行然后再进行编译冗余的多份程序等步骤,显然,现有技术修改程序执行指令的方案存在难度高、耗时长、不灵活、浪费内存空间等技术问题。尤其是在本领域技术人员对程序执行测试任务时,如:通过修改程序的执行指令来测试程序运行的稳定性和功能覆盖性时,上述存在的技术问题会极大地降低测试效率,降低测试结果的准确性并耗费大量人力物力成本。因此,本发明提供了一种动态修改指令的方法,以克服上述技术问题。
38.在本发明实施例中,将需要修改执行指令的程序称为目标程序,也即,目标程序为所述电子设备中运行的且包含待修改指令的程序。
39.当本领域技术人员需要对目标程序的指令进行修改时,可以在所述运行vxworks操作系统的电子设备端输入第一命令,所述第一命令可以是vxworks操作系统中的系统命令,如lkaddr命令,并且将目标程序的程序标识作为lkaddr命令的参数。所述接收第一命令可以是接收携带有目标程序的程序标识的lkaddr命令。
40.步骤102,响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指令。
41.可选的,所述执行指令包括:操作数逻辑计算、条件转移、顺序执行以及调用非目标程序中任意一种或多种指令。
42.所述目标程序指的是在电子设备中运行的且包含待修改指令的程序,目标程序可以是为了让电子设备执行某些操作或者解决某个问题而编写的一系列有序指令的集合,通过一条或多条指令可以实现某个执行行为,在进行目标程序的设计时,编写一个包含若干条指令的小程序就能执行一个简单的行为,如a程序用于执行操作数逻辑计算、b程序用于顺序执行、c程序用于调用a程序(所述a程序为非目标程序),将多个小程序拼装起来可以执
行复杂的行为,如目标程序可以为拼装上述abc程序得到的有序指令的集合,则目标程序先执行操作数逻辑计算行为,再顺序执行,最后执行调用a程序。所述多个小程序合称为目标函数,所述目标函数中包含所述目标程序的执行指令,能够控制所述目标程序的执行行为。
43.vxworks操作系统响应于所述携带有目标程序的程序标识的第一命令,可以显示内存中所述目标函数的符号表,并在内存中的所述符号表中查找所述目标函数的入口地址。所述符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构,在符号表中,函数的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址,通过查找符号表可以得到目标函数的入口地址,所述入口地址即为函数在内存中的起始地址。
44.例如,目标程序的程序标识为addrtest,响应于第一命令:lkaddr addrtest,显示内存中所述目标程序对应的目标函数的符号表:
[0045][0046][0047]
由此,通过查询所述符号表可以得到所述目标函数的入口地址为0xc0243370。
[0048]
步骤103,根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集。
[0049]
由于目标函数中的指令在内存中是以二进制编码的形式存储的,因此,为了能够在内存中查找到目标函数中的待修改指令对应的目标地址,本发明实施例对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集,进而可以在所述汇编指令集中查找待修改指令对应的目标地址。
[0050]
可选的,所述步骤103包括:
[0051]
将所述目标函数的入口地址输入ejtag(enhanced joint test action group)工具,通过所述ejtag工具对所述目标函数的二进制编码进行反汇编,得到所述目标函数对应的汇编指令集。ejtag工具是一个硬件/软件子系统,在处理器内部实现了一套基于硬件的调试特性,用于支持片上调试。
[0052]
所述反汇编是指将函数的二进制编码转化为汇编编码的过程,也可以说是把机器语言代码转换为汇编语言代码的过程,通过对目标函数进行反汇编,能够将内存中存储的目标函数的二进制编码转换为以汇编语言代码为形式的汇编指令集,即,将可执行的目标程序转换为可阅读的汇编语言,通过将二进制编码转换为汇编指令可以确定待修改指令对应的目标地址。
[0053]
需要说明的是,本发明所采用的反汇编工具一般指ejtag工具,还可以是其他反汇编工具,如idapro、w32dasm等。通过ejtag工具中的disas命令,从所述目标函数的入口地址处开始执行反汇编操作。
[0054]
步骤104,根据所述汇编指令集,确定待修改指令在所述内存中的目标地址。
[0055]
可选的,所述步骤104包括:
[0056]
步骤1041,根据所述待修改指令包含的关键字,确定所述待修改指令中的特征参数。
[0057]
在本发明的一个示例中,假设待修改指令为“if(data《0xf000)”,目标指令为“if(data》0x10)”,也即,需要将目标函数中的指令“if(data《0xf000)”动态修改为“if(data》0x10)”。需要说明的是,本发明实施例对目标程序的编程语言的种类不加以限制。本示例中以c++语言为例,待修改指令“if(data《0xf000)”和目标指令“if(data》0x10)”均为c++语言编写的指令。
[0058]
为了能够在目标函数对应的汇编指令集中查找到待修改指令对应的汇编指令,本发明实施例在所述待修改指令中确定特征参数,通过在所述汇编指令集中匹配该特征参数,查找待修改指令对应的汇编指令。
[0059]
在本发明实施例中,可以根据待修改指令中包含的关键字来确定特征参数,所述关键字包括但不限于立即数、运算符、操作数等,可以将待修改指令中包含的至少一个关键字作为特征参数。例如,对于待修改指令“if(data《0xf000)”,该指令中包含运算符“if”、操作数“data”、运算符“《”、以及立即数“0xf000”。一个示例中,可以确定该指令的特征参数为“data《0xf000”,该特征参数“data《0xf000”表示操作数data的值小于0xf000。可以理解,也可以将“《0xf000”作为特征参数,或者,将“if(data《0xf000)”作为特征参数等。
[0060]
步骤1042,在所述汇编指令集中匹配所述特征参数,得到包含所述特征参数的第一汇编指令。
[0061]
在所述汇编指令集中通过匹配所述特征参数,可以定位得到包含所述特征参数的第一汇编指令,例如对于待修改的c++指令“if(data《0xf000)”,根据其中的特征参数“data《0xf000”能够在汇编指令集中定位得到与该特征参数相匹配的第一汇编指令。
[0062]
例如,待修改指令“if(data《0xf000)”对应的二进制编码反汇编后得到的汇编指令如下:
[0063]
0xffffffffc0243388:3402efff li v0,0xefff
[0064]
0xffffffffc024338c:0043102b sltu v0,v0,v1
[0065]
0xffffffffc0243390:1440003b bnez v0,c04ce010
[0066]
在所述目标函数对应的汇编指令集中匹配特征参数“data《0xf000”,由于0xefff为0xf000的值减1,因此0xefff小于0xf000,可以确定0xefff与特征参数“data《0xf000”相匹配,进而可以在汇编指令集中确定包含特征参数“data《0xf000”的第一汇编指令为:0xffffffffc0243388:3402efff li v0,0xefff。
[0067]
步骤1043,获取所述第一汇编指令在所述内存中的第一地址。
[0068]
从定位得到的所述第一汇编指令中可以获取所述第一汇编指令在内存中的第一地址,如上述示例中得到的第一汇编指令为:0xffffffffc0243388:3402efff li v0,0xefff,该指令在内存中的第一地址为0xc0243388。
[0069]
步骤1044,根据所述目标函数的入口地址以及所述第一地址,确定所述待修改指令在所述内存中的目标地址。
[0070]
在具体应用中,一条c++指令通常对应多条汇编指令。例如,在上述示例中,待修改指令“if(data《0xf000)”对应三条汇编指令。因此,在确定包含所述特征参数的第一汇编指
令之后,可以根据第一汇编指令的第一地址,以及所述待修改指令对应的汇编指令的指令数,确定待修改指令对应的所有汇编指令。
[0071]
因为待修改指令对应的所有汇编指令通常在第一汇编指令的前后位置,因此,根据所述目标函数的入口地址以及所述第一地址,能够确定所述待修改指令对应的所有汇编指令在内存中的目标地址。
[0072]
可选的,所述步骤1044包括:
[0073]
步骤a1,确定所述待修改指令对应的汇编指令条数。
[0074]
例如,在上述示例中,对待修改指令“if(data《0xf000)”对应的二进制编码进行反汇编后可以得到上述3条汇编指令,则可以确定待修改指令“if(data《0xf000)”对应的汇编指令条数为3条。
[0075]
步骤a2,根据所述第一汇编指令和所述汇编指令条数,在所述汇编指令集中确定第二汇编指令。
[0076]
例如,待修改指令“if(data《0xf000)”对应的二进制编码反汇编后得到的汇编指令如下:
[0077]
0xffffffffc0243388:3402efff li v0,0xefff
[0078]
0xffffffffc024338c:0043102b sltu v0,v0,v1
[0079]
0xffffffffc0243390:1440003b bnez v0,c04ce010
[0080]
对待修改指令“if(data《0xf000)”对应的二进制编码进行反汇编可以得到上述三条汇编指令,第一汇编指令指的是待修改指令对应的所有汇编指令中包含特征参数的汇编指令,第二汇编指令指的是待修改指令对应的所有汇编指令中除了第一汇编指令外的其他汇编指令。在上述示例中,第一汇编指令为:0xffffffffc0243388:3402efff li v0,0xefff。根据该第一汇编指令和待修改指令“if(data《0xf000)”对应的汇编指令条数,可以在目标函数的汇编指令集中确定第二汇编指令。由于待修改指令“if(data《0xf000)”对应的汇编指令条数为3条,而第一汇编指令为上述3条汇编指令中的第一条,因此可以确定第二汇编指令为上述3条汇编指令中的其余两条,也即,第二汇编指令包括:0xffffffffc024338c:0043102b sltu v0,v0,v1和0xffffffffc0243390:1440003b bnez v0,c04ce010。
[0081]
步骤a3,获取所述第二汇编指令在所述内存中的第二地址。
[0082]
如上例所示,第二汇编指令包括:0xffffffffc024338c:0043102b sltu v0,v0,v1和0xffffffffc0243390:1440003b bnez v0,c04ce010,则所述第二汇编指令在所述内存中的第二地址为0xc024338c和0xc0243390。
[0083]
步骤a4,根据所述第一地址和所述第二地址,确定所述待修改指令在所述内存中的起始地址和终止地址。
[0084]
如上例所示,待修改指令“if(data《0xf000)”对应的汇编指令的第一地址为0xc0243388,第二地址包括0xc024338c和0xc0243390,可以确定该待修改指令在内存中的起始地址为0xc0243388,终止地址为0xc0243390。
[0085]
步骤a5,根据所述起始地址和所述终止地址,确定所述待修改指令在所述内存中的目标地址。
[0086]
根据所述起始地址和所述终止地址,可知所述待修改指令对应的汇编指令为:
[0087]
0xffffffffc0243388:3402efff li v0,0xefff
[0088]
0xffffffffc024338c:0043102b sltu v0,v0,v1
[0089]
0xffffffffc0243390:1440003b bnez v0,c04ce010
[0090]
所述待修改指令在所述内存中的目标地址包括:0xc0243388、0xc024338c、0xc0243390。
[0091]
步骤105,将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
[0092]
根据所述待修改指令中的格式和大小信息,以及汇编指令手册,将目标地址存储的待修改指令对应的二进制编码修改为目标指令对应的二进制编码。可选的,当所述待修改指令的个数为多个时,则逐一修改所有所述待修改指令。
[0093]
针对上述示例中的待修改指令“if(data《0xf000)”,其对应的目标指令为“if(data》0x10)”,该目标指令对应的汇编指令如下:
[0094]
0xffffffffc0243388:34020011li v0,0x11
[0095]
0xffffffffc024338c:0062102b sltu v0,v1,v0
[0096]
0xffffffffc0243390:1440003b bnez v0,c04ce010
[0097]
可选的,步骤105包括:
[0098]
步骤1051,确定目标指令对应的二进制编码。
[0099]
步骤1052,响应于第二命令,将所述目标地址存储的待修改指令的二进制编码,修改为所述目标指令对应的二进制编码。
[0100]
在具体应用中,程序的指令是以二进制编码的形式存储的,因此,将待修改指令修改为目标指令的过程可以为:将目标地址存储的待修改指令的二进制编码,修改为所述目标指令对应的二进制编码。
[0101]
在本发明实施例中,目标指令对应的二进制编码可以预先存储在内存中的指定位置,在需要将目标地址存储的待修改指令的二进制编码修改为目标指令对应的二进制编码时,可以从内存中的指定位置读取目标指令对应的二进制编码,并写入目标地址,以实现将目标地址存储的待修改指令的二进制编码修改为所述目标指令对应的二进制编码。
[0102]
当然,在具体实施中,目标指令对应的二进制编码还可以通过第二命令直接写入目标地址,所述第二命令为用于向内存中指定地址写入内容的命令。例如,所述第二命令可以为vxworks操作系统中的拷贝命令、m命令等。以m命令为例,m命令具体如下:m addr,[width]。该命令表示按width宽度修改addr地址的内容。利用vxwork系统中提供的m命令可以将0x34020011、0x62102b、以及1440003b分别写入地址0xc0243388、0xc024338c、以及0xc0243390中,以实现将目标程序中的待修改指令“if(data《0xf000)”修改为目标指令“if(data》0x10)”。
[0103]
可选地,由于上述示例中待修改指令和目标指令对应的汇编指令中的第三条汇编指令相同,也即1440003b与0xc0243390地址对应的汇编指令相同,因此,可以只修改前两条汇编指令,也即,利用vxworks操作系统中提供的m命令将0x34020011和0x62102b分别写入地址0xc0243388和0xc024338c中。
[0104]
可选的,所述将所述目标地址存储的待修改指令修改为目标指令之前,所述方法还包括:
[0105]
步骤b1,检测所述目标程序是否处于运行状态。
[0106]
步骤b2,在所述目标程序与处于运行状态的情况下,暂停所述目标程序的运行,使得所述目标程序处于未运行状态。
[0107]
可选的,所述将所述目标地址存储的待修改指令修改为目标指令,包括:
[0108]
在所述目标程序处于未运行状态的情况下,将所述目标地址存储的待修改指令修改为目标指令。
[0109]
可选地,所述将所述目标地址存储的待修改指令修改为目标指令之后,所述方法还可以包括:运行修改后的目标程序。
[0110]
通过本发明的上述方法可以灵活的将待修改指令动态修改为目标指令,修改完成之后通过运行目标程序即可改变目标程序的执行行为。因此,本发明能够在不需要对目标程序的源代码进行重新编译、修改、重新加载执行等步骤的情况下,可以快速的动态改变目标程序的执行行为。
[0111]
需要说明的是,本发明实施修改的过程中所述目标程序处于停止运行的状态,因此,在修改之前需要检测所述目标程序是否处于运行状态,在所述目标程序与处于运行状态的情况下,可以暂停所述目标程序的运行,并且在将目标程序中的待修改指令修改为目标指令之后,继续执行所述目标程序,以使所述目标程序执行所述目标指令。
[0112]
综上,本发明实施例能够响应于所述第一命令,根据所述第一命令中携带的目标程序的程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,进而可以根据所述入口地址对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集,并在所述汇编指令集中定位待修改指令在内存中的目标地址,从而将所述目标地址存储的待修改指令修改为目标指令。所述目标程序为所述电子设备中运行的且包含待修改指令的程序,通过本发明实施例,可以动态修改目标程序的指令,不用对目标程序源代码进行修改、编译、重新加载等操作,简化了将所述待修改指令修改为目标指令的步骤,从而可以提高修改程序的执行指令的效率,减少修改指令过程中的空间占用率。
[0113]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0114]
装置实施例
[0115]
参照图2,示出了本发明的一种动态修改指令装置实施例的结构框图,应用于运行vxworks操作系统的电子设备,所述装置具体可以包括如下模块:
[0116]
接收模块201,用于接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序;
[0117]
查找模块202,用于响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指令;
[0118]
反汇编模块203,用于根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集;
[0119]
确定模块204,用于根据所述汇编指令集,确定待修改指令在所述内存中的目标地址;
[0120]
修改模块205,用于将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
[0121]
可选的,所述确定模块204,包括:
[0122]
第一确定子模块,用于根据所述待修改指令包含的关键字,确定所述待修改指令中的特征参数;
[0123]
匹配子模块,用于在所述汇编指令集中匹配所述特征参数,得到包含所述特征参数的第一汇编指令;
[0124]
获取子模块,用于获取所述第一汇编指令在所述内存中的第一地址;
[0125]
第二确定子模块,用于根据所述目标函数的入口地址以及所述第一地址,确定所述待修改指令在所述内存中的目标地址。
[0126]
可选的,所述第二确定子模块,包括:
[0127]
第一确定单元,用于确定所述待修改指令对应的汇编指令条数;
[0128]
第二确定单元,用于根据所述第一汇编指令和所述汇编指令条数,在所述汇编指令集中确定第二汇编指令;
[0129]
获取单元,用于获取所述第二汇编指令在所述内存中的第二地址;
[0130]
第三确定单元,用于根据所述第一地址和所述第二地址,确定所述待修改指令在所述内存中的起始地址和终止地址;
[0131]
第四确定单元,用于根据所述起始地址和所述终止地址,确定所述待修改指令在所述内存中的目标地址。
[0132]
可选的,所述修改模块205,包括:
[0133]
第三确定子模块,用于确定目标指令对应的二进制编码;
[0134]
修改二进制编码子模块,用于响应于第二命令,将所述目标地址存储的待修改指令的二进制编码,修改为所述目标指令对应的二进制编码。
[0135]
可选的,所述装置还包括:
[0136]
检测模块,用于检测所述目标程序是否处于运行状态;
[0137]
暂停模块,用于在所述目标程序与处于运行状态的情况下,暂停所述目标程序的运行,使得所述目标程序处于未运行状态;
[0138]
可选的,所述修改模块205,包括:
[0139]
修改子模块,用于在所述目标程序处于未运行状态的情况下,将所述目标地址存储的待修改指令修改为目标指令。
[0140]
可选的,所述反汇编模块203,包括:
[0141]
反汇编子模块,用于将所述目标函数的入口地址输入ejtag工具,通过所述ejtag工具对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集。
[0142]
可选的,所述执行指令包括:操作数逻辑计算、条件转移、顺序执行以及调用非目标程序中任意一项或多项指令。
[0143]
综上,本发明实施例能够响应于所述第一命令,根据所述第一命令中携带的目标程序的程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的
入口地址,进而可以根据所述入口地址对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集,并在所述汇编指令集中定位待修改指令在内存中的目标地址,从而将所述目标地址存储的待修改指令修改为目标指令。所述目标程序为所述电子设备中运行的且包含待修改指令的程序,通过本发明实施例,可以动态修改目标程序的指令,不用对目标程序源代码进行修改、编译、重新加载等操作,简化了将所述待修改指令修改为目标指令的步骤,从而可以提高修改程序的执行指令的效率,减少修改指令过程中的空间占用率。
[0144]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0145]
本发明实施例提供了一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序;响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指令;根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集;根据所述汇编指令集,确定待修改指令在所述内存中的目标地址;将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
[0146]
图3是根据一示例性实施例示出的一种用于动态修改指令的电子设备300的结构框图。例如,电子设备300可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0147]
参照图3,电子设备300可以包括以下一个或多个组件:处理组件302,存储器304,电源组件306,多媒体组件308,音频组件310,输入/输出(i/o)的接口312,传感器组件314,以及通信组件316。
[0148]
处理组件302通常控制电子设备300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件302可以包括一个或多个处理器320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件302可以包括一个或多个模块,便于处理组件302和其他组件之间的交互。例如,处理部件302可以包括多媒体模块,以方便多媒体组件308和处理组件302之间的交互。
[0149]
存储器304被配置为存储各种类型的数据以支持在设备300的操作。这些数据的示例包括用于在电子设备300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0150]
电力组件304为电子设备300的各种组件提供电力。电力组件304可以包括电源管理系统,一个或多个电源,及其他与为电子设备300生成、管理和分配电力相关联的组件。
[0151]
多媒体组件308包括在所述电子设备300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸
传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件308包括一个前置摄像头和/或后置摄像头。当电子设备300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0152]
音频组件310被配置为输出和/或输入音频信号。例如,音频组件310包括一个麦克风(mic),当电子设备300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器304或经由通信组件316发送。在一些实施例中,音频组件310还包括一个扬声器,用于输出音频信号。
[0153]
i/o接口312为处理组件302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0154]
传感器组件314包括一个或多个传感器,用于为电子设备300提供各个方面的状态评估。例如,传感器组件314可以检测到设备300的打开/关闭状态,组件的相对定位,例如所述组件为电子设备300的显示器和小键盘,传感器组件314还可以检测电子设备300或电子设备300一个组件的位置改变,用户与电子设备300接触的存在或不存在,电子设备300方位或加速/减速和电子设备300的温度变化。传感器组件314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件314还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0155]
通信组件316被配置为便于电子设备300和其他设备之间有线或无线方式的通信。电子设备300可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信部件314经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件314还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0156]
在示例性实施例中,电子设备300可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0157]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器304,上述指令可由电子设备300的处理器320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0158]
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种动态修改指令的方法,所述方法包括:
[0159]
接收第一命令,所述第一命令中携带有目标程序的程序标识,所述目标程序为所述电子设备中运行的且包含待修改指令的程序;
[0160]
响应于所述第一命令,根据所述程序标识,在所述vxworks操作系统的内存中查找所述目标程序对应的目标函数的入口地址,所述目标函数中包含所述目标程序的执行指
令;
[0161]
根据所述目标函数的入口地址,对所述目标函数进行反汇编,得到所述目标函数对应的汇编指令集;
[0162]
根据所述汇编指令集,确定待修改指令在所述内存中的目标地址;
[0163]
将所述目标地址存储的待修改指令修改为目标指令,以使所述目标程序执行所述目标指令。
[0164]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0165]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0166]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0167]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0168]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0169]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0170]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0171]
以上对本发明所提供的一种动态修改指令方法和装置、一种电子设备以及一种储
存介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1