Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143310
  • 博文数量: 46
  • 博客积分: 329
  • 博客等级: 一等列兵
  • 技术积分: 318
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-04 01:45
文章分类

全部博文(46)

文章存档

2012年(25)

2011年(21)

我的朋友

分类:

2011-12-20 04:59:14

反汇编器主要函数实现在objdump.c文件中。它主要实现参数提取与解析,获得与文件相符的target(bfd),以及文件显示。而文件的读操作和写操作最终由bfd完成。反汇编器与体系结构相关的只有读取的二进制向汇编指令的转换部分。

 

objdump的主函数流程如图,主函数中实际工作都交由display_file()来完成。

clip_image002

display_file主要对文件的类型进行判断(是否是库文件),display_file函数流程如图

clip_image004

 

display_bfd 主要对单个文件的类型进行判断,函数流程如图

clip_image006

 

截止到这里,都是对反汇编文件做的准备工作,操作的对象还是文件,不涉及文件的内容。以上的各函数不涉及体系结构,是通用函数,无需移植。

 

二进制到汇编语言的实现流程:

disassemble_data()函数流程如图

clip_image008

disassemble_bytes()函数实现流程图如图

clip_image002[4]

移值的核心为print_insn_XXXX()函数以及重新对指令分类。主要流程为从read_memory_func (memaddr, ibytes, size, info)获得二进制码并从指令table中寻找与ibytes中匹配的汇编指令。

阅读(878) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~