汇编语言与逆向技术基础 一、汇编语言基本概念

知识点

  • 计算机编程语言
  • 虚拟机概念
  • 数据表示方法
  • 字符集
  • 字节序

计算机编程语言

机器语言、汇编语言、高级语言

机器语言

早期

汇编语言

  • 助记符 代替二进制操作码
  • 地址符号标号 代替二进制 地址

高级语言

自然语言、数学语言

  • 高级语言与汇编语言和机器语言之间是一对多的关系

    一条高级语言编译后,对应多条机器码

如果一种语言的源代码可以在多种计算机系统上编译运行,那么就说这种语言是可移植的

C++可以嵌入汇编语言

  • 折中方案
  • 丧失可移植性

嵌入式系统

  • 内存空间小,汇编语言可以节省内存空间

实时系统

  • 仿真、监控等实时系统要求精确计量时间和实时响应

    高级语言不能完全控制编译器生成的机器码

    汇编语言可以完全控制机器码

游戏机

  • 大小、运行速度。
  • 专用硬件
  • 手动进行游戏速度优化

驱动程序

底层操作

  • 提高硬件、操作系统、应用程序的交互
  • 汇编语言可以优化应用程序与特定硬件、特定操作系统的交互效果

逆向分析

  • 软件调试
  • 漏洞挖掘
  • 计算机病毒分析
  • 软件知识产权保护

虚拟机

概念

抽象出计算机软硬件之间的相互关系,对于每个语言层次,想象成一台假想的计算机

层次

从高到底:高级语言、汇编语言、操作系统、指令集体系结构、微结构、数字逻辑

执行方式

  • 翻译方式:整体翻译
  • 解释方式:逐条翻译

数据表示方法

二进制、八进制、十进制、十六进制

二进制数

  • 最左边的为最高有效位MSB
  • 最右边的为最低有效位LSB

数据存储单位

  • 字节 byte 8bit
  • 字 word 16bit
  • 双字 doubleword 32bit
  • 八字节 quadword 64bit

字符集

Unicode ASCII

字节序

大端模式 小端模式

大端字节序列(网络通信中)

最高位存在最低位上

如127.0.0.1 -> 7F 00 00 01

小端字节序列

最低位存在最低位上

如127.0.0.1 -> 01 00 00 7F