比特派钱包官网安卓版|ebx

作者: 比特派钱包官网安卓版
2024-03-07 18:25:09

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解-CSDN博客

>

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解-CSDN博客

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

最新推荐文章于 2024-01-25 20:56:32 发布

zhu2695

最新推荐文章于 2024-01-25 20:56:32 发布

阅读量5.3w

收藏

157

点赞数

49

分类专栏:

汇编

文章标签:

寄存器

汇编

专栏收录该内容

5 篇文章

3 订阅

订阅专栏

参考一:

EAX、ECX、EDX、EBX寄存器的作用

一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI、DI SI:来源索引暂存器,DI:目的索引暂存器 堆叠、基底暂存器:SP、BP SP:堆叠指标暂存器,BP:基底指标暂存器 EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元 ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。 这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。 EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。 EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。 ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。 EDX 则总是被用来放整数除法产生的余数。 ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串. EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:      push ebp ;保存当前ebp   mov ebp,esp ;EBP设为当前堆栈指针   sub esp, xxx ;预留xxx字节给函数临时变量.   ...      这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可. ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。 386部分寄存器: 状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。 这几个寄存器中保存全局性和任务无关的机器状态。 CR0中包含了6个预定义标志,0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。1位是监控协处理位MP(Moniter coprocessor),它与第3位一起决定:当TS=1时操作码WAIT是否产生一个“协处理器不能使用”的出错信号。第3位是任务转换位(Task Switch),当一个任务转换完成之后,自动将它置1。随着TS=1,就不能使用协处理器。CR0的第2位是模拟协处理器位 EM (Emulate coprocessor),如果EM=1,则不能使用协处理器,如果EM=0,则允许使用协处理器。第4位是微处理器的扩展类型位ET(Processor Extension Type),其内保存着处理器扩展类型的信息,如果ET=0,则标识系统使用的是287协处理器,如果 ET=1,则表示系统使用的是387浮点协处理器。CR0的第31位是分页允许位(Paging Enable),它表示芯片上的分页部件是否允许工作。 CR1是未定义的控制寄存器,供将来的处理器使用。 CR2是页故障线性地址寄存器,保存最后一次出现页故障的全32位线性地址。 CR3是页目录基址寄存器,保存页目录表的物理地址,页目录表总是放在以4K字节为单位的存储器边界上,因此,它的地址的低12位总为0,不起作用,即使写上内容,也不会被理会。 这几个寄存器是与分页机制密切相关的,因此,在进程管理及虚拟内存管理中会涉及到这几个寄存器,读者要记住CR0、CR2及CR3这三个寄存器的内容。 esp:寄存器存放当前线程的栈顶指针 ebp:寄存器存放当前线程的栈底指针

eip:寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。

参考二:

eax ...edi esp ebp寄存器简介(转)

首先介绍我们会经常看到的一些寄存器: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 4个数据寄存器(EAX、EBX、ECX和EDX): 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 那么如何理解eax,ax,al(ah)之间的关系呢? 专业点可以这样解释:Eax是32位寄存器,ax是16位寄存器,al(ah)是八位寄存器。 那么eax存储的数据就是ax的两倍,ax是al(ah)的两倍。 Eax可以存储的数字是DWORD(双字)ax存储的是WORD(字)AL(AH)存储的是BYTE(字节),那么为什么又有AH和AL呢,我们可以这样理解,AX=AH+AL,AH存储的是AX的高8位数据,AL存储的是AX的低八位数据。H这里就是HIGH,L就是LOW. 假设eax是红色区域,那么eax现在就是64636261; 那么ax就是eax的低十六位,也就是6261; Al是61;AH是62。

其他ebx,ecx,edx也有类似的bx,bl,bh等对应的寄存器,原理和上面相同。 在用途方面,他们有各自默认的用途: Eax用来保存所有API函数的返回值。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用;  寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 由于存储的数据大小关系,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。(什么是基址,什么是变址以后会说到) 2个变址和指针寄存器(ESI和EDI) 32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 2个重要的指针寄存器(ESP和EBP) 这两个指针寄存器都和“栈”这个神秘的东东有关,那么什么是栈呢?这俩指针寄存器又有何作用呢? 从计算机科学的角度看,栈是一种数据结构,是一种先进后出的数据表。栈的最常见操作有两种:Push(入栈)和Pop(出栈)。 我们可以把栈想象成一摞扑克牌: PUSH:为栈增加一个元素的操作是push,相当于在这摞扑克牌最上面再放一张

POP:从栈中取出一个元素的操作叫做POP,相当于从这摞扑克牌取出最上面的一

张。

TOP:标识栈顶位置,并且是动态变化的。每做一次PUSH 操作,它都会自增1;

相反,每做一次POP 操作,它会自减1。栈顶元素相当于扑克牌最上面一张,只有

这张牌的花色是当前可以看到的。

BASE:标识栈底位置,它记录着扑克牌最下面一张的位置。BASE 用于防止栈空后

继续弹栈(牌发完时就不能再去揭牌了)。很明显,一般情况下,BASE 是不会变动

的。

用王爽《汇编语言》中的图说明一下push和pop操作 代码如下: mov ax,0123H push ax mov bx,2266H push bx mov cx,1122H pop ax pop bx pop cx

mov是传送数据的指令,mov ax,0123H表明把0123H这个值给ax H代表0123是十六进制数

mov是传送数据的指令,mov ax,0123H表明把0123H这个值给ax H代表0123是十六进制数 图中左边的10000H等数值表明内存地址 箭头指向栈顶位置

 

那么针对此例栈底就是1000FH 栈顶由于入栈和出栈操作在不断变化。

那么在这里栈底1000FH就是BP 栈顶(不断变化的箭头)就是SP (BP和SP分别是16位下的寄存器,与ebp,esp类似)

内存的栈区实际上指的就是系统栈。系统栈由系统自动维护,它用于实现高级语言中函

数的调用。对于类似C 语言这样的高级语言,我们无需担心他们是如何操作的。一般说来,只有在使用汇编语言的时候,才需要和它直接打交道。

那么ESP和EBP指的分别是什么呢?

(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。 (2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。

本次重点内容:了解几个常见的寄存器名字,记住eax一般用来保存函数的返回值,记住esp是栈顶指针寄存器,ebp是栈底指针寄存器。

优惠劵

zhu2695

关注

关注

49

点赞

157

收藏

觉得还不错?

一键收藏

知道了

8

评论

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

参考一:EAX、ECX、EDX、EBX寄存器的作用一般寄存器:AX、BX、CX、DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器索引暂存器:SI、DISI:来源索引暂存器,DI:目的索引暂存器堆叠、基底暂存器:SP、BPSP:堆叠指标暂存器,BP:基底指标暂存器EAX、ECX、EDX、EBX:為ax,bx,cx,

复制链接

扫一扫

专栏目录

8086cpu寄存器详解.doc

10-25

通用寄存器 4个 EAX、EBX、ECX和EDX 32位

段寄存器 6个 ES、CS、SS、DS、FS和GS

变址寄存器 2个 ESI和EDI 32位

堆栈寄存器 2个 ESP和EBP 32位

指令指针寄存器 1 EIP 32位

状态标志寄存器 1 EFlags 32位

控制寄存器 CR0-CR4

调试寄存器 DR0-DR7

测试寄存器 TR3-TR5

系统地址寄存器 2个 GDTR,IDTR 48位

常用汇编指令

03-22

汇编指令集合

一、常用指令

1. 通用数据传送指令.

MOV 传送字或字节.

MOVSX 先符号扩展,再传送.

MOVZX 先零扩展,再传送.

PUSH 把字压入堆栈.

POP 把字弹出堆栈.

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP 交换32位寄存器里字节的顺序

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里 )

XLAT 字节查表转换.

8 条评论

您还未登录,请先

登录

后发表或查看评论

x86汇编语言中的ebp和esp

weixin_47852408的博客

01-25

472

操作系统中的ebp和esp寄存器的简单介绍

易语言汇编类模块

07-18

易语言汇编类模块源码,汇编类模块,置代码,pushad,push_ecx,popad,push_edx,push_eax,push_ebx,push_esp,push_ebp,push_esi,push_edi,push,pop_ecx,pop_eax,pop_edi,pop_ebp,jmp_eax,call_eax,call_ecx,call_edx,call_ebx,call_esp,call_ebp,call_esi,call_edi

eax ...edi esp ebp寄存器简介(转)

ssosun的专栏

01-16

1195

首先介绍我们会经常看到的一些寄存器:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)4个数据寄存器(EAX、EBX、ECX和EDX):32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX

汇编基础知识

SWC0619的博客

03-13

770

逆向工程

EAX、ECX、EDX、EBX寄存器的作用

热门推荐

tiger_ibm的专栏

04-02

1万+

一般寄存器:AX、BX、CX、DX

AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器

索引暂存器:SI、DI

SI:来源索引暂存器,DI:目的索引暂存器

堆叠、基底暂存器:SP、BP

SP:堆叠指标暂存器,BP:基底指标暂存器

EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元

ESI、EDI、ESP、EBP:為si,di,

EAX寄存器(关键跳,关键CALL)

song_10的博客

11-04

1万+

OD动态调试过程中,寄存器窗口是需要时常关注的!

EAX寄存器:累加器,在乘法和除法指令中被自动调用;在win32中,一般用在函数的返回值中。

CALL:过程调用指令  格式: CALL OPRD  功能: 过程调用指令(说明: 1. 其中OPRD为过程的目的地址. 2. 过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种. 3. 本指令不影响标志位.)

32位

...

常见的寄存器

u010783226的专栏

03-13

7448

嵌入式硬件

EAX、EBX、ECX、EDX

qq_41683305的博客

02-06

1957

前面学习了8086的基本知识,今天正式开始学习win32平台的汇编

EAX:累加寄存器

32位,功能和8086中ax相同

mov eax,dword ptr [ebp-4]

add eax,1

mov dword ptr [ebp-4],eax

EBX:基址寄存器

32位,功能和8086中bx相同

mov eax,dword ptr [ebx+8]

ECX:计数寄存器

32位,功能和8086中...

滴水三期:day02.4-通用寄存器

Edimade的博客

02-04

5015

一、32位通用寄存器>二、使用OD查看寄存器并且使用MOV指令修改寄存器中值>三、通用寄存器>四、汇编指令

x86架构常见寄存器介绍

03-04

介绍了一些X86常见的寄存器,帮助分析程序,在碰到需要分析性能或者程序的时候将大大的帮助你 比如:EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP 、CS、DS、ES、FS、GS、SS、EFLAGS RAX、RBX、RCX、RDX、RSI、RDI、RSP等,希望通过这些寄存器的说明帮你对代码汇编后有更深层次的了解。

汇编语言是一种底层语言,它可以直接操作计算机硬件,实现高性能的计算和操作。在计算机系统中,CPU寄存器是存储数据和指令的重要组成部分。对于Intel x86处理器,寄存器分为通用寄存器、段寄存器、标志寄存器、控制寄存器等多种类型。其中,通用寄存器是最常用的寄存器类型,包括16位、32位和64位三种不同大小的寄存器。这些寄存器具有多种用途,可以用来存储临时数据、指针、计数器等。在64位x86处理器中,还新增了8个64位的通用寄存器,可以更有效地支持大数据操作和高性能计算。

如果你对底层原理和计算机体系结构感兴趣,那么学习汇编语言将是一次很有意义的体验。掌握汇编语言可以让你更深入地理解计算机是如何工作的,对于系统级编程、驱动开发、反汇编和调试等方面都有很大的

VB 获得寄存器的值

09-21

VB获得寄存器的值

可以获得

ContexFlags

dr0

dr1

dr2

dr3

dr4

dr5

dr6

dr7

SegGs

SegFs

SegEs

SegDs

Edi

Esi

Ebx

Edx

Ecx

Eax

Ebp

Eip

SegCs

EFlags

Esp

SegSs

findjmp.exe

07-01

findjmp.exe及命令用法(以前传的积分自动变高了,重新传个)

findjmp.exe,包含了 msvcr100.dll。

Findjmp, Eeye, I2S-LaB

Findjmp2, Hat-Squad

FindJmp DLL registre

Ex: findjmp KERNEL32.DLL esp

Currently supported registre are: EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP

D:\>findjmp.exe kernel32.dll esp

Findjmp, Eeye, I2S-LaB

Findjmp2, Hat-Squad

Scanning kernel32.dll for code useable with the esp register

0x7C809F83 call esp

0x7C8369E0 call esp

0x7C83C2C5 push esp - ret

0x7C87641B call esp

Finished Scanning kernel32.dll for code useable with the esp register

Found 4 usable addre

HBSC.rar_pop

09-20

通用数据传送指令.

MOV 传送字或字节.

MOVSX 先符号扩展,再传送.

MOVZX 先零扩展,再传送.

PUSH 把字压入堆栈.

POP 把字弹出堆栈.

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP 交换32位寄存器里字节的顺序

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里 )

XLAT 字节查表转换.

── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即

0-FFH) 返回 AL 为查表结果. ( [BX+AL]->AL )

OllyICE反汇编教程及汇编命令详解

03-30

内容目录 计算机寄存器分类简介 计算机寄存器常用指令 ...2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)

蓝桥杯练习系统-基础题全解C++

最新发布

03-06

蓝桥杯练习系统-基础题全解C++

springboot145基于SpringBoot基于java的在线问卷调查系统的设计-毕业源码案例设计

03-06

如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于问卷调查信息管理方面的不规范,容错率低,管理人员处理数据费工费时,采用新开发的在线问卷调查系统可以从根源上规范整个数据处理流程的正规性和合法性。

在线问卷调查系统能够实现问卷管理,用户管理,题目管理,问卷调查管理,新闻资讯管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。

在线问卷调查系统可以提高问卷调查信息管理问题的解决效率,优化问卷调查信息处理流程,并且能够保证存储数据的安全,它是一个非常可靠,非常安全的应用程序。

关键词:在线问卷调查系统;Mysql数据库;Java语言

Java毕设-基于springboot+vue的智慧图书管理系统设计与实现(附源码,数据库,教程).zip

03-06

Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。

包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。

该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

项目都经过严格调试,确保可以运行!

1. 技术组成

前端:html、javascript、Vue

后台框架:SpringBoot

开发环境:idea

数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑)

数据库工具:navicat

部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑问的话,可以找我咨询

后台路径地址:localhost:8080/项目名称/admin/dist/index.html

前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

EAX、EBX、ECX、EDX、ESP、EBP、ESI和EDI1

07-28

这是x86架构中常见的寄存器名称。它们用于存储和操作数据。每个寄存器有不同的用途:

- EAX(累加器):用于算术和逻辑操作,以及函数返回值的存储。

- EBX(基址):通常用作指针或内存地址的基址。

- ECX(计数器):通常用于循环计数。

- EDX(数据):用于存储除法和乘法操作的结果。

- ESP(堆栈指针):指向当前堆栈顶部的指针,用于管理函数调用和局部变量。

- EBP(基址指针):用于在函数中访问参数和局部变量。

- ESI(源索引):通常用作源数据的指针。

- EDI(目的索引):通常用作目标数据的指针。

这些寄存器在汇编语言和低级编程中经常使用,以及在编写底层代码时会遇到它们。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

zhu2695

CSDN认证博客专家

CSDN认证企业博客

码龄16年

暂无认证

152

原创

8万+

周排名

160万+

总排名

165万+

访问

等级

1万+

积分

325

粉丝

382

获赞

77

评论

1648

收藏

私信

关注

热门文章

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

53492

C++执行外部程序(调用外部exe程序)

48479

IIS如何绑定域名 (IIS绑定域名详细设置方法)

44467

正确区分LJMP、AJMP、SJMP、JMP跳转指令

43767

用批处理(bat)同时运行多个程序的方法

36889

分类专栏

C++编程

58篇

SQL

7篇

设计模式

10篇

UML

4篇

算法

11篇

Oracle

26篇

C++网络编程

30篇

Windows API

13篇

MFC

6篇

C++多线程

18篇

C++ STL

29篇

C++笔试/面试题

9篇

测试工具

1篇

C++语法基础

23篇

C++高级特性

21篇

软件工程

3篇

Windows底层

13篇

C++ Template

5篇

操作系统

4篇

面试相关

2篇

Web

2篇

计算机网络

IDE相关

19篇

Windows SDK

4篇

数据结构

1篇

《Effective C++》

4篇

在线教程

1篇

IT职业生涯

2篇

COM编程

2篇

Javascript

1篇

有用工具

1篇

WMI

1篇

Windows注册表

4篇

BHO

1篇

VB6.0

5篇

免杀

4篇

加壳脱壳

2篇

网站相关

1篇

Windows脚本

1篇

免杀_花指令

7篇

汇编

5篇

免杀_特征码

2篇

Windows CMD/DOS

1篇

黑客

3篇

C#

20篇

学习笔记&总结

1篇

SQLServer

2篇

Windows使用相关

1篇

Visual Studio

2篇

链接_编程开发相关

1篇

链接_IDE相关

1篇

Java

2篇

asp.net

1篇

Linux

18篇

ftp

1篇

informix

2篇

AIX

1篇

加密算法

C++框架&开源库

47篇

Linux开发

20篇

Linux面试题

1篇

中间件

4篇

C++界面库

1篇

Win32

1篇

程序打包

2篇

cmd命令、编程

1篇

在职研究生

3篇

Kettle

2篇

Tomcat

1篇

最新评论

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

三月樱:

Symbol not defined: ECX 是为什么?

Microsoft Office Excel 不能访问文件。。。 可能的原因有。。。

m0_65432859:

我弄了这两个文件夹也不行请问是为什么?

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

普通网友:

老师,我悟了

C++程序实现自我复制

xpl肖朋礼:

应该是windows库的吧?

用批处理(bat)同时运行多个程序的方法

qq_43303846:

有bug啊 这么写的话 最后一个.exe总是开不了 只能开最后一个之前的

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

关于oracle with table as的用法

Oracle expdp / impdp 用法详解

Oracle坑之-空字符串与NULL

2018年4篇

2017年18篇

2016年118篇

2015年10篇

2014年25篇

2013年313篇

目录

目录

分类专栏

C++编程

58篇

SQL

7篇

设计模式

10篇

UML

4篇

算法

11篇

Oracle

26篇

C++网络编程

30篇

Windows API

13篇

MFC

6篇

C++多线程

18篇

C++ STL

29篇

C++笔试/面试题

9篇

测试工具

1篇

C++语法基础

23篇

C++高级特性

21篇

软件工程

3篇

Windows底层

13篇

C++ Template

5篇

操作系统

4篇

面试相关

2篇

Web

2篇

计算机网络

IDE相关

19篇

Windows SDK

4篇

数据结构

1篇

《Effective C++》

4篇

在线教程

1篇

IT职业生涯

2篇

COM编程

2篇

Javascript

1篇

有用工具

1篇

WMI

1篇

Windows注册表

4篇

BHO

1篇

VB6.0

5篇

免杀

4篇

加壳脱壳

2篇

网站相关

1篇

Windows脚本

1篇

免杀_花指令

7篇

汇编

5篇

免杀_特征码

2篇

Windows CMD/DOS

1篇

黑客

3篇

C#

20篇

学习笔记&总结

1篇

SQLServer

2篇

Windows使用相关

1篇

Visual Studio

2篇

链接_编程开发相关

1篇

链接_IDE相关

1篇

Java

2篇

asp.net

1篇

Linux

18篇

ftp

1篇

informix

2篇

AIX

1篇

加密算法

C++框架&开源库

47篇

Linux开发

20篇

Linux面试题

1篇

中间件

4篇

C++界面库

1篇

Win32

1篇

程序打包

2篇

cmd命令、编程

1篇

在职研究生

3篇

Kettle

2篇

Tomcat

1篇

目录

评论 8

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

Intel寄存器名称解释及用途,%eax%ebx等都是什么意思-腾讯云开发者社区-腾讯云

l寄存器名称解释及用途,%eax%ebx等都是什么意思-腾讯云开发者社区-腾讯云kalifa_lauIntel寄存器名称解释及用途,%eax%ebx等都是什么意思关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网kalifa_lau首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >Intel寄存器名称解释及用途,%eax%ebx等都是什么意思Intel寄存器名称解释及用途,%eax%ebx等都是什么意思kalifa_lau关注发布于 2018-04-28 14:35:496.7K0发布于 2018-04-28 14:35:49举报文章被收录于专栏:kalifaの日々kalifaの日々参考资料:https://www.swansontec.com/sregisters.html

x86家族的CPU都有8个通用寄存器,每一个寄存器的名字都是一组单词的缩写。就连这四个分别叫做%eax,%ebx,%ecx,%edx的寄存器,尽管看似是随意按照abcd的字母排序的,其实这a,b,c,d也分别是四个单词的缩写。

%——百分号表示这是一个寄存器。 末尾的x或许是register的缩写?(这句是我猜的)

e表示extend 意思是扩展到了32位。因为以前的intel寄存器都是16位的,它们的名字就是%ax,%bx等等,所以扩展到32位之后就在开头加上一个e,改名叫%eax,%ebx等1. EAX - Accumulator Register(累加器)当你写一个函数,最后返回一个值x(return x),那么这个x就要被存到%eax.

当你要把一个数字扩展成64位,那么%eax存这个数的低32位,%edx存这个数的高32位。2. EBX - Base Register(基地址寄存器)在所有的通用寄存器里,EBX是唯一一个没有什么重要的专门用途的寄存器,你可以用它存一个计算过程中的中间变量,或者一个指针等等。3. ECX - Counter Register(计数寄存器)在x86中,ecx就是那个程序中无处不在的计数变量i,x86中每一个计数相关的指令都要用到ecx。4. EDX - Data Register(数据寄存器)在除了累加器之外的其余七个通用寄存器里,edx与累加器的联系最为紧密。(当你要把一个数字扩展成64位,那么%eax存这个数的低32位,%edx存这个数的高32位。)

后面四个,大家可以看文章开头的资料,我就懒得翻译了。5. ESI - Source Index6. EDI - Destination Index7. EBP - Base Pointer8. ESP - Stack Pointer本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2018.03.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看其他本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!其他评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录1. EAX - Accumulator Register(累加器)2. EBX - Base Register(基地址寄存器)3. ECX - Counter Register(计数寄存器)4. EDX - Data Register(数据寄存器)5. ESI - Source Index6. EDI - Destination Index7. EBP - Base Pointer8. ESP - Stack Pointer领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?_ebp esp ebx esi edi ecx eax ebp-CSDN博客

>

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?_ebp esp ebx esi edi ecx eax ebp-CSDN博客

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?

最新推荐文章于 2024-02-24 11:56:06 发布

全速前行

最新推荐文章于 2024-02-24 11:56:06 发布

阅读量3.4w

收藏

69

点赞数

10

分类专栏:

汇编学习

文章标签:

语言

汇编

框架

破解

平台

x86

汇编学习

专栏收录该内容

4 篇文章

1 订阅

订阅专栏

 

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值。

这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。

EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。

EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。

ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。

EDX 则总是被用来放整数除法产生的余数。

ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.

EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:    push ebp ;保存当前ebp  mov ebp,esp ;EBP设为当前堆栈指针  sub esp, xxx ;预留xxx字节给函数临时变量.  ...    这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.

ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。

 

386部分寄存器:

 

优惠劵

全速前行

关注

关注

10

点赞

69

收藏

觉得还不错?

一键收藏

知道了

5

评论

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?

 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"(accum

复制链接

扫一扫

专栏目录

OD反汇编语言解释.doc

11-28

32位CPU所含有的寄存器有:

4个数据寄存器(EAX、EBX、ECX和EDX)

2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)

6个段寄存器(ES、CS、SS、DS、FS和GS)

1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)

1、数据寄存器

数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。

对低16位数据的存取,不会影响高16位的数据。

这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。

程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、 除、输入/输出等操作,使用频率很高;

寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用;

寄存器ECX称为计数寄存器(Count Register)。

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;

寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,

在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,

而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。

2、变址寄存器

32位CPU有2个32位通用寄存器ESI和EDI。

其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。

寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,

用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。

3、指针寄存器

其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。

32位CPU有2个32位通用寄存器EBP和ESP。

它们主要用于访问堆栈内的存储单元,并且规定:

EBP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;

ESP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,

用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

4、段寄存器

段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成

的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。

CPU内部的段寄存器:

ECS——代码段寄存器(Code Segment Register),其值为代码段的段值;

EDS——数据段寄存器(Data Segment Register),其值为数据段的段值;

EES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

ESS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;

EFS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

EGS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。

..................................

常用汇编指令汇总

如:

POP 把字弹出堆栈

02-29

常用汇编指令汇总

如:

MOV 传送字或字节。

MOVSX 先符号扩展,再传送。

MOVZX 先零扩展,再传送。

PUSH 把字压入堆栈。

POP 把字弹出堆栈。

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈。

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈。

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈。

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈。

5 条评论

您还未登录,请先

登录

后发表或查看评论

汇编代码中xor eax,eax的作用

m0_68653650的博客

12-06

632

1.其中,在x86汇编语言中,使用“xor eax,eax”指令将eax寄存器中的值与自己进行异或操作,将结果存储回eax寄存器中。在程序结束时,使用“mov eax,0”或“xor eax,eax”指令将eax寄存器中的值设置为0,表示程序正确结束,并向操作系统返回0值。如果您尝试将eax寄存器中的值设置为非零值,那么程序将以错误的方式结束,并将该值返回给操作系统,这可能会导致其他程序出现问题。总的来说,对于需要重置eax的情况,使用“xor eax, eax”是一个常见而且有效的方法。

易语言自用汇编模块

07-18

易语言自用汇编模块源码,自用汇编模块,pushad,popad,push_eax,push_ebx,push_ecx,push_edx,push_esi,push_edi,push_ebp,push_esp,push_常数,mov_eax_常数,mov_ebx_常数,mov_ecx_常数,mov_edx_常数,mov_esi_常数,mov_edi_常数,mov_ebp_常数,mov_esp_常数,mov_e

8086汇编指令集

11-25

一、数据传输指令

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.

1. 通用数据传送指令.

MOV 传送字或字节.

MOVSX 先符号扩展,再传送.

MOVZX 先零扩展,再传送.

PUSH 把字压入堆栈.

POP 把字弹出堆栈.

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP 交换32位寄存器里字节的顺序

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里 )

XLAT 字节查表转换.

EAX、EBX、ECX、EDX

qq_41683305的博客

02-06

1957

前面学习了8086的基本知识,今天正式开始学习win32平台的汇编

EAX:累加寄存器

32位,功能和8086中ax相同

mov eax,dword ptr [ebp-4]

add eax,1

mov dword ptr [ebp-4],eax

EBX:基址寄存器

32位,功能和8086中bx相同

mov eax,dword ptr [ebx+8]

ECX:计数寄存器

32位,功能和8086中...

汇编基础---寄存器的完整解释

oBuYiSeng的博客

09-09

1892

1、16位寄存器组

  

数据寄存器、变址寄存器统称为通用寄存器。 

   

    在AX中,"x"表示的意思是mix,“混合”的意思。对AX指的是AH和AL两个混合的总称。  

   在EAX中,”E”表示的意思是Extended,“扩展”的意思。

   4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp,eip

Shellcode.Cool!

05-24

5031

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

汇编基础知识

SWC0619的博客

03-13

770

逆向工程

llyICE是一款专业的代码编译和调试工具 强大 破解 非常好用

05-02

llyICE是一款专业的代码编译和调试工具,一些进行逆向工程的人员也会使用OllyICE进行一些软件的断点进行查找,OllyICE中文版是学习破解工作的一款利器。

使用说明

OllyICE.exe与OLLYDBG.EXE同时做了如下修改:

1.窗口、类名等常见修改;

2.格式化字符串的漏洞[OutPutDebugString]补丁;

3.参考dyk158的ODbyDYK v1.10 ,自动配置UDD、PLUGIN为绝对路径;

4.参考nbw的"OD复制BUG分析和修正"一文,修正从内存区复制数据时,有时无法将所有的数据都复制到剪贴板的bug。

5.参考ohuangkeo“不被OD分析原因之一和修补方法”,稍改进了OD识别PE格式能力(可能仍报是非PE文件,但己可调试了)。

6.修正OllyScript.dll插件bpwm命令内存读写都中断的问题。

7.jingulong的Loaddll.exe,可以方便让OllDbg中断在dll的入口。

8.感谢DarkBul告知SHIFT+F2条件窗口显示的bug及修复。

9.感谢dreaman修复Findlabel,Findname,Findnextname三个函数处理字符串会溢出的bug。

10.改善sprintf函数显示某些浮点数会崩溃的bug,这里的修复代码直接引用heXer的代码。

11.该修改版,配合HideOD插件,可以很好地隐藏OD。

12.新增实用的快捷键功能:

1).查看数据

push A480033 //如果按回车键,则数据窗口中显示A480033数据,此行按Shift+回车键,即可跳到A480033地址;

mov eax,401000 //此行按回车,则数据窗口中显示401000 数据

mov eax,[401000] //此行按回车,则数据窗口中显示401000 数据

mov [ebp-4], esp //此行按回车,则数据窗口中显示ebp-18的值(注意EIP必须指向当前行)

mov eax, [esp+10]//此行按回车,则数据窗口中显示esp+10的值(注意EIP必须指向当前行)

2).二进制复制/粘贴快捷键

反汇编窗口:Shift+C/Shift+V

数据窗口:Shift+C/Shift+V

注意:数据窗口中,Shift+V时,不必选择块大小,会将剪粘板的数据全部粘贴上去。

3).数据窗口查看数据 (来源于heXer)

数据窗口:

00406000 00 10 40 00 00 00 00 00 00 00 00 00 CA 2E 40 00 .@.........?@.

^

光标移到“00 10 40 00”第一字节00处,按回车,反汇编窗口显示401000;Shift+回车,数据窗口显示401000

4).堆栈窗口 (来源于heXer)

0012FF44 00401D8A //按回车,反汇编窗口显示0401D8A;Shift+回车,数据窗口显示0401D8A

0012FF48 00000000

5).数据窗口选择数据显示

当光标在数据窗口移动时,会显示出光标起始地址、结束地址,以及选中的块大小。

6).数据窗口切换到代码窗口

00406000 00 12 40 00 00 00 00 00 00 00 00 00 CA 2E 40 00 .@.........?@.

^

光标移到“00 12 40 00”第一字节00处,按Ctrl+双击鼠标,则反汇编窗口显示00401200开始的代码

7).反汇编窗口或数据窗口取当前地址

快捷键:ctrl+X

例如:

004091C0 push ebp

004091C1 mov ebp, esp

004091C3 push -1 //此行按快捷键ctrl+X ,则将地址004091C3复制到剪粘板里

数据窗口同样操作。

0040DD40 55 8B EC 83 EC 08 53 56 57 55 FC 8B 5D 0C 8B 45 U嬱冹SVWU鼖].婨

^

光标移到上面55处,按ctrl+X ,将地址0040DD40 复制到剪粘板里

8).取数据窗口光标所在字的数据

0040DD40 55 8B EC 83 EC 08 53 56 57 55 FC 8B 5D 0C 8B 45 U嬱冹SVWU鼖].婨

^

光标移到上面EC处,鼠标双击,则将数据565308EC复制到剪粘板里

9).快捷键T

0047F190 C7 A0 80 7C 40 7A 95 7C E1 EA 81 7C 8D 2C 81 7C 亅

0047F1A0 AB 14 81 7C A2 CA 81

超全汇编速查手册.zip

12-30

新手学习编程汇编要用的详细命令大全

通用数据传送指令.

MOV 传送字或字节.

MOVSX 先符号扩展,再传送.

MOVZX 先零扩展,再传送.

PUSH 把字压入堆栈.

POP 把字弹出堆栈.

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP 交换32位寄存器里字节的顺序

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里 )

XLAT 字节查表转换.

汇编语言指令以及伪指令速查手册

07-27

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.   1. 通用数据传送指令.     MOV   传送字或字节.     MOVSX 先符号扩展,再传送.     MOVZX 先零扩展,再传送.     PUSH   把字压入堆栈.     POP   把字弹出堆栈.     PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.     POPA   把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.     PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.     POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.     BSWAP 交换32位寄存器里字节的顺序

8080手册的汇编的素材吧

04-10

汇编指令手册

一、数据传输指令

  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.

  1. 通用数据传送指令.

    MOV  传送字或字节.

    MOVSX 先符号扩展,再传送.

    MOVZX 先零扩展,再传送.

    PUSH  把字压入堆栈.

    POP  把字弹出堆栈.

    PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

    POPA  把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

    PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

    POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

    BSWAP 交换32位寄存器里字节的顺序

    XCHG  交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

    CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

    XADD  先交换再累加.( 结果在第一个操作数里 )

    XLAT  字节查表转换.

        ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即

        0-FFH); 返回 AL 为查表结果. ( [BX AL]->AL )

易语言汇编类模块

07-18

易语言汇编类模块源码,汇编类模块,置代码,pushad,push_ecx,popad,push_edx,push_eax,push_ebx,push_esp,push_ebp,push_esi,push_edi,push,pop_ecx,pop_eax,pop_edi,pop_ebp,jmp_eax,call_eax,call_ecx,call_edx,call...

汇编反外挂

linjingtu的博客

02-24

805

为了打击外挂,游戏开发者会采取一系列措施,其中之一就是通过汇编语言级别的技术来加强游戏的反外挂机制。同时,随着外挂技术的不断发展,反外挂机制也需要不断更新和升级,以保持其有效性。行为检测:通过汇编语言实现游戏的行为检测机制,可以监控玩家的操作和游戏状态,以及检测潜在的外挂行为。加密和混淆:游戏的关键代码和数据可以使用汇编语言进行加密和混淆,增加外挂制作者分析和修改的难度。反汇编对抗:针对外挂制作者可能使用的反汇编工具和技术,游戏开发者可以在汇编层面设置陷阱和假象,使得反汇编的结果不准确或误导外挂制作者。

springboot学生毕业离校系统PPT

最新发布

03-06

一年一度的毕业季的到来,方方面面都普及使得学生毕业离校系统的开发成为必需。学生毕业离校系统主要是借助计算机,通过对学生、教师、离校信息、费用结算、论文审核等信息进行管理。为减少管理员的工作,同时也方便广大学生对个人所需毕业离校的及时查询以及管理。

学生毕业离校系统的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发环境。该学生毕业离校系统包括管理员、学生和教师。其主要功能包括管理员:首页、个人中心、学生管理、教师管理、离校信息管理、费用结算管理、论文审核管理、管理员管理、留言板管理、系统管理等,前台首页;首页、离校信息、网站公告、留言反馈、个人中心、后台管理等,学生:首页、个人中心、费用结算管理、论文审核管理、我的收藏管理、等,教师:首页、个人中心、学生管理、离校信息管理、费用结算管理、论文审核管理等功能。

本论文对学生毕业离校系统的发展背景进行详细的介绍,并且对系统开发技术进行介绍,然后对系统进行需求分析,对学生毕业离校系统业务信息、系统结构以及数据都进行详细

Java毕设-基于SpringBoot+Vue的宠物商城网站设计与实现(附源码,数据库,教程).zip

03-06

Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。

包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。

该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

项目都经过严格调试,确保可以运行!

1. 技术组成

前端:html、javascript、Vue

后台框架:SpringBoot

开发环境:idea

数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑)

数据库工具:navicat

部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑问的话,可以找我咨询

后台路径地址:localhost:8080/项目名称/admin/dist/index.html

前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

EAX、EBX、ECX、EDX、ESP、EBP、ESI和EDI1

07-28

这是x86架构中常见的寄存器名称。它们用于存储和操作数据。每个寄存器有不同的用途:

- EAX(累加器):用于算术和逻辑操作,以及函数返回值的存储。

- EBX(基址):通常用作指针或内存地址的基址。

- ECX(计数器):通常用于循环计数。

- EDX(数据):用于存储除法和乘法操作的结果。

- ESP(堆栈指针):指向当前堆栈顶部的指针,用于管理函数调用和局部变量。

- EBP(基址指针):用于在函数中访问参数和局部变量。

- ESI(源索引):通常用作源数据的指针。

- EDI(目的索引):通常用作目标数据的指针。

这些寄存器在汇编语言和低级编程中经常使用,以及在编写底层代码时会遇到它们。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

全速前行

CSDN认证博客专家

CSDN认证企业博客

码龄16年

暂无认证

607

原创

9293

周排名

1万+

总排名

835万+

访问

等级

5万+

积分

4057

粉丝

1210

获赞

1320

评论

1074

收藏

私信

关注

热门文章

Git冲突:commit your changes or stash them before you can merge.

370678

ImageView 设置图片

177272

Docker实践6:Cannot connect to the Docker daemon.

175516

用户名 不在 sudoers文件中,此事将被报告。

163340

Android问题集锦之二十八:You need to use a Theme.AppCompat theme (or descendant) with this activity.

157968

分类专栏

简单的Python

1篇

IT痴汉的工作现状

56篇

Android

263篇

Android实战技巧

53篇

Android问题集锦

60篇

Raspberry pi,一个好玩的派

10篇

突击Mercurial SCM(HG)

13篇

Docker实践

9篇

iOS菜鸟笔记

4篇

5分钟面试题

Java多线程

Bada

8篇

iPhone

11篇

Nokia

89篇

Windows Phone

28篇

笔记

22篇

备忘

67篇

项目管理

3篇

C++

112篇

.NET

17篇

Boost

7篇

DataBase

11篇

IT相关法律法规

1篇

JAVA

52篇

Linux

72篇

SCM

25篇

WEB开发

9篇

Windows相关

20篇

World Cup

3篇

业内新闻

3篇

名人堂

1篇

数据结构与算法

4篇

汇编学习

4篇

移动领域相关知识

17篇

系统运维

4篇

网络通信

27篇

设计模式

3篇

面试题

21篇

游戏

11篇

敏捷

2篇

职场英语

3篇

程序员与养生

2篇

湖畔散文

71篇

花园随笔

24篇

LAB9-Raspberry Pi

10篇

LAB7-Arduino

虚拟机

2篇

cocos-js

1篇

年终总结

3篇

最新评论

五子棋规则

螺懋:

uu你图没了捏

IT运维管理基础知识:运维人员应该必备的五大技术

全速前行:

我的天,我还在。

Android问题集锦之三十九:使用Camera录像的常见问题

mc1031945251:

这种权限代码是要在哪里添加的呢

IT运维管理基础知识:运维人员应该必备的五大技术

周老魔(本尊版):

2010年,我的天

Java中string的null和“”对比

x_dream17:

string.equals(null)只有当string是null的时候会报空指针错误,其余返回结果全是false,所以比较两个值是否相等,首先要确保equals前的值不能为null。此外equals方法不是String特有的,Integer也有。equals是Object方法。可以main方法自己验证我的说的。

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

Python做批处理,给安卓设备安装应用和传输图片

我的2022-工程师文化的思考

我的2020---熬过去

2023年1篇

2022年1篇

2020年4篇

2019年1篇

2018年3篇

2017年19篇

2016年14篇

2015年115篇

2014年93篇

2013年73篇

2012年48篇

2011年210篇

2010年355篇

2009年11篇

目录

目录

分类专栏

简单的Python

1篇

IT痴汉的工作现状

56篇

Android

263篇

Android实战技巧

53篇

Android问题集锦

60篇

Raspberry pi,一个好玩的派

10篇

突击Mercurial SCM(HG)

13篇

Docker实践

9篇

iOS菜鸟笔记

4篇

5分钟面试题

Java多线程

Bada

8篇

iPhone

11篇

Nokia

89篇

Windows Phone

28篇

笔记

22篇

备忘

67篇

项目管理

3篇

C++

112篇

.NET

17篇

Boost

7篇

DataBase

11篇

IT相关法律法规

1篇

JAVA

52篇

Linux

72篇

SCM

25篇

WEB开发

9篇

Windows相关

20篇

World Cup

3篇

业内新闻

3篇

名人堂

1篇

数据结构与算法

4篇

汇编学习

4篇

移动领域相关知识

17篇

系统运维

4篇

网络通信

27篇

设计模式

3篇

面试题

21篇

游戏

11篇

敏捷

2篇

职场英语

3篇

程序员与养生

2篇

湖畔散文

71篇

花园随笔

24篇

LAB9-Raspberry Pi

10篇

LAB7-Arduino

虚拟机

2篇

cocos-js

1篇

年终总结

3篇

目录

评论 5

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

x86-64中,movb $0xF, (%ebx) 这条汇编为什么不对? - 知乎

x86-64中,movb $0xF, (%ebx) 这条汇编为什么不对? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册x86汇编语言计算机科学x86-64中,movb $0xF, (%ebx) 这条汇编为什么不对?答案说%ebx不能作为address register,为什么呢? 如果说是因为64位是8字节寻址,所以4字节的%ebx不能寻址,那32位的程序为什么…显示全部 ​关注者19被浏览11,735关注问题​写回答​邀请回答​好问题 3​1 条评论​分享​6 个回答默认排序知乎用户震惊!著名编译器居然在 x86-64 上生成错误汇编!rbx、rdi,如假包换的 x86-64 汇编正经回答:没什么不对的,只要 ebx 真的指向一个有效的地址。冷知识:利用这一特性(AMD64 长模式下可以用 32 位寄存器间接寻址),有人在 Linux x86-64 上实现了 ILP32 数据模型——x32 ABI,程序运行在长模式下,完全支持 64 位指令和寄存器,但指针是 32 位。上面的图就是利用 x32 ABI 搞出来的。GCC 12.2 和 Clang 15.0.0,编译选项 -mx32 -Og,源代码如下:void *foo();

void bar(char *a) {

void *b = foo(); // 这一行是用来凑寄存器的

*a = 15; // 这一行是重点

}发布于 2023-01-29 01:10​赞同 6​​1 条评论​分享​收藏​喜欢收起​bionukg学点东西,搞点游戏​ 关注地址宽度要和运行模式匹配。你可以认为CPU有两个模式,一个64位模式,一个32位模式,在64位模式下的程序地址都是64位的,在32位模式下的程序都是32位的。所以,如果你试图在64位程序中使用32位的地址,当然会出问题。反之亦然。发布于 2023-01-27 00:03​赞同 2​​添加评论​分享​收藏​喜欢

Intel寄存器名称解释及用途,%eax%ebx等都是什么意思-CSDN博客

>

Intel寄存器名称解释及用途,%eax%ebx等都是什么意思-CSDN博客

Intel寄存器名称解释及用途,%eax%ebx等都是什么意思

最新推荐文章于 2022-10-14 16:20:03 发布

Kal1

最新推荐文章于 2022-10-14 16:20:03 发布

阅读量4.5k

收藏

33

点赞数

6

分类专栏:

汇编语言

文章标签:

pwn

汇编语言

原文链接:https://www.swansontec.com/sregisters.html

版权

汇编语言

专栏收录该内容

2 篇文章

0 订阅

订阅专栏

x86家族的CPU都有8个通用寄存器,每一个寄存器的名字都是一组单词的缩写。就连这四个分别叫做%eax,%ebx,%ecx,%edx的寄存器,尽管看似是随意按照abcd的字母排序的,其实这a,b,c,d也分别是四个单词的缩写。 %——百分号表示这是一个寄存器。 末尾的x或许是register的缩写?(这句是我猜的) e表示extend 意思是扩展到了32位。因为以前的intel寄存器都是16位的,它们的名字就是%ax,%bx等等,所以扩展到32位之后就在开头加上一个e,改名叫%eax,%ebx等

EAX - Accumulator Register(累加器) 当你写一个函数,最后返回一个值x(return x),那么这个x就要被存到%eax. 当你要把一个数字扩展成64位,那么%eax存这个数的低32位,%edx存这个数的高32位。 EBX - Base Register(基地址寄存器) 在所有的通用寄存器里,EBX是唯一一个没有什么重要的专门用途的寄存器,你可以用它存一个计算过程中的中间变量,或者一个指针等等。 ECX - Counter Register(计数寄存器) 在x86中,ecx就是那个程序中无处不在的计数变量i,x86中每一个计数相关的指令都要用到ecx。 EDX - Data Register(数据寄存器) 在除了累加器之外的其余七个通用寄存器里,edx与累加器的联系最为紧密。(当你要把一个数字扩展成64位,那么%eax存这个数的低32位,%edx存这个数的高32位。) ESI - Source Index EDI - Destination Index EBP - Base Pointer ESP - Stack Pointer

优惠劵

Kal1

关注

关注

6

点赞

33

收藏

觉得还不错?

一键收藏

知道了

0

评论

Intel寄存器名称解释及用途,%eax%ebx等都是什么意思

x86家族的CPU都有8个通用寄存器,每一个寄存器的名字都是一组单词的缩写。就连这四个分别叫做%eax,%ebx,%ecx,%edx的寄存器,尽管看似是随意按照abcd的字母排序的,其实这a,b,c,d也分别是四个单词的缩写。%——百分号表示这是一个寄存器。 末尾的x或许是register的缩写?(这句是我猜的)e表示extend 意思是扩展到了32位。因为以前的intel寄存器都是16位的,它们的名字就是%ax,%bx等等,所以扩展到32位之后就在开头加上一个e,改名叫%eax,%ebx等EAX

复制链接

扫一扫

专栏目录

cpuid.py:纯Python接口的CPUID指令

04-30

cpuid.py

现在,这很愚蠢!

纯Python库,用于通过查询指令来访问有关x86处理器的信息。 好吧,并非完全是纯Python ...

它的工作方式是分配一小块虚拟内存,将原始x86函数复制到该内存,赋予该内存执行权限,然后将该内存作为函数调用。 注入的函数执行CPUID指令并将结果复制回ctypes.Python可以读取的结构。

在运行x86处理器的Windows和Linux的32位和64位版本上,它应该都能正常工作。 Apple OS X和其他BSD系统也应该可以使用,尽管未经过测试...

为什么?

对于大便和嘻嘻笑。 另外,无需编译C包装程序即可访问低级功能非常好。

例子

使用eax = 0获取信息:

import cpuid

q = cpuid.CPUID()

eax, ebx, ecx, edx = q(0)

运行文件:

$ python example.py

汇编基础,入门知识,汇编指令

01-25

详细介绍汇编入门基础知识,如寄存器使用,汇编指令等

参与评论

您还未登录,请先

登录

后发表或查看评论

EAX、ECX、EDX、EBX寄存器的作用

热门推荐

tiger_ibm的专栏

04-02

1万+

一般寄存器:AX、BX、CX、DX

AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器

索引暂存器:SI、DI

SI:来源索引暂存器,DI:目的索引暂存器

堆叠、基底暂存器:SP、BP

SP:堆叠指标暂存器,BP:基底指标暂存器

EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元

ESI、EDI、ESP、EBP:為si,di,

在VC中如何访问寄存器,如:EAX,EBX,ECX等?

07-30

VC使用asm汇编中访问寄存器,如:EAX,EBX,ECX等

计算机系统基础第二次作业(1).doc

05-25

计算机系统基础第二次作业 3、对于以下AT&T格式汇编指令,根据操作数的长度确定对应指令助记符中的长度后缀, 并说明每个操作数的寻址方式。 (1)mov 8(%ebp, %ebx, 4), %ax (2)mov %al, 12(%ebp) (3)add ( , %ebx,4), %ebx (4)or (%ebx), %dh (5)push $0xF8 (6)mov $0xFFF0, %eax (7)test %cx, %cx (8)lea 8(%ebx, %esi), %eax 答:如下表所示: "题目编号 "长度后缀 "源操作数 "目的操作数 " "(1) "w "基址+比例变址+位移 "寄存器 " "(2) "b "寄存器 "基址+位移 " "(3) "l "比例变址 "寄存器 " "(4) "b "基址 "寄存器 " "(5) "l "立即数 "栈 " "(6) "l "立即数 "寄存器 " "(7) "w "寄存器 "寄存器 " "(8) "l "基址+变址+位移 "寄存器 " 4. 使用汇编器处理以下各行AT&T格式代码时都会产生错误,请说明每一行存在什么错误。 (1)movl 0xFF, (%eax) (2)movb %ax, 12(%ebp) (3)addl %ecx, $0xF0 (4)orw $0xFFFF0, (%ebx) (5)addb $0xF8, (%dl) (6)movl %bx, %eax (7)andl %esi, %esx (8)movw 8(%ebp, , 4), %ax 答: (1)书写错误。因为源操作数是立即数0xFF,所以需要在前面加上'$' (2)由于源操作数(%ax)是16位,而长度后缀是字节'b',所以不一致,应改为'movw ' (3)目的操作数不能是立即数寻址 (4)操作数位数超过16位,而长度后缀为16位的'w',应改为'orl' (5)不能用8位寄存器作为目的操作数地址所在寄存器 (6)源操作数寄存器与目的操作数寄存器长度不一致 (7)不存在ESX寄存器 (8)源操作数地址中缺少变址寄存器 7. 假设变量x和y分别存放在寄存器EAX和ECX中,请给出以下每条指令执行后寄存器EDX中的 结果。 (1)leal (%eax), %edx (2)leal 4(%eax, %ecx), %edx (3)leal (%eax, %ecx, 8), %edx (4)leal 0xC(%ecx, %eax, 2), %edx (5)leal ( , %eax, 4), %edx (6)leal (%eax, %ecx), %edx 答: (1)R[edx]=x //把eax的值放到edx中去 (2)R[edx]=x+y+4 //把eax+ecx+4的值放到edx中去 (3)R[edx]=x+8*y //把eax+8*ecx的值放到edx中去 (4)R[edx]=y+2*x+12 //把ecx+2*eax+12的值放到edx中去 (5)R[edx]=4*x //把4*eax的值放到edx中去 (6)R[edx]=x+y //把eax+ecx的值放到edx中去 8.假设以下地址以及寄存器中存放的机器数如下表所示 "地址 "机器数 "寄存器 "机器数 " "0x8049300 "0xfffffff0 "EAX "0x8049300 " "0x8049400 "0x80000008 "EBX "0x100 " "0x8049384 "0x80f7ff00 "ECX "0x10 " "0x8049380 "0x908f12a8 "EDX "0x80 " 分别说明执行以下指令或寄存中的内容交发生改变?改变后的内容是什么条件标志OF 、 SF 、 ZF 和 CF 会发生什么改变。 (1)指令功能为:R[edx] R[edx]+M[R[eax]]=0x00000080+M[0x8049300],寄存器EDX中内 容改变。改变后的 内容为以下运算的结果:00000080H+FFFFFFF0H 0000 0000 0000 0000 0000 0000 1000 0000 + 1111 1111 1111 1111 1111 1111 1111 0000 _______________________________________________ 1 0000 0000 0000 0000 0000 0000 0111 0000 因此,EDX中的内容改变为0x00000070。根据表3.5可知,加法指令会影响OF、SF、ZF和 CF标志。OF=0,ZF=0,SF=0,CF=1。 (2)指令功能为:R[ecx] R[ecx]-M[R[eax]+R[ebx]]=0x00000010+M[0x8049400]

快速入门汇编语言

翻肚鱼儿的博客

10-14

1694

汇编

深入理解计算机 - 第三章 程序的机器级表示 操作数指示符

u014753756的博客

12-26

944

%eax 寄存器寻址 格式Ea R[Ea]

先找到寄存器集合

带入寄存器 %eax 找到其的值 0x100

0x104 绝对寻址 格式 Imm M[Imm]

先找到存储器集合

带入存储器 0x104 找到其值 0xAB

$0x108 立即数寻址 格式 $Imm Imm

他就是 0x108

(%eax) 间接寻址 格式 (Ea) M[R[Ea]]

我们需要先找 R[Ea] 那么就是去找寄存器

%eax 的值是 0x100 M[0x100]那么需要去找 存储器

找到 0x100的地址 拿到 0xFF..

CPU通用寄存器 eax ebx ecx edx esp ebp esi edi

日志

08-13

4508

通用寄存器就是最基础的寄存器,在程序执行的过程中,绝大部分时间多在操作这些寄存器实现指令功能

eax(32位)/rax(64位):

通常用来执行加法,函数调用的返回值一般也放在这里面

ebx(32位)/rbx:

通常用来数据存取

ecx(32位)/rcx:

通常用作for循环的计数器

edx(32位)/rdx(64位):

读取I/O端口时,存放端口号

esp(32位)/rsp(64位):

栈顶指针,指向栈的顶部

ebp(32位)/rbp(64位):

栈底指针,指向栈的底部,用ebp+偏移量的形式来定位函数.

EAX、ECX、EDX、EBX、ESI、EDI、ESP、EBP寄存器

huang_123_456的专栏

11-13

3128

一般寄存器:AX、BX、CX、DX

AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器

索引暂存器:SI、DI

SI:来源索引暂存器,DI:目的索引暂存器

堆叠、基底暂存器:SP、BP

SP:堆叠指标暂存器,BP:基底指标暂存器

EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元

ESI、EDI、ESP、EBP:為si,di,

部分汇编总结

qq_44813266的博客

06-01

175

学习汇编

源程序编译成程序

汇编源程序:分为伪指令(编译器处理)和汇编指令(编译为机器码)

程序:源程序中最终由计算机执行、处理的指令或数据

程序最先以汇编语言的形式存在于源程序中,经编译、连接后转变为机器码,存储可执行文件中

数据格式

大多数GCC生成的汇编代码指令都有一个字符的后缀,表明操作数的大小。

数据传送指令有四个变种:

movb:传送字节

movw:传送字

movl:传送双字

mo...

MyCCL_V2.1特征码修改定位工具

12-14

自从CCL问世以来,特征码修改已经成为了对付杀毒软件的常用手法,但是所谓魔高一尺,道高一丈杀毒软件开始使用多重复合特征码来对付特征码修改,就是说只有你同时改掉程序所有的守护特征码,此程序才不被杀。

所以本程序的作用是进行多重特征码的定位,并实现自动化。

使用方法:

载入程序,然后分块写10(刚开始应先少数量划分,先确定大范围)。起使位置最好写代码段code,或者txt然后程序会把代码段分成10块,然后从第1块开始恢复,并生成文件。生成完毕后,用杀毒软件查杀生成文件的目录清除所有带毒文件(如果杀毒软件是按顺序杀毒的话,可以在杀掉第一个文件的时候就停止杀毒,此时特征码已经找到)。然后点击[二次处理]程序会自动记录第几个文件开始查到毒了,那个就是第1个特征码。程序会把有特征码的地方添0,并记录在右面,然后把后面的文件分10块开始从头恢复。这样不断进行(反复使用[二次处理]和杀毒)守护特征的大范围就找出了并记录在右面。

因为分为10块所以每块都比较大,这时候需要进行精确。在右面点第1个特征码,选择精确此特征码,然后此处就会被写入分析器里。分块可以写大一点比如100这样多次进行精确特征码的范围就出来了。

关于内存复合特征码定位原理和文件定位是相同的,只是用程序把生成的文件全部装载到内存中去了,然后用杀毒软件对内存进行查杀。找到报毒的文件,然后手工删除或者在特征码设置中手动添加即刻。其余操作和文件定位相同。

x86架构常见寄存器介绍

03-04

帮助分析程序,在碰到需要分析性能或者程序的时候将大大的帮助你 比如:EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP 、CS、DS、ES、FS、GS、SS、EFLAGS RAX、RBX、RCX、RDX、RSI、RDI、RSP等,希望通过这些寄存器的说明...

汇编---32位寄存器

02-05

汇编---寄存器,eax,ebx,ecx,edx的介绍,功能及使用

VB 获得寄存器的值

09-21

VB获得寄存器的值 可以获得 ContexFlags dr0 dr1 dr2 dr3 dr4 dr5 dr6 dr7 SegGs SegFs SegEs SegDs Edi Esi Ebx Edx Ecx Eax Ebp Eip SegCs EFlags Esp SegSs

0100 ADD [EAX],EAX

06-09

0100 ADD [EAX],EAX

springboot学生毕业离校系统PPT

最新发布

03-06

一年一度的毕业季的到来,方方面面都普及使得学生毕业离校系统的开发成为必需。学生毕业离校系统主要是借助计算机,通过对学生、教师、离校信息、费用结算、论文审核等信息进行管理。为减少管理员的工作,同时也方便广大学生对个人所需毕业离校的及时查询以及管理。

学生毕业离校系统的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发环境。该学生毕业离校系统包括管理员、学生和教师。其主要功能包括管理员:首页、个人中心、学生管理、教师管理、离校信息管理、费用结算管理、论文审核管理、管理员管理、留言板管理、系统管理等,前台首页;首页、离校信息、网站公告、留言反馈、个人中心、后台管理等,学生:首页、个人中心、费用结算管理、论文审核管理、我的收藏管理、等,教师:首页、个人中心、学生管理、离校信息管理、费用结算管理、论文审核管理等功能。

本论文对学生毕业离校系统的发展背景进行详细的介绍,并且对系统开发技术进行介绍,然后对系统进行需求分析,对学生毕业离校系统业务信息、系统结构以及数据都进行详细

Java毕设-基于SpringBoot+Vue的宠物商城网站设计与实现(附源码,数据库,教程).zip

03-06

Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。

包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。

该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

项目都经过严格调试,确保可以运行!

1. 技术组成

前端:html、javascript、Vue

后台框架:SpringBoot

开发环境:idea

数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑)

数据库工具:navicat

部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑问的话,可以找我咨询

后台路径地址:localhost:8080/项目名称/admin/dist/index.html

前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

财富管理系统,全球前10强生产商排名及市场份额调研数据.pdf

03-06

财富管理系统,全球前10强生产商排名及市场份额调研数据

springboot139基于SpringBoot华强北商城二手手机管理系统-毕业源码案例设计

03-06

进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的角角落落。这就促使二手交易网站的发展。二手交易网站可以实现远程购物,远程选择喜欢的商品和随时追踪订单的状态。二手交易网站给人们带来前所未有的体验,满足了新时代人们的购物需求,所以网上二手交易模式得到大力发展。

本系统为基于Springboot的华强北商城二手手机管理系统,是采用计算机和网络技术进行开发的在线交易平台,可以实现商品的展示、购买、评价以及销售等。本系统采用Java语言,数据库为Mysql,运行环境为Idea。使用角色分为注册用户、游客、管理员、商家,本系统的功能包括新闻管理、商品信息展示以及管理、注册用户管理、订单管理、商品评价同时还可以管理购物车。其中,游客负责浏览信息,注册用户可以购买商品、评价商品、管理订单,商家可以销售商品管理订单,管理员可以管理所有功能以及个人信息。本系统实现了商品的在线销售与购买,方便了购买者和销售者双方的利益,提高销量和购买效率,更符合现代人生活。

关键词:购物车,用户注册,商品信息管理,订单管理,Java语言

cycle: cmp ebx,0 jz exit and eax,ebx cmp eax,ebx jz next shl ebx,1 mov eax,esi jmp cycle阐述这段代码

04-26

这段代码是汇编语言的代码,它的作用是对寄存器中的值进行比较、逻辑运算、移位和跳转等操作。具体来说,它根据寄存器ebx的值判断是否为0,如果是,则跳转到exit处执行;否则,将eax寄存器与ebx进行逻辑与运算,并将结果存入eax寄存器中,然后比较eax和ebx的值,如果相等,则跳转到next处执行;如果不相等,则将ebx的值左移一位(相当于乘以2),并将esi寄存器的值存入eax中,然后跳转到cycle处重新执行这些操作,直到满足跳转条件退出循环。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

Kal1

CSDN认证博客专家

CSDN认证企业博客

码龄4年

暂无认证

102

原创

30万+

周排名

74万+

总排名

12万+

访问

等级

1598

积分

58

粉丝

120

获赞

53

评论

370

收藏

私信

关注

热门文章

BCD码加法的步骤及其原因

8442

【vue报错】Property or method “scope“ is not defined

6170

渗透测试工程师面试题大全(164道)

5499

System has not been booted with systemd as init system (PID 1). Can‘t operate

4785

Intel寄存器名称解释及用途,%eax%ebx等都是什么意思

4560

分类专栏

Windows

1篇

前端学习

5篇

Node.JS

1篇

汇编语言

2篇

学校课程

2篇

计算机图像处理

1篇

Java

4篇

计算机组成

2篇

信息安全数学基础

2篇

数据库原理与安全

3篇

计算机网络

1篇

Linux

2篇

CTF总结

12篇

PHP

7篇

SQL

10篇

闲谈

2篇

WEB

9篇

MISC

3篇

随手记知识大杂烩

5篇

CTF刷题 WEB

26篇

CTF刷题 密码学

4篇

CTF刷题 杂项

19篇

kali

1篇

python

2篇

计算机基础

1篇

最新评论

System has not been booted with systemd as init system (PID 1). Can‘t operate

以头发多少判功力:

这才是有用的,感谢

【vue报错】Property or method “scope“ is not defined

kkadbo168:

能不能再详细点怎么加

【XCTF 攻防世界】WEB 高手进阶区 NaNNaNNaNNaN-Batman

woowahahahahaha:

后缀名应该改成js,因为因为有的代码格式化软件会不认识

【BUUCTF】basic web BUU CODE REVIEW 1 1(反序列化漏洞,传引用判断相等)

CVE-柠檬i:

很有帮助,谢谢

System has not been booted with systemd as init system (PID 1). Can‘t operate

栓独爱青春:

翻了多少篇教程 不及这sudo /etc/init.d/docker start 一个管用

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

System has not been booted with systemd as init system (PID 1). Can‘t operate

【已解决】关于Windows10 1909家庭版开始菜单与搜索框无法开启的问题

2021全国大学生信息安全竞赛初赛部分WP

2021年11篇

2020年97篇

目录

目录

分类专栏

Windows

1篇

前端学习

5篇

Node.JS

1篇

汇编语言

2篇

学校课程

2篇

计算机图像处理

1篇

Java

4篇

计算机组成

2篇

信息安全数学基础

2篇

数据库原理与安全

3篇

计算机网络

1篇

Linux

2篇

CTF总结

12篇

PHP

7篇

SQL

10篇

闲谈

2篇

WEB

9篇

MISC

3篇

随手记知识大杂烩

5篇

CTF刷题 WEB

26篇

CTF刷题 密码学

4篇

CTF刷题 杂项

19篇

kali

1篇

python

2篇

计算机基础

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

EBX_百度百科

百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10EBX播报讨论上传视频信息技术术语本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!EBX 是基地址(base)寄存器, 在内存寻址时存放基地址。中文名EBX类    型信息技术术语EBX寄存器EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

通用寄存器_百度百科

器_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心通用寄存器播报上传视频收藏查看我的收藏0有用+10本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。 [1]中文名通用寄存器用    途用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果分    类数据寄存器、变址寄存器、指针寄存器、段寄存器、指令指针寄存器目录1简介2分类▪数据寄存器▪变址寄存器▪指针寄存器▪段寄存器▪指令指针寄存器3主要用途4相关信息简介播报编辑通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI.八个寄存器都可以作为普通的数据寄存器使用。但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基指针,SP为堆栈指针。32位cpu通用寄存器共有 8 个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多分类播报编辑数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 [1]32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 [1]4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 [1]寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 [1]在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。详细内容请见第3.8节——32位地址的寻址方式。 [1]变址寄存器32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 [1]寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 [1]它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 [1]指针寄存器32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影响高16位的数据。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 [1]段寄存器段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。 [1]指令指针寄存器32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。 指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。 在实方式下,由于每个段的最大范围为64K,所以,EIP中的高16位肯定都为0,此时,相当于只用其低16位的IP来反映程序中指令的执行次序。 [1]主要用途播报编辑通用寄存器数据寄存器AX乘、除运算,字的输入输出,中间结果的缓存AL字节的乘、除运算,字节的输入输出,十进制算术运算AH字节的乘、除运算,存放中断的功能号BX存储器指针CX串操作、循环控制的计数器CL移位操作的计数器DX字的乘、除运算,间接的输入输出变址寄存器SI存储器指针、串指令中的源操作数指针DI存储器指针、串指令中的目的操作数指针分类示意图变址 寄存器BP存储器指针、存取堆栈的指针SP堆栈的栈顶指针指令指针IP/EIP标志位寄存器Flag/EFlag32位CPU的段寄存器16位CPU的段寄存器ES 附加段寄存器CS 代码段寄存器SS 堆栈段寄存器DS 数据段寄存器新增加的段寄存器FS 附加段寄存器GS 附加段寄存器相关信息播报编辑运算器结构寄存器是CPU内部重要的数据存储资源,用来暂存数据和地址,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

EAX、ECX、EDX、EBX寄存器的作用 - 一个人的天空@ - 博客园

EAX、ECX、EDX、EBX寄存器的作用 - 一个人的天空@ - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

一个人的天空

博客园

  

首页

  

新随笔

  

联系  

管理

  

订阅 

EAX、ECX、EDX、EBX寄存器的作用

一般寄存器:AX、BX、CX、DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器索引暂存器:SI、DISI:来源索引暂存器,DI:目的索引暂存器堆叠、基底暂存器:SP、BPSP:堆叠指标暂存器,BP:基底指标暂存器EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。EDX 则总是被用来放整数除法产生的余数。ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:    push ebp ;保存当前ebp  mov ebp,esp ;EBP设为当前堆栈指针  sub esp, xxx ;预留xxx字节给函数临时变量.  ...    这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。386部分寄存器:状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。这几个寄存器中保存全局性和任务无关的机器状态。CR0中包含了6个预定义标志,0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。1位是监控协处理位MP(Moniter coprocessor),它与第3位一起决定:当TS=1时操作码WAIT是否产生一个“协处理器不能使用”的出错信号。第3位是任务转换位(Task Switch),当一个任务转换完成之后,自动将它置1。随着TS=1,就不能使用协处理器。CR0的第2位是模拟协处理器位 EM (Emulate coprocessor),如果EM=1,则不能使用协处理器,如果EM=0,则允许使用协处理器。第4位是微处理器的扩展类型位ET(Processor Extension Type),其内保存着处理器扩展类型的信息,如果ET=0,则标识系统使用的是287协处理器,如果 ET=1,则表示系统使用的是387浮点协处理器。CR0的第31位是分页允许位(Paging Enable),它表示芯片上的分页部件是否允许工作。CR1是未定义的控制寄存器,供将来的处理器使用。CR2是页故障线性地址寄存器,保存最后一次出现页故障的全32位线性地址。CR3是页目录基址寄存器,保存页目录表的物理地址,页目录表总是放在以4K字节为单位的存储器边界上,因此,它的地址的低12位总为0,不起作用,即使写上内容,也不会被理会。这几个寄存器是与分页机制密切相关的,因此,在进程管理及虚拟内存管理中会涉及到这几个寄存器,读者要记住CR0、CR2及CR3这三个寄存器的内容。esp:寄存器存放当前线程的栈顶指针ebp:寄存器存放当前线程的栈底指针

eip:寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。

posted on

2012-07-20 11:23 

一个人的天空@ 

阅读(135902) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 一个人的天空@

Powered by .NET 8.0 on Kubernetes

迷雾退散:揭秘创建进程时ebx为什么指向peb的答案-腾讯云开发者社区-腾讯云

:揭秘创建进程时ebx为什么指向peb的答案-腾讯云开发者社区-腾讯云FB客服迷雾退散:揭秘创建进程时ebx为什么指向peb的答案关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网FB客服首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >迷雾退散:揭秘创建进程时ebx为什么指向peb的答案迷雾退散:揭秘创建进程时ebx为什么指向peb的答案FB客服关注发布于 2021-10-21 15:30:246530发布于 2021-10-21 15:30:24举报文章被收录于专栏:FreeBufFreeBuf一、背景这篇文章的起因,是笔者之前在做样本分析的时候,经常会遇到需要调试傀儡进程的情况,而其中有一种情景是将启动的白进程PE文件整个掏空并用黑进程进行替换。为了确保被替换后的进程能顺利执行不崩溃,需要获取原进程各种上下文,并修改被替换后的新进程上下文,其中在原进程被挂起还没开始执行的时候,需要将eax指向新oep,而ebx指向新peb,而为什么这样设置的原因却很少有人提及。为此,在经过查阅了一定的资料与简单的分析后,我们可以找到答案。二、具体分析先抛出结论,这里的eax与ebx属于线程上下文信息,在一个PE文件开始被运行的过程中,主线程上下文初始化过程是在进程已经创建完成,而主线程还没创建的阶段发生的,下面是具体更详细的分析:首先我们需要对进程的创建有一个大概的认识,在ring3下创建进程API无非是CreateProcessA/W,但是无论调用哪一个,最终都会将相关参数转化为Unicode字符串,并最终调用CreateProcessInternalW,因此以下将主要分析CreateProcessInternalW,而在xp和win7下,它具体实现又有一些不一样的地方。2.1 XP下执行流程在xp下,它大概分为四个部分,分别是ring3下创建进程,ring0下创建进程,ring3下创建线程,ring0下创建线程,以NtCreateProcessEx为分界线,NtCreateProcessEx之前为ring3下创建进程主要流程。2.1.1Ring3下创建进程1. 判断处理dwCreationFlag各种标志位,包括是否包含不合法标记组合,判断优先级。2. 判断lpEnvironment是否为空,不为空则调用RtlAnsiStringToUnicodeString将其转为UniCode字符串。3. 判断lpApplicationName、lpCommandLine是否为空。如果lpApplicationName不为空直接调用RtlDosPathNameToNtPathName_U函数。将DOS路径(C:\\WINDOWS\\XXX)转换为NT路径(\\Device\\HarddiskVolume1\\WINDOWS\\XXX),为空则会解析lpCommandLine,主要按照’”’引号,’ ’空格,’\t’制表符作为分隔符进行解析并获取相应的PE文件,然后将DOS路径转换为NT路径。4. 调用NtOpenFile得到文件句柄,调用了NtCreateSectiond函数得到内存区对象句柄。5. 调用BasepIsProcessAllowed函数, 该函数用来判断应用程序名是否在授权文件列表中。6. 之后会经过一大段的函数进行各种校验,再得到内存区对象句柄后调用NtQuerySection函数,返回后得到节的基本信息(节基地址,大小,属性),并判断创建标志中是否包含DEBUG_PROCESS或者DEBUG_ONLY_THIS_PROCESS,如果不包含该标志,则判断PEB->ReadImageFileExecOptions域是否为0,如果包含DEBUG_PROCESS或者DEBUG_ONLY_THIS_PROCESS,或者不包含该标志但ReadImageFileExecOptions域不为0,调用LdrQueryImageFileExecutionOptions函数查询该信息。7. 检查镜像文件的部分信息的有效性,并调用函数BasepIsImageVersionOk判断镜像文件版本是否合法。8. 加载advapi32.dll并获得CreateProcessAsUserSecure函数的地址。9. 调用BaseFormatObjectAttributes将安全属性结构格式为NT对象属性结构(得到了对象属性),接着调用了_DbgUiConnectToDbg在实现通过调用NtCreateDebugObject函数来创建调试对象,调用DbgUiGetThreadDebugObject来获得调试对象(作为参数传递到0环)。10. 最后调用NtCreateProcessEx函数。2.1.2Ring0下创建进程NtCreateProcessEx内为ring0下创建进程主要流程。判断父进程是否存在,不存在则退出,否则,调用PspCreateProcess。在PspCreateProcess中,保存当前线程运行的前一个模式。通过KTHREAD->PreviousMode可以得到前一个模式。判断创建标志是否包含除DEBUG_PROCESSDEBUG_ONLY_THIS_PROCESS,CREATE_SUSPENDED之外其它标志, 如果包含其他的标志,则报错退出。3. 通过参数ParentProcess调用ObReferenceObjectByHandle函数得到父进程对象的指针。4. 判断参数 JobMemberLevel是否为0, 如果不为0,接着判断父进程的EPROCESS->Job是否为0,如果JobMemberLevel不为为0且EPROCESS->Job为0,则返回无效参数错误后退出该函数;否则的话,将父进程对象中的属性保存到局部变量中。5. 调用ObCreateObject函数创建新进程对象并将对象内容初始化为0,然后从父进程继承配额信息(PspInheritQuot)和设备位图信息(ObInheritDeviceMap),将父进程对象中的部分域给新进程。6. 判断参数SectionHandle是否为0,若不为0,调用ObReferenceObjectByHandle函数得到区对象指针,然后将区对象指针赋值给新进程EPROCESS的相应域。7. 接着就判断参数DebugPort是否为0,若不为0,调用ObReferenceObjectByHandle函数通过调试对象句柄得到调试对象指针,否则调用DbgkCopyProcessDebugPort函数从父进程拷贝DebugPort给新进程。8. 判断参数ExceptionPort是否为0,若不为0,调用ObReferenceObjectByHandle函数通过异常端口对象句柄得到异常端口对象指针。9. 接着调用PspInitializeProcessSecurity函数来设置新进程的安全属性, 主要是设置新进程的安全令牌对象。该函数会调用SeSubProcessToken函数来设置新进程对象的令牌对象。10. 接着调用MmCreateProcessAddressSpace为新进程创建地址空间,并构建页目录表、页表及物理页的关系。11. 调用KeInitializeProcess函数初始化新进程对象中内核对象、优先级、亲和性、页目录表物理地址帧号。12. 调用ObInitProcess函数来初始化新进程对象的表。13. 调用MmInitializeProcessAddressSpace函数初始化进程地址空间,该函数的实现中调用了KiAttachProcess函数来实现进程的切换(将当前线程挂靠到新进程中),以及初始化EPROCESS中的部分域和PFN、工作集列表等。14. 调用PspMapSystemDll函数映射新进程对象的系统DLL(即NTDLL,映射第一个DLL),该函数会调用MmMapViewOfSection映射节区,而MmMapViewOfSection会调用MiMapViewOfImageSection函数将DLL作为镜像映射。15. 接着调用MmGetSessionId函数获得指定进程的会话ID,然后调用SeSetSessionIdToken函数设置令牌的会话ID,之后再调用ExCreateHandle函数在PspCidTable中添加一项(PID)。16. 调用MmCreatePeb为新进程创建PEB,该函数首先通过调用KeAttachProcess函数将当前线程切换到新进程对象,然后通过MmMapViewOfSection函数将NLS节区映射到新进程的地址空间中,随后调用MiCreatePebOrTeb创建PEB/TEB。在MiCreatePebOrTeb函数中首先会通过ExAllocatePoolWithTag来申请0x34大小的空间,接着通过MiFindEmptyAddressRangeDownTree函数在VAD树中查找一块未被使用的地址空间范围,并返回该范围的起始地址,最后通过MiInsertVad函数将申请的地址空间插入到VAD树中。在创建PEB结构后,初始化PEB中部分域的值(镜像基地址,操作系统编译号等域),最后调用KeDetachProcess函数使线程回到原来的线程中。截止此步骤,PEB创建完成。同时观察也可以发现,这里也解析了包括Nt头、扩展头、扩展头魔术字效验等关键PE结构信息,联想到之前分析流程也处理了一部分PE结构,可以猜测早期的PE文件结构逆向可能也是通过逆向进程创建过程,即逆向CreateProcess API来实现的。17. 最后将新进程对象EPROCESS.ActiveProcessLinks更新为全局的活动进程链表(PsActiveProcessHead), 判断父进程是否为系统进程,调用SeCreateAccessStateEx设置访问状态,调用ObInsertObject函数将进程对象加入到进程对象的句柄表中,并通过KeQuerySystemTime(获取当前系统时间)结束PspCreateProcess的调用,完成ring0下进程的创建。接下来我们回到CreateProcessInternalW,以NtCreateThread为分界线,NtCreateProcessEx之后到NtCreateThread之前为ring3下创建线程流程,而NtCreateThread内则是ring0下创建线程流程,经过分析发现,我们所需要寻找的线程上下文设置其实就在ring3下创建线程流程内。本文参与 腾讯云自媒体分享计划,分享自微信公众号。原始发表:2021-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除unicode编程算法本文分享自 FreeBuf 微信公众号,前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!unicode编程算法评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录一、背景二、具体分析2.1 XP下执行流程2.1.2Ring0下创建进程领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

寄存器——通用寄存器 - 知乎

寄存器——通用寄存器 - 知乎首发于极客方舟切换模式写文章登录/注册寄存器——通用寄存器QKSword专注于网络安全寄存器是什么?就像人的正常生活需要吃喝拉撒,一个程序的运行也需要各方面的东西,如堆、栈和寄存器,今天首先谈一下寄存器。如果使用过OD、x64dbg之类的调试器,可以发现汇编代码中大多是对寄存器进行操作。为什么要使用它?这是由于寄存器属于CPU中的一块存储区域,拥有着非常高的读写速度,而程序运行最重要的就是快(和男人不一样)。汇编代码操作寄存器逆向与寄存器的py关系?在平常的逆向分析当中,读懂汇编代码是非常重要的,而汇编代码中的寄存器又扮演着非常重要的角色,每个寄存器中的值又代表了不同的含义。所以对寄存器有了基本的理解后,对逆向分析是有很大帮助的。寄存器结构前面瞎掰了那么多,这里首先看一下寄存器的结构。下图一以64位寄存器rax为例,其中0到31就是平常分析32位程序是常见的eax,0到15则是ax,而ah和al则分别是8到15和0到7。看到这里可能有点晕,这个的东西重点在那里?其实只要知道汇编指令中取ax、ah这些值时,获取的是那一部分数据就行,如下图二。RAX寄存器结构rax寄存器各部分的值通用寄存器逆向分析中常见的寄存器有4种:通用寄存器、段寄存器、标志位寄存器和指令指针寄存器。今天主要讲的是32位下的通用寄存器,下面列出了各个寄存器的名称。EAX:(针对操作数和结果数据的)累加器 ,返回函数结果EBX:(DS段中的数据指针)基址寄存器ECX:(字符串和循环操作数)计数器EDX:(I/O指针)数据寄存器EBP:(SS段中栈内数据指针)扩展基址指针寄存器ESI:(字符串操作源指针)源变址寄存器EDI:(字符串操作目标指针)目的变址寄存器ESP:(SS段中栈指针)栈指针寄存器上面对寄存器进行了简单的解释,不过对这种抽象的东西,还是用一个实例来梳理一下。下面编译环境为VS2015-x86-debug#include

#include

int main()

{

LPVOID lpAddress;

char *string = "GeekFZ_QKSword";

lpAddress = VirtualAlloc(NULL, 0x100, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE);

if (lpAddress == NULL)

{

printf_s("VirtualAlloc failed!");

return 0;

}

memcpy(lpAddress, string, 0x15);

return 0;

}对于eax寄存器,最主要的就是知道它保存的是函数的返回值。如图下所示,调用了函数VirtualAlloc并返回值lpAddress,最后判断lpAddress这个值是否成功获取。对应的汇编代码注释处可以看到相同的逻辑,而汇编中用来保存返回值的就是eax寄存器。源码和反编译代码1对于ecx,edx,esi和edi则可以在我们memcpy函数实现中找到,memcpy函数就是把第二个参数地址的值复制到第一个参数的地址处,看一下核心实现处。其中esi是源地址寄存器,指向了string;edi是目的地址寄存器,指向了lpAddress;edx是数据寄存器,用于保存要复制的数据;ecx作为计数器,保存了要复制数据的大小。源码和反编译代码2细心的你可能发现,我们这里主要讲了寄存器eax,ecx,edx,esi和edi。对于ebx,ebp和esp却没有提到,其中ebx找了半天也没找到对应的实例,大家就靠名字“数据指针基址寄存器”去天人感应一下,而ebp和esp则在栈那部分讲会比较清晰。参考《逆向工程核心原理》编辑于 2019-08-09 13:57逆向工程寄存器​赞同 57​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录极客方舟极