0%

汇编系列

为了学习逆向等知识,先简单学习一下汇编

常见指令

  • 数据传送指令:MOV/XCHG,PUSH/POP,LEA
  • 算数运算类指令:ADD/ADC/INC,SUB/SBB/DEC/CMP/NEG,MUL/IMUL,DIV/IDIV
  • 位操作类指令:AND/OR/XOR/NOT/TEST
  • 控制转移类指令:JMP/JCC/LOOP,CALL/RET,INT n
  • 处理机控制类指令:NOP

脱壳

壳是软件逆向分析学的常见主题。为了理解好它,需要掌握有关PE文件格式、操作系统的基本知识(进程、内存、DLL等),同时也要了解有关压缩/解压缩算法的基本内容。

windows上常见的有三类壳:

  • 压缩壳:为了减小可执行文件的体积,需要对可执行文件进行压缩,可执行文件经过压缩后成为另一个可执行文件

    • 内部含有解压缩代码,文件在运行瞬间于内存中解压缩后执行,程序的功能完全一致

    • 压缩是为了缩减PE文件的大小以及隐藏PE文件内部代码与资源(解压缩后可以通过内存的Dump窗口查看)

      分类:

    • 单纯用于压缩普通PE文件的压缩壳:UPX、ASPack

    • 对源文件进行较大变形、严重破坏PE头的压缩壳:UPack.PESpin、NSAnti

  • 加密壳:应用了多种防止代码逆向分析的技术(反调试、反模拟、代码混乱、多态代码、垃圾代码、调试器监视等)来保护PE文件免受代码逆向分析的实用程序

    • 不仅可以保护PE文件本身,还可在文件运行时保护进程内存,防止程序所使用的资源通过内存被dump

      分类:

    • 商用保护壳:ASProtect、Themida、SVKP等

    • 公用保护壳:UItraProtect、Morphine等

  • VMP壳

脱壳(压缩壳和部分加密壳)

  • 脱壳工具
  • ESP定律:ESP硬件断点
  • 单步跟踪法
  • 内存镜像法:两个内存访问断点
  • 找PUSHAD对应的POPAD