逆向_06JCC跳转相关指令
JCC
JMP指令
- JMP只是改eip的值,无其他操作
call指令
- 修改eip的值
- 将原函数/call下一条指令(返回)地址入栈
- 类似操作
- push eip
- mov eip,0x12345678
RETN指令
- 将原函数/call下一条指令(返回)地址出栈
- 修改eip的值
- 类似操作
- pop eip
CMP指令
- 指令格式:CMP R/M,R/M/IMM
- 作用:该指令比较两个操作数,实际上,它相当于SUB指令,但是相减的结果并不保存到第一个操作数当中,只是根据相减的结果来改变零标志位的,当两个操作数相等的时候零标志位置1
TEST指令
- 指令格式:TEST R/M,R/M/IMM
- 作用:该指令在一定程度上和CMP类似的,两个数值进行与操作,结果不保存,但是会改变相应标志位
JCC指令
编号 | 指令 | 条件解释 | 标志位 |
---|---|---|---|
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/JNAE | 不小于则跳转(无符号数) | CF=0 |
11 | JBE/JNA | 小于等于则跳转(无符号数) | CF=1 or ZF=1 |
12 | KNBE/JA | 大于则跳转(无符号数) | CF=0 and ZF=0 |
13 | JL/JNGE | 小于则跳转(有符号数) | SF≠OF |
14 | JNL/JGE | 大于等于则跳转(有符号数) | SF=OF |
15 | JLE/JGE | 小于等于则跳转(有符号数) | ZF=1 or SF≠OF |
16 | JNLE/JG | 大于则跳转(有符号数) | ZF=0 and SF=OF |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 787772394@qq.com
文章标题:逆向_06JCC跳转相关指令
本文作者:二豆子·pwnd0u
发布时间:2020-09-17, 14:07:45
最后更新:2023-05-18, 09:49:07
原始链接:http://blog.codefat.cn/2020/09/17/%E9%80%86%E5%90%91-06JCC%E8%B7%B3%E8%BD%AC%E7%9B%B8%E5%85%B3%E6%8C%87%E4%BB%A4/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。