程序的二进制分析

程序的加载和运行

  • 静态程序 –> 二进制文件
    • 头部
    • 代码区1
    • 代码区2
    • 数据区1
    • 数据区2
  • 共享库 –> 二进制文件
    • 解释器
    • lib1.so
    • lib2.so
  • 动态进程 –> 虚拟内存
    • 代码
      • 代码区1
      • 代码区2
    • 数据
      • 数据区1
      • 数据区2
    • 内存映射区域(重定位)
      • 跳转到入口点
      • 代码
      • 数据
      • 解释器(链接、加载)
      • lib1.so
      • lib2.so
      • 环境
      • 参数
    • 内核
  • 二进制文件
    • Linux –> ELF
    • Windows –> PE
  • 解释器
    • Linux –> ld-linux.so
    • Windows –> ntdll.dll