《软件安全》

一、基础知识

CPU:控制器、运算器(算数,逻辑单元)、寄存器、内部总线。其中寄存器存放了(计算机的)操作系统的关键的==数据结构==的入口,这些信息是==软件漏洞==和==恶意代码==分析的基础信息。因此==寄存器结构==是我们分析的重点。

一-1)IA-32的CPU寄存器

指令指针寄存器 EIP

存储当前执行的指令的地址,系统进行寻址-取指令-译码-执行

通用数据寄存器

EAX-EDX用于存储数据和运算结果;16位:AX-DX;1-8:AL;9-16:AH
ECX:存储循环处理指令的循环次数
EAX,EDX:乘除法隐含操作数

地址指针寄存器 ESP(顶) EBP(底)
变址指针寄存器 ESI(源操作数) EDI(目的)
段寄存器

代码段CS 数据段DS 堆栈段SS 附加段ES FS GS

标志位寄存器 控制寄存器

一-2)IA-32的CPU的工作模式

CPU初始化:实模式, PE==0 ;不支持多线程

操作系统启动:PE==1,开始保护模式;内存分页,权限分级,多线程
戳111111111

二)反汇编

1确定反汇编的代码区域,区分程序的代码段和数据段
2读取程序代码入口的==二进制机器指令(机器码)==,通过查表找出与之对应的汇编语言助记符,看指令状态提取操作数。
3对其汇编语言等价形式进行格式化,输出反汇编代码

三)windows操作系统基础

可移植的可执行文件PE文件(.exe .com .dll .ocx .sys)组成

DOS头
PE头:主要定位信息 IMAGE_NT_HEADER

Signature;FileHeader;OptionalHeader三个字段

区块表:结构数组:关联的区块信息,位置长度等
区块数据:代码区块,导入表,导出表

二、程序切片

一)