IA32中断研究 by Liuzhi
- 格式:pdf
- 大小:1.18 MB
- 文档页数:44


EAX :累加寄存器
ECX:计数寄存器,常用于计数
EDX :数据寄存器,常用于数据传递
EBX :基址寄存器,常用于地址索引
ESP : ESP为堆栈指针,指向当前栈顶
EBP : EBP为帧指针,当前活动记录的顶部
ESI :变址寄存器,源地址指针,存储单元在段内的偏移量,
EDI
:变址寄存器
目标地址指针
EIP
:指令寄存器,存放当前指令的下一条指令的地址
ES:附加段寄存器
CS:代码段寄存器
SS:堆栈段寄存器
DS:数据段寄存器
FS:寄存器指向当前活动线程的TEB结构
000
指向SEH链指针
004
线程堆栈顶部
008
线程堆栈底部
00C SubSystemTib
010 FiberData
014 ArbitraryUserPointer
018 FS段寄存器在内存中的镜像地址
020
进程PID
024
线程ID
02C
指向线程局部存储指针
030 PEB结构地址(进程结构)
034
上个错误号
GS:全局寄存器
EFL:标志位寄存器,各标志位的含义如下图,
DF:是控制标志位为方向标志,在串处理指令中控制处理信息的方向用。当DF为1时,每次操作后使变址寄存器SI和DI减小,这样就使串处理从高地址向低地址方向处理。当DF为0时相反.
TF当TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试 ZF表示目的操作数结果为零
AF表示(AL为一个字节)相加进行到一半(低4位)有没有向另一半(高4位)进位,也可以表示是否借位(减法)
PF表示为偶数
CF表示已经发生进位,也可以表示借位
操作标志位寄存器汇编指令
LAHF 标志寄存器传送,把标志装入AH.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
第9卷第7期 2010年7月
软件导刊
Software Guide
V01.9No.7 Jul.2010
基于32位I ntel CPU的反汇编引擎设计与实现
闫培宁1,张 戈2,谢状平2
(1.河南大学软件学院,河南开封475001;2.河南大学计算机与信.g-工程学院,河南开封475001
摘 要:通过对Intel IA一32机器指令与中断调试机制等技术的研究,采用动态反汇编技术,设计了基于32位Intel 系列CPU的反汇编引擎.并在此基础上开发动态调试器,以实现应用程序的反汇编与动态调试功能。
关键词:反汇编;动态调试;机器指令;汇编语言
中图分类号:TP312文献标识码:A 文章编号:1672—7800(201007-0069-03
O 引言
反汇编技术在程序优化、数据解密、软件汉化、逆向软件工 程和汇编语言教学等领域发挥着重要的作用。主要是将编译、 封装后的应用程序反汇编成为汇编语言代码。供开发研究人员 进行分析优化等。基于主流的操作系统为32位,且Intel系列 及其兼容CPU应用广泛的现状.笔者根据高校在教学科研工 作中的实际需要。采用动态反汇编技术设计了基于32位Intel 系列CPU的反汇编引擎。并应用此反汇编引擎开发了动态调 试器,实现了应用程序的反汇编与动态调试功能.在实际应用 和教学过程中起到了良好的作用。
1反汇编引擎概述
反汇编引擎主要功能是将可执行的文件中的二进制机器 指令经过分析转变为汇编程序。其分析转变的依据是机器指令 格式,也是机器代码和汇编语言格式之间的桥梁。不同类型的 CPU的指令格式是不同的.本文主要探讨的为常用的Intel系
列兼容CPU机器指令格式。以此为基石设计和开发反汇编引 擎。
1.1机器指令
Intel机器指令一般分为Intel 64和IA一32,分别是64位指 令和32位指令.本文仅讨论32位指令的情况,但其中的很多 内容对于intel 64也是同样适用的。Intel 64及IA一32机器指令 格式如图1所示。一条指令包括可选的指令前缀、主操作码、由 ModR/M和SIB字节组成的地址格式描述符、偏移量以及立即 数。
基于32位Intel CPU的反汇编引擎设计与实现
闫培宁;张戈;谢状平
【期刊名称】《软件导刊》
【年(卷),期】2010(000)007
【摘 要】通过对Intel IA-32机器指令与中断调试机制等技术的研究,采用动态反汇编技术,设计了基于32位Intel系列CPU的反汇编引擎,并在此基础上开发动态调试器,以实现应用程序的反汇编与动态调试功能。
【总页数】3页(P69-71)
【作 者】闫培宁;张戈;谢状平
【作者单位】
【正文语种】中 文
【中图分类】TP312
【相关文献】
1.32位嵌入式CPU中系统控制协处理器的设计与实现 [J], 金钊
2.32位高性能嵌入式CPU中Load Aligner 模块的设计与实现 [J], 张书;王颖;林正浩
3.基于32位Intel CPU的反汇编引擎设计与实现 [J], 闫培宁;张戈;谢状平
4.基于VB引擎反汇编技术的软件破解方法及防范策略 [J], 周显春
5.专用于Intel PXA210和PXA250微处理器的更小巧、完备的电源管理IC—为基于Intel XScale^TM微架构的CPU提供完备的电源方案 [J],
因版权原因,仅展示原文概要,查看原文内容请购买
一、单选题
1、以下关于x86实地址模式下异常/中断机制的叙述中,错误的是( )。
A.中断向量表固定在0~3FFH的内存区域
B.中断服务程序首地址占8个字节
C.中断向量地址为中断类型号乘以4
D.采用向量中断方式识别中断源
正确答案:B
解析: B、实地址模式下,每个中断向量占4个字节,由16位段地址和16位段内偏移量组成,通过对段地址左移4位然后加上段内偏移量,以得到20位的中断服务程序首地址。
2、以下关于x86系统启动过程的叙述中,错误的是( )。
A.BIOS程序在主存中设置中断向量表
B.进入保护模式后中断向量表中被填入新的中断向量
C.与输入/输出相关的操作通过执行int指令由中断服务程序实现
D.开机后系统首先在实地址模式下工作
正确答案:B
解析: B、系统启动结束时进入保护模式,此时,不再使用主存0~3FFH区域内的中断向量表,而是通过专门的中断描述符表来获得中断服务程序或异常处理程序的入口地址。
3、以下关于IA-32的异常/中断机制的叙述中,错误的是( )。 A.在实地址模式下使用中断向量表保存异常处理程序和中断服务程序的首地址
B.在保护模式下通过中断描述符表获取异常处理程序和中断服务程序的首地址
C.中断向量表和中断描述符表中都有256个表项,每个表项都占8个字节
D.最多可以有256种异常和中断类型,每种类型有一个中断号i(0≤i≤255)
正确答案:C
解析: C、实地址模式下,每个中断向量表的表项占4个字节,由16位段地址和16位段内偏移量组成。
4、以下选项中,不属于中断描述符表中表项内容的是( )。
A.调用门描述符
B.任务门描述符
C.陷阱门描述符
D.中断门描述符
正确答案:A
5、以下关于IA-32的中断门描述符的叙述中,错误的是( )。
A.包含对应中断服务程序首地址(段选择符和偏移地址)
B.包含存在位(字段P),用于表示对应中断类型是否存在