汇编_JCC指令

CF进位的具体补充

例如80-40不进位。因为不是最高位进位或借位,而是最高位前一位进位

汇编_JCC指令_第1张图片

例如:80-81会进位,cf为1,因为最高位为 汇编_JCC指令_第2张图片

PE指令补充:

只看最低有效位节,后8位(不管是32位,还是16位,8位都只看后8位)。若1的个数是偶数就是1否则为0

汇编_JCC指令_第3张图片

OF指令补充(针对有符号数):

汇编_JCC指令_第4张图片

 符号位有进位,最高有效位进位,进位为1,没进微信为0,最后of值为两者异或运算后的值。

注意:先指明是有符号还是无符号,没指明默认有符号

断点

设置断点,让cpu一条一条指令的来执行

如何修改EIP值

jmp指令:

 short如果调转的地方离它小于128个字节,会加上

jmp指令只修改ip值并且只影响ip值不影响堆栈个寄存器,使其改变,cpu根据修改后的ip值来跳转执行指令。

汇编_JCC指令_第5张图片

 补充:od打开文件跳出错误提示(下了什么不该下的断点什么的)

打开od文件夹找的udd(缓存)删掉

汇编_JCC指令_第6张图片

以下全删掉 汇编_JCC指令_第7张图片

 call指令

 要跳的地方也要下一个断点,让程序运行到此时停下,选中后F2完成下断点。

注意

1: call与jmp都修改eip的值,但call会将原地址的下一条指令地址压入栈内(call一会还要回去)(上一个地址+有几个字节=下一个地址,例如4183F8+一个字节=4183F9。

2:call会回到原地址,但jmp不会()如下,从跳到的地址又回到原地址的下一条指令的地址处

 retn指令:与call指令成对出现相当于pop eip(但不能这样写,这不是正确的指令。

CMP指令

cmp是比较指令,与sub相比只改标志寄存器的值(比较两个数可以用相减的方法,但此方法会改变原来寄存器的值,此时使用cmp指令)cmp比较后相等,看zf位.相等为1,不相等时,看sf位,sf位为1表明第一个数比第二个数小。

汇编_JCC指令_第8张图片

 cmp指令也可以比较寄存器和内存(但要两者宽度相等)

TEST指令

观察z位,如果每一位都为0的话,z位为1。

汇编_JCC指令_第9张图片

 汇编_JCC指令_第10张图片

 JE(JZ)指令

指令的含义是如果相等或是0

汇编_JCC指令_第11张图片

 

 cmp指令的执行会引起标志寄存器的数值的改变,je(jz)的指令执行只取决于标志寄存器的值

其他JCC指令

1:JNE,JNZ     结果不为零则跳转(不相等是跳转)               SF=1

2:JS               结果为负则跳转                                             SF=1

3:JNS            结果为非负则跳转                                       SF=0

4:JP,JPE     结果中1的个数为偶数则跳转                       PF=1

5:JNP,JPO   结果中1的个数不为偶数则跳转                  PF=0

6:JD                结果溢出跳转                                              OF=1

7:JND              结果不溢出跳转                                         OF=0

8:JB,JNAE     小于则跳转(无符号数)                          CF=1

9:JB,JNAE     大于等于则跳转(无符号数)                    CF=0

10:JBE,JNA     小于等于则跳转(无符号数)                  CF=1orZF=1

11:JNBE,JA     大于则跳转(无符号数)                             CF=0orZF=0

12:JL,JNGE    小于则跳转(有符号数)                            SF!=OF

13:JNL,JGE    大于等于则跳转(有符号数)                     SF=OF

14:JLE,JNG    小于等于则跳转(有符号数)                        ZF=1orSF!=OF

15:JNL,JG      大于则跳转(有符号数)                             ZF=0 and SF=OF

注意:JCC指令是另一种JMP指令(即不会影响对战和寄存器),指令是否执行取决于标志寄存器的值。

你可能感兴趣的:(安全,网络安全)