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. 如何用人工的方式将Excel里的一堆数字变成一个数组

    目的是抛砖引玉,有谁可以教教我如何吧Excle的数据导入MyEclipse么? 如果只有⑨个字符的话我肯定是直接人工输入的,然而这次有65536行乘以3组,遭不住啊. 一.数组之间要有逗号在B列右键, ...

  2. 49个Spring经典面试题总结,附带答案,赶紧收藏

    1. 一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? Version Feature Spring 2.5 发布于 2007 年.这是第一个支持注解的版本. Spr ...

  3. C#在window服务配置Log4Net.dll

    1.使用背景: C#window服务下添加一个日志记录程序集(Log4Net.dll) 2.添加和使用步骤如下: 一.下载并引入Log4Net.dll程序集到项目中 下载地址:http://loggi ...

  4. java调用python程序以及向python程序传递参数

    在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...

  5. vueJS报错记录列表以及解决方案

    1.在elem团队新出的框架里,navMenu,控制台报missing required prop "index" 解决方案: 添加index的值 2.Duplicate keys ...

  6. 深度学习之卷积神经网络(CNN)详解与代码实现(二)

    用Tensorflow实现卷积神经网络(CNN) 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065. ...

  7. CentOS 7 最小化安装配置以及网络服务器搭建、配置与管理

    一.环境介绍: 运行软件:VMware Workstation Pro 系统环境:CentOS-7-x86_64-1810 系统网络运行模式:NAT模式 二.操作配置: 1.配置动态获取IP 1) 修 ...

  8. 4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道实现机制 要了解管道的实现机制,我们必须要深入框架的源码,幸亏微软开源了,我们可以访问GitHub的地址来下载 ...

  9. Linux权限管理(week1_day5)--技术流ken

    权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3种身 ...

  10. 贝塞尔曲线控件 for .NET (EN)

    Conmajia 2012 Updated on Feb. 18, 2018 In Photoshop, there is a very powerful feature Curve Adjust, ...