首页 > 其他分享 >JCC

JCC

时间:2024-06-05 22:23:52浏览次数:14  
标签:EIP JCC 跳转 地址 寄存器 相应 位为

跳地址

JMP

修改eip的值,让程序下一步执行JMP修改EIP的地址

格式:JMP 寄存器/立即数==MOV EIP,寄存器/立即数

注:只影响EIP

CALL

PUSH 地址B

MOV EIP,地址A/寄存器  ==CALL 地址A/寄存器

复制下一个地址,在修改EIP的值

eg:

运行

执行命令后,call下一个指令的地址入栈,ESP减四,EIP被修改

下一个指令地址算法:现地址+指令的字节数(如图有五个字节)

所以call下一个指令地址为004183D7

RETURN

JE、JZ

实质是看标志寄存器的Z位,Z位为1,就跳到相应的地址

 结果为零则跳转

格式:JE  地址

JNE,JNZ

 看标志寄存器的z位,z位为零,就跳转到相应的地址。

结果不为零则跳转

JS

实质是标志寄存器的s位,S位为1就跳转到相应的地址

 结果为负责跳转

JNS

S位为零,就跳转到相应地址

结果为非负则跳转

JP,JPE

P位为1,则跳转到相应地址

结果中1的个数为偶数则跳转

JNP,JPO

P位为零,则跳转到相应地址

结果中1的个数为奇数则跳转

JO

  O位为1,则跳转到相应地址

结果溢出则跳转

JNO

 O位为零,则跳转到相应地址

结果没有溢出则跳转

JB,JNAE

C位为1则跳转到相应地址

小于则跳转(无符号数)

JNB,JAE

C位为零,则跳转到相应地址

大于等于则跳转(无符号数)

JBE,JNA

C位为一或者z位为一

小于等于则跳转,(无符号数)

JNBE,JA

C位和z位都为零(无符号数)

大于则跳转

JL,JNGE

S位和o位不相等

 小于则跳转(有符号数)

JNL,JGE

S位和o位相等

大于等于则跳转(有符号数)

JLE,JNG

Z位=1 或者 s和o位不相等

小于等于则跳转(有符号数)

JNLE,JG

 Z位等于零,并且s和o位相等

大于则跳转(有符号数)

只改变标志寄存器

CMP

做减法运算,结果不保存,但改变标志寄存器里的值,其余不变

格式:CNP      R/M,R/M/IMM

①代码

运行时EAX,ECX值不变,P 和Z位改变。

③代码

一个寄存器直接与内存比较,只要宽度一样

用途:1)比较两个操作数是否相等———Z位

           2)第一位数是否比第二位数大———S位

TEST

  两个数值进行与操作,结果不保存,但是会改变相应标志位。

 

 

标签:EIP,JCC,跳转,地址,寄存器,相应,位为
From: https://www.cnblogs.com/yuli10952/p/18233139

相关文章

  • 滴水逆向笔记系列 - 4.内存地址_堆栈-5.标志寄存器-6.JCC命令
    第四课内存地址_堆栈内存地址db与dd命令db:d表示查找,b表示bytedd:d表示查找,d表示dworddb命令在数据区找出目的内存地址,发现数据区内和堆栈区显示的是相反的反汇编窗口和寄存器窗口的都是从高位到低位,数据区反之(比如数据0x12345678,12是高位,8是低位)所以0012FFDC这块内存(1字节)......
  • ENOENT: no such file or directory, open 'D:\Idea lorkSpacecjccx-ui\package.js
     启动项目报找不到package.json找到你项目的package.json的路径 然后cd 这个路径 然后就解决了......
  • 逆向 —— JCC
    JMP指令:修改EIP的值MOVEIP,寄存器/立即数  简写为  JMP寄存器/立即数CALL指令:PUSH地址BMOVEIP,地址A/寄存器简写为:CALL地址A/寄存器RET指令:LEAESP,[ESP......
  • JCC指令
    JZ/JE若为0则跳转;若相等则跳转jumpifzero;jumpifequalZF=1if(i==j);if(i==0);JNZ/JNE 若不为0则跳转;若不相等则跳转 jumpifnotzero;jumpifnotequal ZF......