doubanclaim46311e9baa5d2441
一 092010
一 092010
反汇编器和汇编器是两个互逆的过程,后者将汇编源文件转换为机器码,前者将机器码转换成汇编语言。
汇编器通过将汇编指令符号转换为opcode和解析符号名为存储位置的形式创建目标代码,该目标代码就是机器码.其中符号解析是汇编器的关键部分.很多汇编器还提供宏支持来方便文本替换.相对于高层语言的编译器,汇编器简单很多.最早的汇编器出现在20世纪50年代,很多现代汇编其器都支持指令调度优化.Linux下使用最频繁的汇编器是gas,Gnu Assembler,因为它是GCC的默认后端,是Binutils的一部分。
反汇编器的输出通常是可读的汇编码格式,因此它时反向工程的重要工具。通常汇编语言允许常数和注释,但是在生成机器码时这些信息通常被删除,所以,在机器码上的反汇编操作只能产生无常数和注释的汇编码,所以程序员很难读懂,也很难转换为原来的高级代码。现在也有些编译器通过使用符号调试信息和交互式允许用户为特定区域的代码和值使用符号代替的方式来增强可读性。现在常见的反汇编器有:各种调试器都包含反汇编器,如GNU Binutils中的objdump就是gdb的交互式反汇编器,其他的还有PVDasm,一个支持多CPU反汇编器,OllyDbg–32位汇编级分析调试器,ILDASM–.NET Framework SDK中,用来反汇编PE文件等等
http://en.wikipedia.org/wiki/Assembly_language#Assembler
http://en.wikipedia.org/wiki/GNU_Assembler
http://en.wikipedia.org/wiki/Disassembler

近期评论