汇编语言与逆向技术基础 零、绪论

成绩评定

  • 平时成绩 10% 考勤、课上回答问题(雨课堂)
  • 实验成绩 20% 课后习题、实验报告(学堂在线)
  • 期末考试 70% 闭卷

课程内容

  • 汇编语言
    • Intel 处理器:x86 汇编;华为鲲鹏处理器:ARM汇编
  • 逆向分析技术
    • 静态逆向分析
    • 动态逆向分析
  • Windows内核
    • 可执行文件结构
    • 系统内核
  • 软件保护

汇编语言的用处

  • 软件加固 Software Hardening
    • 水印、指纹、混淆、版权保护
  • 软件自动修复 Automated Repair
    • 软件补丁 Patch,不用重新编译 Windows 系统
  • 软件插装 Instrumentation
    • 虚拟化技术
  • 软件优化 Optimization
  • 软件调试 Debugging

什么是汇编语言

  • 汇编语言也称为符号语言

    • 用助记符代替机器指令的操作码,如机器指令55,对应push ebp

    • 用地址符号或标号代替指令或操作数的地址

      例如:将一个数据从内存读到CPU的寄存器中

汇编语言类型

CPU

  • 寄存器
  • 传送指令
  • 算数指令
  • 位运算指令
  • 串操作指令
  • 跳转指令

内存

  • 寻址方式

逆向分析技术

动态逆向分析

  • OllyDbg:用户态的动态调试
  • WinDbg:内核态的动态调试

静态逆向分析

  • IDA Pro

用户态动态逆向分析

  • 内存映射
  • 查看线程、栈、代码
  • 断电
  • 加载DLL、跟做
  • 异常处理、修补
  • 分析shellcode
  • 插件、脚本调试

内核态动态逆向分析

  • WinDbg
    • 驱动与内核代码
    • 双系统
    • 微软符号表
    • 内核调试
    • Rootkit

静态逆向分析

  • 识别汇编中的C语言代码结构
  • 识别 if 分支结构
  • 识别循环
  • 识别函数调用
  • 识别 switch 结构美化
  • 识别数组、结构体、链表

Windows 内核

  • 可执行文件结构

    PE 文件结构:PE 文件头、区块、输入表、输出表、基址重定位、资源、TLS初始化、调试目录、延迟载入

  • Windows 内核基础

    • 内存空间、权限空间布局
    • Windows 与内核启动过程
    • Windows Ring3 和 Ring0 通信
    • 内核函数和内核驱动模块
    • 内核对象
    • SSDT
    • TEB 和 PEB
  • Windows 异常处理

    • 异常处理的基本概念
    • SEH 的概念及基本只是
    • SEH 异常处理程序原理及设计
    • 向量化异常处理

软件保护

  • 序列号
  • 警告窗口
  • 时间限制
  • 菜单功能限制
  • KeyFile 保护
  • 网络验证
  • 光盘检测