CN109308183A - 一种面向vliw芯片可执行代码的逆向工具方法 - Google Patents

一种面向vliw芯片可执行代码的逆向工具方法 Download PDF

Info

Publication number
CN109308183A
CN109308183A CN201810853667.4A CN201810853667A CN109308183A CN 109308183 A CN109308183 A CN 109308183A CN 201810853667 A CN201810853667 A CN 201810853667A CN 109308183 A CN109308183 A CN 109308183A
Authority
CN
China
Prior art keywords
executable
dis
assembling
vliw
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.)
Pending
Application number
CN201810853667.4A
Other languages
English (en)
Inventor
杨磊
王海红
刘峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanyang Institute of Technology
Original Assignee
Nanyang Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanyang Institute of Technology filed Critical Nanyang Institute of Technology
Priority to CN201810853667.4A priority Critical patent/CN109308183A/zh
Publication of CN109308183A publication Critical patent/CN109308183A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

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

本发明公开了一种面向VLIW芯片可执行代码的逆向工具方法,包含如下步骤:1)读入可执行bin文件和命令行参数;2)解析可执行bin文件的头结构;3)反汇编可执行bin文件中的代码段;4)执行在线编辑操作,找到需要在线编辑的地址,执行数据或指令的替换、修改和删除操作,并写回可执行bin文件;5)向文本或屏幕打印反汇编文本并结束程序。除了可以对面向VLIW芯片的可执行文件进行反汇编,还可以在线编辑可执行代码并输出到反汇编文件中,方便程序员在调试和运行程序中对可执行文件进行分析和编辑,从而更快捷、快速的解决重大软件bug和源代码缺失难题。

Description

一种面向VLIW芯片可执行代码的逆向工具方法
技术领域
本发明涉及一种面向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芯片具体指令集特点,从而使得该逆向工具更加适用和实用。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (4)

1.一种面向VLIW芯片可执行代码的逆向工具方法,其特征在于所述方法包含如下步骤:
1)读入可执行bin文件和命令行参数;
2)解析可执行bin文件的头结构;
3)反汇编可执行bin文件中的代码段;
4)执行在线编辑操作,找到需要在线编辑的地址,执行数据或指令的替换、修改和删除操作,并写回可执行bin文件;
5)向文本或屏幕打印反汇编文本并结束程序。
2.如权利要求1所述的面向VLIW芯片可执行代码的逆向工具方法,其特征在于:所述步骤1)中的命令行参数包括输入文件名、反汇编命令和在线编辑命令,其中在线编辑命令可对可执行bin文件的数据段和代码段进行替换、修改和删除操作。
3.如权利要求1所述的面向VLIW芯片可执行代码的逆向工具方法,其特征在于:所述步骤2)中的可执行bin文件的头结构中存储了ELF参数、入口地址、程序头入口和长度、节头表偏移量与长度、节数基础信息。
4.如权利要求1所述的面向VLIW芯片可执行代码的逆向工具方法,其特征在于:所述步骤3)中的反汇编可执行bin文件中的代码段,包含对其中存储的指令逐条进行反汇编,结合VLIW芯片指令描述文件,反汇编得到对应的汇编指令。
CN201810853667.4A 2018-07-30 2018-07-30 一种面向vliw芯片可执行代码的逆向工具方法 Pending CN109308183A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810853667.4A CN109308183A (zh) 2018-07-30 2018-07-30 一种面向vliw芯片可执行代码的逆向工具方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810853667.4A CN109308183A (zh) 2018-07-30 2018-07-30 一种面向vliw芯片可执行代码的逆向工具方法

Publications (1)

Publication Number Publication Date
CN109308183A true CN109308183A (zh) 2019-02-05

Family

ID=65226050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810853667.4A Pending CN109308183A (zh) 2018-07-30 2018-07-30 一种面向vliw芯片可执行代码的逆向工具方法

Country Status (1)

Country Link
CN (1) CN109308183A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352842A (zh) * 2020-02-28 2020-06-30 成都金诺信高科技有限公司 基于嵌入式的软件调试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1976314A (zh) * 2006-11-24 2007-06-06 河海大学 基于路由交换机的自适应可变时间片包转发调度方法
CN101266549A (zh) * 2008-03-19 2008-09-17 华为技术有限公司 插入代码的方法、装置及存储介质
CN103885770A (zh) * 2014-01-21 2014-06-25 唐道成 单片机从可执行文件找回汇编文件的实现方法
CN104504333A (zh) * 2014-11-25 2015-04-08 武汉安天信息技术有限责任公司 Elf文件中的恶意代码检测方法及装置
CN107924302A (zh) * 2015-07-17 2018-04-17 英航斯公司 一种用于在经编译软件内修改机器指令的方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1976314A (zh) * 2006-11-24 2007-06-06 河海大学 基于路由交换机的自适应可变时间片包转发调度方法
CN101266549A (zh) * 2008-03-19 2008-09-17 华为技术有限公司 插入代码的方法、装置及存储介质
CN103885770A (zh) * 2014-01-21 2014-06-25 唐道成 单片机从可执行文件找回汇编文件的实现方法
CN104504333A (zh) * 2014-11-25 2015-04-08 武汉安天信息技术有限责任公司 Elf文件中的恶意代码检测方法及装置
CN107924302A (zh) * 2015-07-17 2018-04-17 英航斯公司 一种用于在经编译软件内修改机器指令的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
鲍丽丹 等: "基于 VLIW 目标机的 ELF 二进制编辑器设计与实现", 《电子设计工程》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352842A (zh) * 2020-02-28 2020-06-30 成都金诺信高科技有限公司 基于嵌入式的软件调试方法

Similar Documents

Publication Publication Date Title
US5815714A (en) Embedded debug commands in a source file
US7231633B2 (en) Debugging with set verbosity level during read and analysis of executable code and associated comments while logging according to set verbosity level
US5204960A (en) Incremental compiler
US7890806B2 (en) Auto-executing tool for developing test harness files
JP3729640B2 (ja) 画面フローによるビジュアルプログラミング装置
US7689973B2 (en) Language for development of test harness files
US7702958B2 (en) Auto-recording tool for developing test harness files
EP2098954B1 (en) Systems and methods for template reverse engineering
US20010018764A1 (en) Method and apparatus for translating between source and target code
US11579856B2 (en) Multi-chip compatible compiling method and device
CN103885770A (zh) 单片机从可执行文件找回汇编文件的实现方法
CN102479265B (zh) 修改硬掩膜产品固件错误功能的方法
CN108388435A (zh) 一种将BootLoader与应用程序一次性烧写的方法
US8473903B2 (en) Code edit apparatus and recording medium
CN109308183A (zh) 一种面向vliw芯片可执行代码的逆向工具方法
CN108563560A (zh) 一种基于Calabash的客户端应用程序需求驱动测试方法
JPH1185486A (ja) プログラム編集装置,プログラム編集方法,及びコンピュータ可読媒体
KR101952328B1 (ko) 프로그래밍 언어간 변환 방법
JP2008204023A (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
CN111309298A (zh) 数控系统中基于自定义格式文件实现加工刀路编制的系统及其处理方法
JP5174648B2 (ja) プログラム開発支援機器、方法およびプログラム
CN113672239B (zh) 基于语言分析的视觉算法包开发方法
CN101599041A (zh) 自动修正错误的粘贴方法及其设备
Chandraiah et al. Creating explicit communication in SoC models using interactive re-coding
Ye et al. Project Arduino

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190205