art of disassembly----chapter01----lesson11---how is a disassembler working----02
来源:互联网 发布:全国幼儿园名录数据库 编辑:程序博客网 时间:2024/06/06 04:27
Mapping of "processing" tasks to objects 将处理过程映射成对象
在一个纯面象对象的设计中,这个映射并不恰当,因为我把处理过程处理成对象。然而,我坚持解析任务由"parser"完成,解码任务由"decoder"完成,:
如下图:
绿色的矩形就是代表着对象,Parser以机器字节流作为输入,然后输出解析后的一条条机器指令字节。Decorder以一条条机器指令字节作为输入,然后输出汇编指令。
以上就是我们反汇编器引擎部分的整体设计了。
其它的一些辅助对象
到目前为止你可能已经注意到了,我们的对象并未与用户进行交互。Parser可以直接向用户索要机器码字节流,但我不认识有多少个用户会直接这么用手动的输入机器字节流给Parser。同时,当Decorder解析机器码为一条条的汇编指令,它如果向用户展现它的成果呢?且一个个消息框怎么样?我们可能很自然的联想到用一个显示的控制台窗口来输出,但是这并不是必须的。到目前为此,我还没有提到过这个方面的事。那么谁将来做这个方面的工作呢?
下面的几个对象来完成数据的索取及数据的展示任务。
Data stream provider 对象用来”产生“输入数据流,(机器字节流),它用来产生这样的产品,而我们的Parser恰好是这个产品的消费者(Parser要使用这些字节流)。数据流可以来自PE文件,LE文件,一个运行中的内存地址空间等等。
在本项目中,我决定使用一个PE dump来作为Data stream provider
Rendering provider 是一个UI对象,它可以是一个控制台的输出,在一个对话框中以列表框来输出等等,要怎么来显示汇编指令在于Rendering provider的设计者。在本项目中,我有一个解码对象叫SimpleDecoder,它仅仅使用C++的std::count来显示。
Where is user?
现在,我们把这几个部分整合起来。毫无疑问,”user“是最重要的部分。在前面我已经描述过了,UI层将与用户进行交互。
用户提供一个将要反汇编的可执行文件,我们的反汇编系统返回一个反汇编了的文件。
到此,我们的架构是完成了。
- art of disassembly----chapter01----lesson11---how is a disassembler working----02
- art of disassembly----chapter01----lesson11---how is a disassembler working----01
- art of disassembly----chapter01----lesson11---how is a disassembler working----03
- the art of disassembly chapter01---lesson1--02
- art of disassembly---chapter01---lesson2
- art of disassembly----chapter01---lesson3
- art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---02
- the art of disassembly chapter01-----lesson1--03
- art of disassembly-------chapter01--lesson1----04
- art of disassembly---chapter01---lesson6---Link lists
- art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---01
- art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---03
- art of disassembly----chapter01----lesson9--Opcodes and Mnemonics---04
- the art of disassembly charpter01---lesson1---01
- how to write a module dumper & disassembler
- how to write a module dumper & disassembler
- A summary of asking how someone is
- Disassembly of the MBR
- 关于oradim 的用法。
- 天津SEO基础(一)网络营销
- Linux LCD驱动(四)--驱动的实现
- 求助:windows 下Apache(LAMP)配置问题,见图
- 学习effective java-3创建和销毁对象之利用私有构造方法或枚举类型来强化单例的属性
- art of disassembly----chapter01----lesson11---how is a disassembler working----02
- Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行
- sfilter.inf 修改
- Activex系列之一---利用VC6.0的向导创建一个ocx控件的示例
- 数据结构复习题(二)
- Android对于APN
- 彩信系统结构介绍
- 按钮不同状态显示不同图片
- oracle 中escape 关键字用法