本发明涉及一种面向vliw芯片可执行代码的逆向工具方法。具体来说,本发明涉及一个逆向工具方法,该逆向工具可以对在vliw(超长指令字)芯片上运行的可执行代码进行反汇编和在线编辑。
背景技术:
在软件开发过程中,工程师在软件调试及运行中经常面临执行可执行文件时出现重大bug或者旧代码覆盖新代码甚至源代码缺失等情形,这给软件设计与开发工作带来很大难题。而逆向工具则用于解决在软件开发与调试阶段出现的种种困境,通过有效解析可执行文件,能帮助工程师正确理解程序功能,为定位并修正程序错误提供可能。
然而目前软件工程中流行的逆向工具例如objdump、readelf等仅用于x86芯片上的可执行代码,并不是面向vliw芯片,同时,这些逆向工具并不支持在线编辑可执行文件等辅助调试功能。
技术实现要素:
本发明为解决在调试和运行面向vliw芯片程序遇到问题的过程中,由于缺少面向vliw芯片可执行代码的逆向工具而导致软件开发无法正常进行难题,从而提出一种面向vliw芯片可执行代码的逆向工具方法。该方法用于对在vliw(超长指令字)芯片上运行的可执行代码进行反汇编和在线编辑的逆向工具的设计与开发。
为实现上述目的,本发明采用的技术方案:该面向vliw芯片可执行代码的逆向工具方法,所述方法包含如下步骤:
1)读入可执行bin文件和命令行参数;
2)解析可执行bin文件的头结构;
3)反汇编可执行bin文件中的代码段;
4)执行在线编辑操作,找到需要在线编辑的地址,执行数据或指令的替换、修改和删除操作,并写回可执行bin文件;
5)向文本或屏幕打印反汇编文本并结束程序。
其中,步骤1)所述的命令行参数包括输入文件名、反汇编命令和在线编辑命令,其中在线编辑命令可对可执行bin文件的数据段和代码段进行替换、修改和删除操作。
步骤2)所述的可执行bin文件的头结构中存储了elf参数、入口地址、程序头入口和长度、节头表偏移量与长度、节数基础信息。
步骤3)所述的反汇编可执行bin文件中的代码段,包含对其中存储的指令逐条进行反汇编,结合vliw芯片指令描述文件,反汇编得到对应的汇编指令。
本发明的优点在于,除了可以对面向vliw芯片的可执行文件进行反汇编,还可以在线编辑可执行代码并输出到反汇编文件中,方便程序员在调试和运行程序中对可执行文件进行分析和编辑,从而更快捷、快速的解决重大软件bug和源代码缺失等难题。
附图说明
图1给出了本发明的详细流程图。
具体实施方式
下面结合附图和具体事例对本发明进行详细的说明。该面向vliw芯片可执行代码的逆向工具方法,具体工作步骤如图1所示:
1.读入可执行bin文件和命令行参数。命令行参数应包含输入文件名、反汇编命令和在线编辑命令,其中在线编辑命令可对可执行bin文件的数据段和代码段进行替换、修改和删除操作;
2.解析可执行bin文件的头结构。目前,linux操作系统主流的可执行bin文件格式主要采用elf格式。elf格式的头文件中存储了elf参数、入口地址、程序头入口和长度、节头表偏移量与长度、节数等基础信息。
3.反汇编可执行bin文件中的代码段。具体需要找到可执行bin文件中的text段,进而对其中存储的指令逐条进行反汇编,主要操作由步骤11-12完成。
4.读取命令行参数,分析是否需要执行在线编辑操作。
5.如不需要执行在线编辑操作,进入步骤10。
6.如需要执行在线编辑操作,则进一步分析是对数据段地址进行编辑还是对代码段地址进行编辑。
7.如需要对数据段地址进行编辑,则进入步骤9。
8.如需要对代码段地址进行编辑,则分析命令行参数中的指令格式是否符合vliw芯片指令设计规范。
9.找到需要在线编辑的地址,执行数据或指令的替换、修改和删除等操作,并写回反汇编文本。
10.向文本或屏幕打印反汇编文本并结束程序。
11.读入vliw芯片指令描述文件,并形成指令模板。面向vliw芯片的指令模板应包括4个字段,分别是操作码、操作模式、操作数和推断寄存器编号。
12.一次读入代码段中的64比特数据,结合指令模板,反汇编得到对应的汇编指令。
通过以上步骤,本发明可以用于对在vliw(超长指令字)芯片上运行的可执行代码进行反汇编和在线编辑的逆向工具的设计与开发。
如上所示,本发明提供一种面向vliw芯片可执行程序的逆向工具方法,详细描述了逆向反汇编和在线编辑面向vliw芯片可执行程序的主要原理和工作流程,同时介绍如何在逆向工具设计开发中考虑vliw芯片具体指令集特点,从而使得该逆向工具更加适用和实用。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。