news 2026/4/26 14:48:00

32位汇编常见指令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
32位汇编常见指令

32位汇编常见指令
1)32位的汇编:核心针对x8632位处理器,常用指令按功能可归纳为:数据传输类(MOV 目的,源/PUSH源/POP目的/LEA目的,源),算术运算类(ADD 目的,源/SUB目的,源/MUL源/IMUL源/DIV源/IDIV源/INC操作数/DEC操作数),逻辑运算类(AND 目的,源/OR目的,源/XOR目的,源/NOT操作数/SHL目的,计数值/SHR目的,计数值),控制转移类(JMP 目标/JZ/JE目标/JNZ/JNE目标/CMP操作数1, 操作数2/CALL目标/RET),栈操作类(PUSHAD/POPAD),所有指令均基于32位寄存器(EAX/EBX/ECX等)和32位内存地址操作。


2)32位的工具ollydgb32.exe
ollydgb32.exe是针对32位x86架构程序的经典动态调试工具,支持32位汇编指令级调试、内存/寄存器实时查看修改,断点设置,指令单步执行,常用于32位汇编程序调试,逆向分析及漏洞挖掘,可直接加载32位可执行文件并解析对应的汇编指令执行流程。


3)32位的寄存器,内存,以及堆栈
寄存器:通用寄存器(EAX/EBX/ECX/EDX/ESI/EDI/EBP/ESP),还有段寄存器,标志寄存器,用于高速暂存和处理数据,访问速度远快于内存。
内存:以32位地址总线寻址,地址范围0~0xFFFFFFFF,按字节/字/双字为单位存储数据,是程序数据的核心存储区域。
堆栈:本质就是内存,用来存储临时变量,函数传递等,遵循先进后出原则,是32位程序运行时的关键存储区域栈顶。
ESP:32位栈顶指针寄存器,始终指向堆栈当前最顶端的位置,压栈 (ESP-4),出栈 (ESP+4) 时自动修改其值栈底。
EBP:32位栈基址指针寄存器,指向当前栈帧的底部,用于定位栈内函数参数,局部变量,是栈帧操作的基准地址。


!!!咱们把Windows下面所有汇编过一遍哦,因为后面要带着各位继续深入,很多地方咱们要用到汇编语言,如破解,逆向,代码还原,pwn,花指令,壳,免杀,二进制的漏洞分析/漏洞利用exp编写,提权,驱动开发,嵌入式开发等等。其他的安卓,苹果dylib/deb/arm,固件分析等空了再上!!!

4)案例
案例寄存器操作od随便打开一个exe程序实验就行观察eax,ax,ah,al变化:
MOV EAX,12345678
MOV AX,9999
MOV AH,88
MOV AL,66


案例内存操作od随便打开一个exe程序实验就行:
读取内存的值
MOV EAX,DWORD PTR DS:[4B011B]
MOV EAX,0x4B011B

写入eax值到内存中(写入前咱们把EAX寄存器修改为123,内存查看内容变化)
MOV DWORD PTR DS:[4B011F],EAX
MOV DWORD PTR DS:[4B011F],123

获取内存编号4B41DF
LEA EAX,DWORD PTR DS:[4B011F]
LEA EAX,DWORD PTR DS:[esp+8]

or
LEA EAX,[ESP+8]

案例堆栈操作od随便打开一个exe程序实验就行:
入栈/压栈都行
push 12345678
push eax

出栈/吐栈都行
pop ecx
pop edx

变形操作
mov eax,12345678
push eax
|
mov eax,12345678
mov dword ptr ds:[esp],eax
lea esp,dword ptr ss:[esp-4]

变形操作
mov eax,12345678
push eax
pop ecx
|
mov eax,12345678
mov ecx,dword ptr ss:[esp]
lea esp,dword ptr ss:[esp+4]

同样入栈
mov eax,12345678
lea edi,dword ptr ss:[esp]
stos dword ptr es:[edi]

重复3次入栈
mov eax,12345678
lea edi,dword ptr ss:[esp]
mov ecx,3
rep stos dword ptr es:[edi]

案例JCC操作od随便打开一个exe程序实验就行:
; 20=20,条件成立,跳转
MOV EAX, 20
CMP EAX, 20
JE 00401013

;10≠20,条件成立,跳转
MOV EAX, 10
CMP EAX, 20
JNE 00401013

;20≤20,条件成立,跳转
MOV EAX, 20
CMP EAX, 20
JLE 00401013

案例逆向od查看入栈,出栈变化以及返回结果
int add(int a, int b) 
{
    return a + b;
}

; 函数入口地址:00C81770
00C81770 > 55               PUSH EBP             ; 保存旧的EBP(栈基址指针)到栈中,栈顶ESP -= 4
00C81771   8BEC             MOV EBP,ESP          ; 将ESP的值赋给EBP,建立新的栈帧,此时EBP指向旧EBP的位置
00C81773   81EC C0000000    SUB ESP,0C0          ; 栈顶ESP -= 0xC0(192字节),为函数局部变量分配栈空间
00C81779   53               PUSH EBX             ; 保存EBX寄存器到栈中,ESP -= 4(遵循函数调用约定,保护非易失寄存器)
00C8177A   56               PUSH ESI             ; 保存ESI寄存器到栈中,ESP -= 4
00C8177B   57               PUSH EDI             ; 保存EDI寄存器到栈中,ESP -= 4
00C8177C   8BFD             MOV EDI,EBP          ; 将EBP的值赋给EDI,EDI作为内存填充的目标地址
00C8177E   33C9             XOR ECX,ECX          ; ECX寄存器清零(异或自身),作为REP指令的计数器
00C81780   B8 CCCCCCCC      MOV EAX,CCCCCCCC    ; 将0xCCCCCCCC(调试模式下的填充值)加载到EAX
00C81785   F3:AB            REP STOS DWORD PTR ES:[EDI] ; 重复执行:将EAX的值写入EDI指向的内存,EDI += 4,ECX -= 1,直到ECX=0
          &

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 12:47:44

为何云卓科技C11吊舱能适配多种规格载具?

在无人机巡检、影视航拍、地面移动平台观测等领域,对吊舱设备的核心要求之一便是广泛的平台适配性。云卓科技C11小型高清三轴吊舱正是为此需求设计,其紧凑的机身结构使其能够轻松集成于各种规格尺寸的载具之上。云卓科技在设计C11吊舱时,充分…

作者头像 李华
网站建设 2026/4/23 18:26:01

人才缺口行业以及过剩行业

&#x1f4c9; 人才“相对过剩”行业清单&#xff08;基于2025-2026年就业市场实证&#xff09; 重要澄清&#xff1a; ✅ “人才很多” 岗位需求 < 求职供给&#xff08;结构性过剩&#xff09; ❌ ≠ 行业无价值 / 从业者能力差 &#x1f511; 核心是“供需错配”&#x…

作者头像 李华
网站建设 2026/4/17 21:42:16

PHP毕设项目推荐-基于php的宠物电商猫粮狗粮购物商城的设计与实现基于PHP宠物用品商城网站基于php的宠物商城网站的设计与制作【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/17 18:59:12

资讯丨ISO 14001:2026标准最终版即将生效,全条款中英文对照

ISO 14001这一全球应用最广泛的环境管理体系标准&#xff0c;其修订工作已迎来关键节点。最新版本ISO 14001:2026的《国际标准最终草案》&#xff08;以下简称“FDIS”&#xff09;现已完成&#xff0c;进入为期一个月的正式投票表决期&#xff0c;截止日期为 2026年3月2日 。…

作者头像 李华