二十二、标志寄存器与栈(代码设计安全,与子程序寄存器安全类似)
2023-09-14 09:13:26 时间
1、子程序安全调用
子程序的设计要以保持寄存器值的平衡,栈空间的平衡为原则。
子程序的设计在必要时候,需要保持标志寄存器的平衡。
2、标志寄存器
在计算机中,有一个专用16位的寄存器FLAGS(又称:标志寄存器)。
标志寄存器是按位起作用的,每一位都有专门的含义,记录特定的信息。
FLAGS寄存器结构:
0 CF进位(是/否) CY NC
1
2 PF奇偶(偶/奇) PE PO
3
4 AF辅助进位(是/否) AC NA
5
6 ZF零(是/否) ZR NZ
7 SF符号(负/正) NG PL
8 TF
9 IF中断(允许/关闭) EI DI
10 DF方向(减量/增量) DN UP
11 OF溢出(是/否) OV NV
12
13
14
15
3、标志寄存器与栈
PUSHF 标志寄存器的值入栈
POPF 标志寄存器的值出栈
assume cs:code,ds:data,ss:stack
data segment
dw 256 dup (0H)
data ends
stack segment
dw 256 dup (0H)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,60H
cld
mov ax,1234H
push ax
std
pushf
cld
popf ;恢复到std
mov ax,4c00H
int 21H
code ends
end start
相关文章
- 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt )
- WordPress 5.2 发布,更安全的站点
- Linux下安全切换至Root权限方法(linux怎么切换到root用户)
- Linux扫描主机:安全诊断的利器(linux扫描主机)
- Linux安全:利用入侵检测工具保卫系统(linux入侵检测工具)
- Linux EMMC分区:快速实现安全架构(linuxemmc分区)
- 系统Linux L文件系统:安全、稳定、高效(linuxl文件)
- 运用Oracle远程备份安全保护数据(oracle远程备份)
- 走向成功——北京Linux安全工程师的职业发展之路(北京linux安全工程师)
- 破解Redis远程连接之路解锁更安全的密码保护(带密码远程连接redis)
- 短信验证码安全存储至Redis(短信验证码存到redis)
- 如何修改防火墙,更安全地访问Redis(修改防火墙访问redis)
- Redis集群安全下线流程(redis集群的下线流程)
- Oracle SHA 保护安全最重要(oracle sha?)
- 使用Redis脚本语法实现更安全高效的持久存储(redis脚本语法)