IA-32由四类寄存器组成:通用寄存器,段寄存器,程序状态与控制寄存器,指令指针寄存器。

通用寄存器:用于传送和暂存数据,也可参与算数逻辑运算,并保存运算结果。

  EAX(0-31) 32位          AX  (0-15)  EAX的低16位         AH (8-15) AX的高8位             AL(0-7) AX的低8位

  EAX:针对操作数和结果数据的   累加器              EAX一般用在函数返回值中,所有win32API函数都会先把返回值保存到EAX再返回。

  EBX:DS段中的数据指针         基址寄存器

  ECX:字符串和循环操作的         计数器

  EDX:I/O指针                           数据寄存器

  EBP:SS段中栈内数据指针     扩展基址指针寄存器

  ESI:字符串操作源指针     源变址寄存器

  EDI:字符串操作目标指针      目的变址寄存器

  ESP:SS断中栈指针               栈指针寄存器                  ESP指向栈顶地址

段寄存器:段寄存器总共有6种寄存器,分别为cs,ss,ds,es,fs,gs。

  CS:Code Segment    代码段寄存器     存放应用程序代码所在段的段基址

  SS:Stack Segment   栈段寄存器      存放栈段的段基址

  DS:Data Segment     数据段寄存器     存放数据段的段基址

  ES:Extra(Data)Segment      附加(数据)段寄存器    以下都是存放附加数据段的段基址

  FS:Data Segment      数据段寄存器

    GS:Data Segment    数据段寄存器

  FS寄存器用于计算SEH(Structured Exception Handler,结构化异常处理机制)、TEB(Thread Environment Block,线程环境块)、PEB(Process Environment Block,进程环境块)等地址,这些属于高级调试技术。

程序状态与控制寄存器:

  EFLAGS:Flag Register, 标志寄存器            共有32位元,每位都有特定的含义。

  ZF:Zero Flag,零标志       若运算结果为0,则其值为1,否则为0.

  OF:Overflow Flag,溢出标志    有符号整数溢出时,OF值被置为1。此外,MSB(最高有效位)改变时,其值也被设为1。

  CF:Carry  Flag,进位标志     无符号整数溢出时,其值也被置为1。

指令指针寄存器:

  EIP:Instruction Pointer,指令指针寄存器    保存着CPU要执行的指令地址,EIP只能间接修改,还可以通过中断或异常来修改EIP的值。

逆向工程核心原理-IA-32寄存器的更多相关文章

  1. 《逆向工程核心原理》——IAThook

    hook逻辑写入dll中,注入dll. #include "pch.h" #include <tchar.h> #include "windows.h&quo ...

  2. 《逆向工程核心原理》——通过调试方式hook Api

    1.附加目标进程, 2.CREATE_PROCESS_DEBUG_EVENT附加事件中将目标api处设置为0xcc(INT 3断点) 3.EXCEPTION_DEBUG_EVENT异常事件中,首先判断 ...

  3. 《逆向工程核心原理》Windows消息钩取

    DLL注入--使用SetWindowsHookEx函数实现消息钩取 MSDN: SetWindowsHookEx Function The SetWindowsHookEx function inst ...

  4. 《逆向工程核心原理》——TLS回调函数

    pe中TLS(thread local storage)中函数的执行时机早于入口函数(entry point), 相关结构: // // Thread Local Storage // typedef ...

  5. 《逆向工程核心原理》——API HOOK

    编写dll处理hook逻辑,注入到目标进程,实现api hook. Windows10 notepad,通过hook kernel32.dll.WriteFile,实现小写字母转大写保存到文件. ho ...

  6. 《逆向工程核心原理》——DLL注入与卸载

    利用CreateRemoteThread #include <iostream> #include <tchar.h> #include <Windows.h> # ...

  7. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现

    本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...

  8. Zookeeper核心原理

    Zookeeper 的核心原理 Zookeeper 的由来 各个节点的数据一致性 怎么保证任务只在一个节点执行 如果orderserver1挂了,其他节点如何发现并接替 存在共享资源,互斥性.安全性 ...

  9. Redis核心原理与实践--字符串实现原理

    Redis是一个键值对数据库(key-value DB),下面是一个简单的Redis的命令: > SET msg "hello wolrd" 该命令将键"msg&q ...

随机推荐

  1. MySQL 文章目录

    MySQL系列: MySQL CREATE TABLE语法 MySQL 复制表结构 MySQL 对比数据库表结构 MySQL 处理插入过程中的主键唯一键重复值办法 MySQL 启动原理剖析 MySQL ...

  2. C# 三种打印方式含代码

    一:C#代码直接打印pdf文件(打印质保书pdf文件) 引用: 代码注释很详细了. private void btn_pdf_Click(object sender, RoutedEventArgs ...

  3. Workbooks 对象的 Open 方法参数说明

    Workbooks 对象的 Open 方法参数说明 打开一个工作簿. expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password ...

  4. Kubernetes 笔记 08 Deployment 副本管理 重新招一个员工来填坑

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  5. 如何面对被抛弃的System.Data.OracleClient

    Visual Studio2012连接访问ORACLE数据库 近些年因工作内容的转变,很少去编码了.一些简单的需求使用VS+SQL SERVER这对老搭档便可快捷而舒服的搞定.只是近日需要管理一些OR ...

  6. java~mac下的终端工具oh-my-zsh

    mac操作系统类似于linux,很多命令都是兼容的,确实挺好用,对于java,docker,git等开发来说,终端命令行是非常必要的工具,这里我介绍一下item2+oh-my-zsh的安装与使用. 安 ...

  7. ubuntu16.04无法获取ip地址的解决方案

    当我们无法获取ip地址时可以使用dhcp来动态获取ip地址,安装dhcpcd5和dhcpcd-gtk sudo apt-get install dhcpcd5 sudo apt-get install ...

  8. C#语法——委托,架构的血液

    本篇文章主要介绍委托的应用. 委托是大家最常见的语法了,但会用与精通之间的差别是巨大的. 一个程序员如果不能精通委托,那么,他永远无法成为高级程序员. 所以,让我们把委托刻到血液里吧. 这样,你才能称 ...

  9. (四)surging 微服务框架使用系列之网关

    一.什么是API网关 API网关是一个服务器,是系统对外的唯一入口.API网关封装了系统内部架构,为每个客户端提供一个定制的API.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入 ...

  10. Maven-常用插件

    罗列笔者认为比较有用的一些maven打包插件,方便后续查阅 spring-boot-maven-plugin springboot自带的maven插件,可用于简单的JAR/WAR方式打包,官方地址为h ...