汇编之JCC指令
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-09-06,21:59:16。
作者By-----溺心与沉浮----博客园
JCC指令决定它跳不跳转跟别的没关系,只跟EFLAG标志寄存器有关系!!!
1、JE, JZ 结果为零则跳转(相等时跳转) ZF=1
2、JNE, JNZ 结果不为零则跳转(不相等时跳转) ZF=0
3、JS 结果为负则跳转 SF=1
4、JNS 结果为非负则跳转 SF=0
5、JP, JPE 结果中1的个数为偶数则跳转 PF=1
6、JNP, JPO 结果中1的个数为偶数则跳转 PF=0
7、JO 结果溢出了则跳转 OF=1
8、JNO 结果没有溢出则跳转 OF=0
9、JB, JNAE 小于则跳转 (无符号数) CF=1
10、JNB, JAE 大于等于则跳转 (无符号数) CF=0
11、JBE, JNA 小于等于则跳转 (无符号数) CF=1 or ZF=1
12、JNBE, JA 大于则跳转(无符号数) CF=0 and ZF=0
13、JL, JNGE 小于则跳转 (有符号数) SF≠ OF
14、JNL, JGE 大于等于则跳转 (有符号数) SF=OF
15、JLE, JNG 小于等于则跳转 (有符号数) ZF=1 or SF≠ OF
16、JNLE, JG 大于则跳转(有符号数) ZF=0 and SF=OF
有符号无符号的区别:大家有兴趣可以去尝试一下
CMP AL,CL
JG 0x12345678
JA 0x12345678
这里我也不上图了,就简单列举一下,汇编指令的复习也就暂告一段落了,总算可以舒一口气了,虽然博文写了就十来篇,但笔者私底下的功课绝不止这么点,真的是要吐了。汇编的学习没别的,就是练,也不需要靠你去背,背来的东西迟早都会忘,但是忘的速度会很快。只有练到自己把自己恶心到,才能让自己把自己的功夫练到位!(当然笔者还没到那种境界,不然也不会重新来复习汇编了)真的!学汇编一定不要听信书上说的死记硬背!!!只有一句,忘死里练,练到把自己恶心得想锤爆电脑为止。
当然我说汇编学习告一段落,也不是说真不去碰汇编了,汇编会长期伴随着我,因为后面的堆栈图,C语言逆向,C++逆向,汇编是一直紧随的,而且还会有新的汇编指令再去学,只是换个方向去了解汇编了。
上面的JCC指令哗啦哗啦一摆一大堆,有人会问,靠!这怎么去记,这记得来么!如果你的英语有一点点底子的话,那恭喜你,完全不用去记了,去找大于,小于,等于,不等于英语单词就行,这些都是这英文单词的缩写。如果你英语差的话,也没事,反正都是跟if...else相关的,见多了,练多了,不用刻意去记,也会形成自然反射的记住的。
我下面借鉴他人文章,COPY这张表格,这张表格有JCC指令的英文单词全拼,可以帮助你更好的去理解JCC指令,注意结合我上面列出来的有符号的大于小于,和无符号的大于小于
| 指令 | 英文 | 中文 |
| je | Equal | 等于 |
| jne | Not Equal | 不等于 |
| jg | Creater | 大于 |
| jge | Creater or Equal | 大于等于 |
| jng | Not Greater | 不大于 |
| jnge | Not Greater or Equal | 不大于等于 |
| jl | Less | 小于 |
| jle | Less or Equal | 小于等于 |
| jnl | Not Less | 不小于 |
| jnle | Not Less or Equal | 不小于等于 |
| ja | Above | 高于 |
| jae | Above or Equal | 高于等于 |
| jna | Not Above | 不高于 |
| jnae | Not Above or Equal | 不高于等于 |
| jb | Below | 低于 |
| jbe | Below or Equal | 低于等于 |
| jnb | Not Below | 不低于 |
| jnbe | Not Below or Equal | 不低于等于 |
| jpe | Parity Even | 校验为偶 |
| jpo | Parity Odd | 检验为奇 |
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-09-06,21:59:16。
作者By-----溺心与沉浮----博客园
大家有兴趣可以尝试一下这道题,尝尝鲜。对JCC理解会有很好的帮助。
作业:使用汇编指令修改标志寄存器中的某个位的值,实现JCC的十六种跳转.
条件1、不允许在OD中通过双击的形式修改标志寄存器.
条件2、要通过汇编指令的执行去影响标志位,能用CMP和TEST实现的优先考虑.
汇编之JCC指令的更多相关文章
- JCC 指令
JCC跳转指令 JCC指条件跳转指令,CC就是指条件码. JCC指令 中文含义 英文原意 检查符号位 典型C应用 JZ/JE 若为0则跳转:若相等则跳转 jump if zero;jump if eq ...
- 针对JCC指令练习的堆栈图
堆栈图,主要目的就是练习一下JCC指令的熟练度,供参考 版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-09-10,23:41:41.作者By-----溺心与沉浮----博客园 ...
- 汇编总结:mov指令
mov指令的作用: mov指令可能是汇编里用的最多的指令了,完成c语言里的赋值. mov指令种类: 1.普通的mov指令 2.做符号扩展的movs 3.做零扩展的movz 1.普通mov的种类有: m ...
- 8051汇编:EQU指令
关于EQU汇编指令 EQU是英文单词equal的缩写,因此我们也能对EQU指令有一个初步的认识:做等价替换使用. 在8051汇编语言中,EQU用于定义一个符号常量,其效果不会带来存储空间的占用(这和C ...
- 汇编 REPE/REPZ 指令,CMPSB指令
知识点: REPE/REPZ 指令 CMPSB 指令 一.CMPSB //cmp //sub //SCASB//scasw//scasd cmp byte ptr [edi],al //对标志位的 ...
- Win32汇编之其他指令
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...
- Win32汇编常用算数指令
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...
- 学 Win32 汇编[21] - 传送指令: MOV、LEA、XCHG、XLATB、XLAT、MOVZX、MOVSX
汇编指令的一般性要求: 1.两个操作数的尺寸必须一致; 2.操作数不能同为内存. MOV(Move): 最常用的数据传送指令 ;该指令不影响 EFlags ;指令格式: (其中的 r.m.i 分别表示 ...
- ARM 汇编 内存访问指令
一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令 [ str,strb,st ...
随机推荐
- Tomcat启动分析(二)-自己编译Tomcat
为了方便分析Tomcat源码,利用大家习惯的方式来进行Debug调试,那么如何将Tomcat源码导入到Eclipse呢,这就是本文的重点 1 准备 1.1 获取Tomcat源码 获取tomcat源码有 ...
- linux基础学习(一)常用命令:date、pwd、cd、cal、who、wc等等
目录 @(基础命令) Tab键是linux系统中最重要的键之一了,它的功能是命令自动补全== [root@localhost ~]#date 1.用于显示当前的日期和时间 2/用于显示当前的日历 [r ...
- [PHP] 持续交付Jenkins安装
1.下载并运行 Jenkins下载 Jenkins.http://mirrors.jenkins.io/war-stable/latest/jenkins.war 打开终端进入到下载目录.运行命令 j ...
- 【CobaltStrike】对CobaltStrike内置功能模块的了解
对CobaltStrike内置功能模块的了解 0x00 右键功能列表 Interact 打开beacon Access dump hashes 获取hash Elevate 提权 Golden Tic ...
- Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the serv
z 此问题为时区问题,在 JDBC 的连接 url 部分加上 useSSL=true&serverTimezone=UTC 即可.如图
- 监控类shell脚本
1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规则:变量名大写.局部变量小写,函数名小写,名字体现出实际作用. 4)默认变量是全局的,在函数中变量l ...
- 简单web服务工作流程梳理
一.用户访问web基本流转过程梳理 二.web框架粗略概括
- 3. Vue - 指令系统
一.vue指令 (1) v-if // 条件判断 如果条件成立就在页面上生成一个标签并显示出来 (2) v-show //DOM中都存在只是显示与否 (3) v-for //注意 v-bind:key ...
- 7. Go语言—时间模块
一.时间模块 1. 统计程序执行时间 package main import ( "time" "fmt" ) func test() { time.Sleep ...
- 2. Go语言—包概念
一.包的概念 和python一样,把相同功能的代码放到一个目录,称之为包 包可以被其他包引用(若包中变量/函数被其他包调用,名需大写) main包是用来生成可执行文件,每个程序只有一个main包 包的 ...