一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

机器码的反汇编系统、反汇编方法、计算机设备及存储介质与流程

2022-06-08 10:58:34 来源:中国专利 TAG:
1.本发明涉及计算机
技术领域
:,更具体地,涉及机器码的反汇编系统、反汇编方法、计算机设备及存储介质。
背景技术
::2.机器语言(machinelanguage)是一种指令集的体系,这种指令集称为机器码(machinecode),也可称为机器指令(machineinstructions)是计算机的中央处理器(centralprocessingunit,可简称为cpu)能直接识别并执行的数据指令。机器码通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。3.由于二进制机器码是为机器设计的,并不能轻易得被人类所理解,但是如果将其反汇编为相应cpu架构的汇编指令,则易读性大大提高。在现有技术中,对于不同的cpu架构,需要采用不同的反汇编工具来对其使用的机器码进行反汇编。技术实现要素:4.鉴于上述问题,本发明的目的在于提供一种机器码的反汇编系统、反汇编方法、计算机设备及存储介质。5.根据本发明的第一方面,提供一种机器码的反汇编系统,包括:代码输入模块,其配置为接收待处理的机器码;文件生成模块,其配置为根据所述机器码和预定义格式的可执行文件生成反汇编文件,所述可执行文件包括文件头、代码段节区和描述节区的代码段节区头;反汇编模块,其配置为利用预设反汇编器对所述反汇编文件进行反汇编处理,以获得对应所述机器码的汇编指令。6.可选的,所述文件生成模块,其配置为:转换所述机器码的格式,生成对应的字符串;根据所述字符串更新所述文件头、所述代码段节区和所述代码段节区头,获得反汇编文件,其中,将所述字符串存放于所述反汇编文件的代码段节区中。7.可选的,所述文件生成模块,其配置为:对所述机器码进行预处理,去除所述机器码包含的部分指示和符号;以及将预处理后的所述机器码转化为相应的所述字符串,所述字符串为十六进制形式。8.可选的,所述文件生成模块,其配置为:将所述字符串插入所述代码段节区;以及根据所述字符串的长度更新所述文件头和所述代码段节区头的文件位置。9.根据本发明的第二方面,提供一种机器码的反汇编方法,包括:接收待处理的机器码;根据所述机器码和预定义格式的可执行文件生成反汇编文件,所述可执行文件包括文件头、代码段节区和描述节区的代码段节区头;利用预设反汇编器对所述反汇编文件进行反汇编处理,以获得对应所述机器码的汇编指令。10.可选的,根据所述机器码和预定义格式的可执行文件生成反汇编文件包括:转换所述机器码的格式,生成对应的字符串;根据所述字符串更新所述文件头、所述代码段节区和所述代码段节区头,获得反汇编文件,其中,将所述字符串存放于所述反汇编文件的代码段节区中。11.可选的,转换所述机器码的格式,生成对应的字符串包括:对所述机器码进行预处理,去除所述机器码包含的部分指示和符号;以及将预处理后的所述机器码转化为相应的所述字符串,所述字符串为十六进制形式。12.可选的,根据所述字符串更新所述文件头、所述代码段节区和所述代码段节区头包括:将所述字符串插入所述代码段节区;以及根据所述字符串的长度更新所述文件头和所述代码段节区头的文件位置。13.根据本发明提供的第三方面,提供一种计算机设备,包括:14.一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个计算机程序配置用于执行如上所述的机器码的反汇编方法。15.根据本发明提供的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行如上所述的机器码的反汇编方法。16.本发明提供的机器码的反汇编系统、反汇编方法、计算机设备及存储介质,可以对任意的机器码反汇编为汇编指令,方便了汇编语言工作者的工作(如编译器验证、逆向工程等),大大节省了工作量,对汇编语言学习者也大有帮助。附图说明17.通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:18.图1示出了根据本发明第一实施例的机器码的反汇编系统的框图;19.图2示出了根据本发明第二实施例的机器码的反汇编系统的框图;20.图3示出了根据本发明实施例的可执行文件的示意图;21.图4示出了根据本发明实施例的机器码的反汇编方法的流程图;22.图5示出了根据本发明实施例的计算机设备的框图。具体实施方式23.以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。24.附图中的流程图、框图图示了本发明实施例的方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。25.在计算机系统中,机器语言是计算机的cpu能直接识别的唯一一种语言,所有软件程序都需要最终翻译为机器码,由cpu来逐条地执行对应的机器码,从而实现软件的实时运行。每一种cpu架构都有自己的指令集,例如x86、arm、mips、riscv等,机器码与cpu架构紧密相关,不同类型的cpu架构所对应的机器码也就不同,而且它们的指令系统往往相差很大。26.由于二进制机器码是为机器设计的,并不能轻易地被人类所理解,但是如果将其反汇编为相应cpu架构的汇编指令,则易读性大大提高。然而,对于传统的反汇编工具而言,并不能直接将任意的机器码反汇编为汇编指令,而是必须要基于特定的文件格式。以linux环境下的objdump工具为例,它只能处理elf格式的文件。如果去自己手动实现一个反汇编器,则需要能处理所有的机器码,当目标平台的汇编指令数目非常庞大时,所需要的人力投入也将非常可观。27.为此,本技术的发明人设计了一种机器码的反汇编系统、反汇编方法、计算机设备及存储介质,可以对任意的机器码反汇编为汇编指令,方便了汇编语言工作者的工作(如编译器验证、逆向工程等),大大节省了工作量,对汇编语言学习者也大有帮助。28.下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。29.图1示出了根据本发明第一实施例的机器码的反汇编系统的框图。30.如图1所示,机器码的反汇编系统100包括:代码输入模块110、文件生成模块120以及反汇编模块130。31.代码输入模块110配置为接收待处理的机器码。32.文件生成模块120连接至代码输入模块110以接收待处理的机器码,其配置为根据机器码和预定义格式的可执行文件生成反汇编文件,可执行文件包括文件头、代码段节区和描述节区的代码段节区头。33.具体的,文件生成模块120在接收到机器码之后,转换机器码的格式,生成与机器码对应的字符串,并根据字符串更新文件头、代码段节区和代码段节区头,获得反汇编文件,其中,将字符串存放于反汇编文件的代码段节区中。例如,文件生成模块120将字符串插入可执行文件的代码段节区,并根据字符串的长度更新可执行文件的文件头和代码段节区头的文件位置,从而获得了反汇编文件。34.可选的,在文件生成模块120转换机器码的格式之前,对机器码进行预处理,去除机器码包含的部分指示和符号,之后,将预处理后的机器码转化为相应的字符串,字符串为十六进制形式。35.反汇编模块130连接至文件生成模块120以接收反汇编文件,其配置为利用预设反汇编器对反汇编文件进行反汇编处理,以获得对应机器码的汇编指令。36.在本发明实施例中,根据机器码和预定义格式的可执行文件生成反汇编文件,生成的反汇编文件的格式与预定义格式的可执行文件的格式一致,再利用预设反汇编器对反汇编文件进行反汇编处理,可以将任意cpu架构中的机器码反汇编为汇编指令,方便了汇编语言工作者的工作(如编译器验证、逆向工程等),大大节省了工作量,对汇编语言学习者也大有帮助。37.在本实施例中,预定义格式的可执行文件可以与例如可执行与可链接格式(executableandlinkableformat,elf)文件、hex文件、pyd文件、bin文件等相同或类似,预设反汇编器可以对相应的预定义格式的可执行文件进行反汇编。38.下面对本发明实施例的预定义格式的可执行文件进行详细描述。39.图2示出了根据本发明第二实施例的机器码的反汇编系统的框图;图3示出了根据本发明实施例的可执行文件的示意图。40.可执行文件可以是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。该可执行文件由4部分组成,分别是文件头(header)、程序头表(programheadertable)、节区(section)和节区头(sectionheadertable)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必完全如图3所示这样安排,只有文件头的位置是固定的,其余各部分的位置、大小等信息由文件头中的各项值来决定。41.如图2所示,机器码的反汇编系统100包括:代码输入模块110、文件生成模块120以及反汇编模块130。代码输入模块110和反汇编模块130可参见图1,在此不再赘述其相同之处。在该实施例中,文件生成模块120包括可执行文件单元121、格式转换单元122以及反汇编文件单元123。当该机器码的反汇编系统100是针对riscv架构来设置时,可以将任意机器码反汇编为符合riscv指令的汇编指令。42.可执行文件单元121构建预定义格式的可执行文件,即,初始可执行文件,初始可执行文件包括文件头、代码段节区和代码段节区头。可执行文件单元121构建的初始可执行文件可以参见图3。43.请参见图3,当预定义格式的可执行文件与elf文件格式相类似时,可执行文件单元121构建的初始可执行文件包括elf文件头、多个节区和描述节区的节区头。elf文件头的长度通常是64字节,其包含该elf文件共包含的节区头数量,以及节区头的位置等信息。节区头对应于字符串名表,该表给出了各个节区头的字符串名称。在该示例中,构建了null节区头、代码段节区头、数据段节区头、.bss段节区头和.shstrtab的节区头,虽然各个节区头定义了5个节区,但是只有代码段节区和数据段节区可以占用内存空间,在实际操作中,只有代码段节区会进行数据插入而占用内存空间,数据段节区并不进行数据存储从而不占用内存空间。44.在构建的初始elf文件中,null节区头为固定内容填充,无实际意义;代码段节区头所描述的代码段节区(.txt节区)用于存放elf文件的可执行的机器码;数据段节区头描述的数据段节区(.data节区)通常存放程序预定义好值的数据区,但由于实际上只有机器码的部分对后续反汇编过程有用,所以实际的数据段节区并没有占用内存空间;bss段节区头通常存放未初始化的数据区,但不占elf文件的内存空间;.shstrtab节区头用于描述节区头字符串名表。可以理解,虽然节区头里定义了5个节区,但只有代码段节区头和.shstrtab节区头会占用内存空间。45.格式转换单元122对机器码进行格式转换,以获得表征机器码的字符串。格式转换单元122对机器码进行预处理,以去除机器码包含的部分指示和符号,并将预处理后的机器码转化为相应的字符串,字符串为十六进制形式。46.反汇编文件单元123的两个输入端分别连接至可执行文件单元121和格式转换单元122,根据字符串更新文件头、代码段节区和代码段节区头,以获得反汇编文件,字符串存放于反汇编文件的代码段节区。反汇编文件单元123被配置为:将字符串插入初始elf文件的代码段节区,以更新代码段节区;根据字符串的长度更新初始elf文件的文件头和代码段节区头的文件位置;以及将更新后的文件头、代码段节区和代码段节区头按照预定顺序写入空elf文件,从而获得反汇编文件。反汇编文件的结构也可以参见图3,只是至少对其中的文件头、代码段节区和代码段节区头进行了更新。47.在该实施例中,反汇编模块130连接至反汇编文件单元123,利用预设反汇编器对反汇编文件进行反汇编处理,以获得表征机器码的汇编指令。基于机器码的反汇编系统100所处的cpu架构,反汇编模块130可装配有不同的反汇编工具。48.可选的,预设反汇编器所配置的反汇编工具选自objdump工具、hopperdisassemble工具和ida工具中的至少一个。例如,对于intel/amd架构,可以使用静态反汇编工具hopperdisassemble工具和ida工具对反汇编文件进行反汇编处理;对于32位arm架构,ida工具与hopperdisassemble工具都可以对反汇编文件进行反汇编处理;对于64位arm架构,hopperdisassemble工具和idapro工具可以对反汇编文件进行反汇编处理;对于riscv架构,objdump工具可以对反汇编文件进行反汇编处理,同时可以结合readelf工具来解析elf文件。在一些实施例中,上述多种反汇编工具可以一起结合使用。49.在该实施例中,反汇编文件单元123根据机器码和预定义格式的可执行文件生成反汇编文件,生成的反汇编文件的格式与预定义格式的可执行文件的格式一致,再利用反汇编模块130提供的预设反汇编器对反汇编文件进行反汇编处理,可以将任意cpu架构中的机器码反汇编为汇编指令,方便了汇编语言工作者的工作(如编译器验证、逆向工程等),大大节省了工作量,对汇编语言学习者也大有帮助。50.图4示出了根据本发明实施例的机器码的反汇编方法的流程图。51.如图4所示,该机器码的反汇编方法包括步骤s1-s3。52.在步骤s1中,接收待处理的机器码。在本发明实施例中,机器码可以是任意cpu架构中使用的机器码,例如是x86、arm、mips、riscv等架构中使用的机器码,本发明实施例可以对任意的机器码进行反汇编。53.在步骤s2中,根据机器码和预定义格式的可执行文件生成反汇编文件,可执行文件包括文件头、代码段节区和描述节区的代码段节区头。在该步骤中,生成的反汇编文件的格式与预定义格式的可执行文件的格式一致,且反汇编文件中的至少一部分字段包含表征机器码的字符串。54.可选的,根据机器码和预定义格式的可执行文件生成反汇编文件包括:转换机器码的格式,生成对应的字符串;根据字符串更新文件头、代码段节区和代码段节区头,获得反汇编文件,其中,将字符串存放于反汇编文件的代码段节区中。55.可选的,转换机器码的格式,生成对应的字符串包括:对机器码进行预处理,去除机器码包含的部分指示和符号;以及将预处理后的机器码转化为相应的字符串,字符串为十六进制形式。56.可选的,根据字符串更新文件头、代码段节区和代码段节区头包括:将字符串插入代码段节区;以及根据字符串的长度更新文件头和代码段节区头的文件位置。在该步骤中,由于插入表征机器码的字符串的长度可为任意大小,因此需要对初始可执行文件(例如类似elf文件)中涉及位置参数的关键字段进行相应得适配,从而支持反汇编工具(objdump工具)能够正确得解析反汇编文件,可以反汇编出汇编指令。57.在步骤s3中,利用预设反汇编器对反汇编文件进行反汇编处理,以获得对应机器码的汇编指令。在该步骤中,预设反汇编器是根据预定义格式的可执行文件配置的,例如,当预定义格式的可执行文件是类似elf文件时,预设反汇编器基于objdump工具对反汇编文件进行反汇编。58.可选的,预设反汇编器所配置的反汇编工具选自objdump工具、hopperdisassemble工具和ida工具中的至少一个。例如,对于intel/amd架构,可以使用静态反汇编工具hopperdisassemble工具和ida工具对反汇编文件进行反汇编处理;对于32位arm架构,ida工具与hopperdisassemble工具都可以对反汇编文件进行反汇编处理;对于64位arm架构,hopperdisassemble工具和ida工具系列中的idapro工具可以对反汇编文件进行反汇编处理;对于riscv架构,objdump工具可以对反汇编文件进行反汇编处理,同时可以结合readelf工具来解析elf文件。在一些实施例中,上述多种反汇编工具可以一起结合使用。59.在该实施例中,步骤s2根据机器码和预定义格式的可执行文件生成反汇编文件,生成的反汇编文件的格式与预定义格式的可执行文件的格式一致,反汇编文件中的至少一部分字段包含表征机器码的字符串,步骤s3利用预设反汇编器对反汇编文件进行反汇编处理,可以将任意cpu架构中的机器码反汇编为汇编指令,方便了汇编语言工作者的工作(如编译器验证、逆向工程等),大大节省了工作量,对汇编语言学习者也大有帮助。60.本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行如图4所示的机器码的反汇编方法。61.图5示出了根据本发明实施例的计算机设备的框图。如图5所示,该计算机设备200包括一个或多个处理器230、存储器210以及一个或多个计算机程序220,其中一个或多个计算机程序220被存储在存储器210中并被配置为由一个或多个处理器230执行,一个或多个计算机程序210配置用于执行如图4所示的机器码的反汇编方法。62.本发明实施例的机器码的反汇编系统、反汇编方法、计算机设备及存储介质,可以对任意的机器码反汇编为汇编指令,方便了汇编语言工作者的工作(如编译器验证、逆向工程等),大大节省了工作量,对汇编语言学习者也大有帮助。63.在此所用的术语“模块”可以指代以下各项、作为以下各项的一部分或者包括以下各项:专用集成电路(applicationspecificintegratedcircuit,可简称为asic)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所描述的功能性的其他合适的组件。64.本领域技术人员可以理解,根据本发明的反汇编系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用java、c/c /c#等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。65.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的结构和方法,可以使用不同的配置方法或调节方法对每个结构或该结构的合理变形来实现所描述的功能,但是这种实现不应认为超出本技术的范围。并且,应理解,本技术实施例中前述的图的放大器各个部件之间的连接关系为示意性举例,并不对本技术实施例造成任何限制。66.以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献