EFLAGS寄存器(标志寄存器)】的更多相关文章

在8086CPU中有一个特殊的寄存器--标志寄存器,该寄存器不同于其他寄存器,普通寄存器是用来存放数据的读取整个寄存器具有一定的含义,但是标志寄存器是每一位都有固定的含义,记录在运算中产生的信息,标志寄存器的机构如下图: 寄存器中的第1.3.5. 12. 13. 14 .15位在8086CPU中没有使用,其他位置代表不同的含义,各个位置的意思如下(该表截自百度知百科中的标志寄存器): 一般我们常用到的是如下几个标志 1)CF:CF标志表示进位,我们知道对于8086CPU来说,寄存器只能存储16位…
[reverse]逆向5 标志寄存器 1.引言 通过一个creak.exe文件的爆破,引出现阶段需要学习的知识 2.标志寄存器 标志寄存器有上图这么多个 记住这几个寄存器的位置和名称 下面是6个状态标志位 1.进位标志CF(Carry Flag) 如果运算结果的最高位产生了一个进位或者借位,那么其值为1,否则为0 做个实验 我们先给eax一个5555FFFF的数据,然后再加1 然后将c变成0 运行这两句汇编 发现eax虽然进位了,但不是最高位进位,因为eax是32位的 我们再试一试al 把所有标…
这篇文章不是从0开始的,前面还有一些汇编基础指令以及进制,我都没写,时间问题,还是今天空闲,我才想补一下博文,后面我陆续会把前面知识点渐渐补上.我不会重0基础讲起,中间会以.汇编.C.C++交叉的形式讲解,实战或者学习中才能更好的提升自己! EFLAGS寄存器 这些标记出来的标志位十分重要,如果对于逆向开发,这些是需要课在脑子里的,可以不强背,实战中运用熟悉就自然记来了,为了方便描述,仅以8位来描述 演示之前,请读者参照下方红色字体,进行简单设置一下,后面都参考该格式. OD中展示一遍效果,AL…
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF 未使用 嵌套标志 I/O权限标志占2位 溢出标志 方向标志 中断允许标志 单步标志 符号标志 零标志 未使用 辅助标志 未使用 奇偶标志 未使用 进位标志 上表是 32 位寄存器 EFLAGS 的低 16 位. 不能直接读写 EFLAGS, 但有些方便的指令, 如:LAHF: 读取EFLAGS 低 8 位到 AH; SAHF 是 LAHF 的反向操作.…
前言:   此文章收录在本人的<学习笔记分享>分类中,此分类记录本人的学习心得体会,现全部分享出来希望和大家共同交流学习成长.附上分类链接:   https://www.cnblogs.com/tibbors/category/1729804.html 学习内容:堆栈 堆栈的优点:临时存储大量数据,便于查找 堆栈中越往顶部地址编号越小 压栈出栈变的都是栈顶 堆栈的操作分解: 前提操作: MOV EBX,13FFDC //BASE MOV EDX,13FFDC //TOP 操作一:压入数据 法一…
这个标志寄存器似乎很重要,不干掉它,中断这玩意还进行不下去了,但是过于复杂,都是一些跟计算结果相关的位,头痛 (这是别人写的一篇非常好的关于标志寄存器的文章http://blog.csdn.net/wangkehuai/article/details/7337328 ,其实我这是转载 ,只做了一点排版的工作,很惭愧) 其他位不具备任何意义 6个状态标志位     CF-进位标志,加法时的最高位(D7或D15)产生进位或减法时最高位出现借位,则CF=1,否则CF=0:     AF-辅助进位标志,…
在Debug中,标志寄存器是按照有意义的各个标志位单独表示的. 下面列出Debug对我们已知的标志位的表示.…
标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW)   标志寄存器PSW是一个16为的寄存器.它反映了CPU运算的状态特征并且存放某些控制标志.8086使用了16位中的9位,包括6个状态标志位和3个控制标志位. CF(进位标志位):当执行一个加法(减法)运算时,最高位产生进位(或借位)时,CF为1,否则为0.ZF零标志位:若当前的运算结果为零,则ZF为1,否则为0.SF符号标志位:该标志位与运算结果的最高位相同.即运算结果为负,则SF为1,否则为0.OF溢出标志位:若运算结果超出机器能…
pushf 和 popf pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,输入标志寄存器. pushf 和 popf,为直接访问寄存器提供了方法. 格式 pushf popf 这两条指令后面都不加东西,默认的操作对象是:所有的标志寄存器. 标志寄存器在 Debug 中的表示 在寄存器中,标志寄存器是按有意义的各个标志位单独表示的.在 Debug 中,我们可以看到: 标志 值为1的标记 值为0的标记 of OV NV sf NG PL zf ZR NZ pf PE PO…
-r 用这个指令,得到的信息右下角: NV   UP   EI   PL   NZ   NA   PO   NC这些符号代表的就是标志寄存器里常用标志位的值. 这个是符号值对应表: 溢出标志OF(Over flow flag)                             OV(1)                         NV(0) 方向标志DF(Direction flag)                             DN(1)                …
汇编 JCC指令表 JCC指条件跳转指令,CC就是指条件码. JCC指令 中文含义 英文原意 检查符号位 典型C应用 JZ/JE 若为0则跳转:若相等则跳转 jump if zero;jump if equal ZF=1 if (i == j);if (i == 0); JNZ/JNE 若不为0则跳转:若不相等则跳转 jump if not zero;jump if not equal ZF=0 if (i != j);if (i != 0); JS 若为负则跳转 jump if sign SF…
反调试--11--检测TF标志寄存器 在intel的x86寄存器中有一种叫标志寄存器: 标志寄存器中的TF(Trap Flag)位,CPU在执行完一条指令后,如果检测到标志寄存器的TF位为1,则会产生一个int 1中断,然后再将TF置为0,后进行int 1中断后继续执行.操作系统上可以视为异常. 再加上出现了异常如果有调试器就会返回给调试器,如果调试器继续往下走也没啥问题,因为我们这里的异常代码是一个nop,而一个普通运行的进程因为没调试器,所以就会走异常处理程序,所以就是走异常处理程序的就是正…
比如: mov ax,x mov bx,y cmp ax,bx cmp ax,bx的逻辑含义是比较ax,bx中的值.如果执行后: ZF=1则AX=BX ZF=0则AX!=BX CF=1则AX<BX CF=0则AX>=BX CF=0并ZF=0则AX>BX CF=1或ZF=1则AX<=BX CPU在执行cmp指令的时候,也包含两种含义:进行无符号运算和进行有符号数运算.cmp ah,bh如果ah=bh则ah-bh=0所以ZF=1如果ah≠bh则ah-bh≠0所以ZF=0所以我们根据cm…
8086CPU的flag寄存器结构如下: [ ] [ ] [ ] [ ] [OF][DF][IF][TF][SF][ZF][ ][AF][ ][PF][ ][CF] 其中debug中的显示为: 标志 值为1时 值为0时 含义 OF OV(溢出) NV(未溢出) 溢出标志 DF DN(减少) UP(增加) 方向标志 IF EI(允许) DI(禁止) 中断标志 TF ?(单步调试) ? 跟踪标志 SF NG(负) PL(正) 符号标志 ZF ZR(等于0) NZ(不等于0) 零标志 AF AC(进位…
目录 32位CPU所含有的寄存器 数据寄存器 变址寄存器 指针寄存器 段寄存器 指令指针寄存器 标志寄存器 32位CPU所含有的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间. 32位CPU有4…
序言 前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器. 寄存器这个太多太复杂,不适合写故事,拖了很久,总算是写完了,这篇文章就来详细聊聊x86/x64架构的CPU中那些纷繁复杂的寄存器们. 长文预警,时速较快,请系好安全带-起飞~ 自1946年冯·诺伊曼领导下诞生的世界上第一台通用电子计算机ENIAC至今,计算机技术已经发展了七十多载. 从当初专用于数学计算的庞然大物,到后来大型机服务器时代,从个人微机技术蓬勃发展,到互联网浪潮席卷全球,再到移动互…
前置知识 x86泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构.最早的8086处理器于1978年由Intel推出,为16位微处理器. 80X86 包括Intel 8086.80186.80286.80386以及80486 内存的分段和分页机制(参考<Linux内核完全剖析>) 80X86寄存器 关于什么是寄存器 以下基于80386 来说明 80386包含了16个寄存器,并分为以下几种类型: 通用寄存器.包含八个多用途的寄存器,通常进行算数和逻辑运算 段寄存器.包含六个寄存器…
Linux_总结 具体博客链接 计算机是如何工作的 操作系统是如何工作的 构造一个简单的Linux系统MenuOS 系统调用(上) 系统调用(下) 进程的描述和创建 可执行程序的装载 进程的切换和系统的一般执行过程 一.计算机是如何工作的 存储程序计算机工作模型 冯诺依曼体系结构 从硬件角度来看:CPU和内存,由总线连接,CPU中有一个名为IP的寄存器,总是指向内存的某一块:CS,代码段,执行命令时就取IP指向的一条指令,然后IP自加1,就指向下一条指令. 从程序员角度来看:即存储程序计算机,内…
80x86系统寄存器和系统指令 1.标志寄存器(EFLAGS) 标志寄存器EFLAGS的标志位含义如下图: TF 位8是跟踪标志(Trace flag),当设置该位时可为调试操作启动单步执行方式.复位时则禁止单步执行.在单步执行方式下,处理器会在每个指令执行后产生一个调试异常,这样我们可以观察执行程序在每条指令执行后的状态. IOPL 位13-12时I/O特权级(I/O Privilege Level)字段.该字段指明当前运行程序或任务的I/O特权级别IOPL.当前任务或程序的CPL必须小于这个…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 每周实验报告: 反汇编一个简单的C程序http://www.cnblogs.com/ClareOhno/p/5223874.html 操作系统是如何工作的http://www.cnblogs.com/ClareOhno/p/5248098.html 跟踪分析Linux内核的启动过程http://www.cnblogs.com/ClareOhno/…
x86反汇编速成 x86体系结构 3种硬件构成: 中央处理器:负责执行代码 内存(RAM):负责存储所有的数据和代码 输入/输出系统(I/O):为硬盘.键盘.显示器等设备提供接口 内存 一个程序的内存可以分为以下四个主要的节: 栈:栈用于函数的局部变量和参数,以及控制程序执行流. 堆:堆是为程序执行期间需要的动态内存准备的,用于创建(分配)新的值,以及消除(释放)不再需要的值. 代码:代码节包含了在执行程序任务时CPU所取得的指令. 数据:在程序初始加载时放到这里,程序运行时它们并不发生变化.…
1.冯诺依曼体系结构:也就是指存储程序计算机 硬件(存储程序计算机工作模式): 软件(程序员角度): 2.API:程序员与计算机的接口界面 ABI:程序与CPU的接口界面 3.X86的实现: 4.X86 CPU的寄存器: 所有E开头的寄存器一般来说都是32位的. EBP:堆栈基址指针 ESP:堆栈顶指针 32位通用寄存器: 5.CPU在实际取指令时根据cs:eip来准确定位一个指令 6.EFLAGS register标志寄存器 7.X86的32位寄存器和64位寄存器在核心机制上差别不大,前面带R…
慕课18原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.背景知识: 1.进程与程序的关系: 进程是动态的.而程序是静态的: 从结构上看,每个进程的实体都是由代码断和相应的数据段两部分组成的,这与程序的含义非常相近: 一个进程能够涉及多个程序的执行.一个程序也能够相应多个进程,即一个程序段可在不同数据集合上执行.构成不同的进程: 并发性: 进程具有创建其它进程的功能: 操作系统中的…
当今MS-Windows横扫大江南北,让我们这就来研究一下它的祖宗——MS-DOS! 这本书很难得,希望读者好好学习! DOS程序员手册(一) DOS教程 (以下内容全部为原作者的阐述,照样保留) 这个电子书只是很简单地把txt做成了chm,文本格式方面可能会让人看得有点恼火,呵,不好意思了,将就一下,因为我本身写网页是手工的,如果全部进行整理会花上几天时间.希望您看的时候不会边看边骂 (京)新登字158号 DOS Programmer's Reference,4th Edition Terrv…
逆向分析基础 0x01-0x0C 本笔记使用汇编指令为x86架构下汇编指令,ARM架构汇编指令不做介绍 0x01. 关于RE 逆向工程(Reverse Engineering RE) 逆向分析方法: 静态分析法:观察代码文件的外部特征.获取文件的类型(EXE.DLI.DOC.ZIP等).大小.PE头信息.Import/Export API.内部字符串.是否运行时解压缩.注册信息.调试信息.数字证书等多种信息,使用反汇编查看内部代码 动态分析法:通过调试来分析代码流,获取内存状态,可以在观察文件.…
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令,普遍地说,特定的汇编语言和特定的机器语言指令集是相互对应的,不同平台之间不可直接移植. 该系列笔记,记录了Win32汇编的常用语法规则,有些汇编代码并没有…
在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操作系统(本部分对应 L10 && L11 && L12) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 这一部分比较难,一难在理解,二难在实现,其中L12是最难的,反复看了很多遍.之后需要…
目录 CPU的功能模块 cpu总线 CPU寄存器 16位cpu的寄存器组 32位cpu的寄存器组 64位cpu的寄存器组 CPU的功能模块 CPU从逻辑上可以划分成3个模块,分别是控制单元.运算单元和存储单元,这三部分由CPU内部总线连接起来 控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register).指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller) 运算单元:是运算器的核心.可以…
计算机是如何工作的 存储程序计算机工作模型 冯诺依曼体系结构 从硬件角度来看:CPU和内存,由总线连接,CPU中有一个名为IP的寄存器,总是指向内存的某一块:CS,代码段,执行命令时就取IP指向的一条指令,然后IP自加1,就指向下一条指令. 从程序员角度来看:即存储程序计算机,内存存储数据和指令,CPU就是一个for循环,总是在执行下一条指令,CPU负责解释和执行这些指令. CPU如何识别这些指令? 定义API:程序员与计算机的接口界面 ABI:程序与CPU的接口界面,二进制指令编码,只涉及汇编…
第一周学习总结--计算机是如何工作的 作者:刘浩晨 一.存储程序计算机工作模型 冯诺依曼体系结构:核心思想为存储程序计算机.两个层面: (1)硬件的角度(计算机主板):一个CPU,一块内存,之间有总线连接.CPU内部有一个IP计算器,IP指向内存中的指令,并依次加一执行: (2)另一个层面,程序员的角度:存储程序计算机工作模型(如下图) 解释:CPU抽象为for循环,总是执行下一条指令,内存保存指令和数据,CPU来解释和执行这些指令. API:应用程序编程接口(程序员与计算机的接口界面) ABI…