目录

  • 结论
  • 举例分析
  • test作用
    • ZF PF标志位改变不需要记,因为不方便记忆.
    • 我们需要记住是test下面语句的跳转语句意思
      • jnz
      • jz
  • 总结

结论

这几个组合在一起通常是判断 函数返回结果是否是0.是0跳转到哪里,不是0跳转到哪里

举例分析

下面代码:就是判断2个字符串是否相等.

push edx
push eax
call dword ptr dS:[K&KERNEL32.1strcmpA>   //判断edx和 eax 2个字符串是否相等,调用的是C语言的 strcmp
test eax,eax
push 0
JnZ Short Crackhe. 00401 0E8

上面代码call的是C语言的 strcmp ,这个函数比较2个字符串是否相等,如果相等,返回0,否则返回1, 返回的参数存入到eax里面.
然后如果用高级语言,想实现判断返回值是否等于0,如下

if (eax == 0){跳转到一个地方
}else{跳转到一个地方
}

在汇编中这么做判断eax是否等于0

test  eax,eax

test作用

test作用是逻辑与,逻辑与就是2个数字相同是1,否则是0.按位逻辑与,就是每一位二进制进行逻辑与
例如 :如果是 0111和 0001按位逻辑与结果是0001,因为只有最后一位全是1,其他都是0
eax如果是二进制数 0101的话, 0101按位逻辑与还等于0101.
例如 test eax, eax 就是 让eax 和 自己逻辑与,按位逻辑与的话,eax和eax是相同的,所以,只有eax是0的时候才会是0,否则 结果就是eax本身.
但是test的作用,并不会改变后面的寄存器eax,改变的是标志位.

ZF PF标志位改变不需要记,因为不方便记忆.

这里改变了ZF标志,变成了0,
PF标志,这里不进行讲解,因为记忆标志位不方便理解.想要知道具体的可以自己查询.
需要联合记忆.

我们需要记住是test下面语句的跳转语句意思

jnz

例如jnz,那么就是说不等于0的时候跳转n是not不,z是zero零.jnz检验的标志位就是zf,这个标志位通过test改变了zf,然后jnz进行跳转.当test比较的结果不等于0,就跳转

jz

test比较结果等于0才跳转.
例如 test eax,eax. 当eax等于0的时候. 0 按位逻辑与0的结果还是0, 那么 下面执行jz的时候就直接跳转了

总结

call 函数改变了eax
test eax,eax,判断eax是否等于0
jnz 判断如果不等于0跳转,相当于是用if else 判断是否等于0

下面截图是一段汇编指令,判断2个字符串是否相等的

汇编 eax test jnz jz 等组合连用的总结相关推荐

  1. 汇编 eax寄存器和AX,AH,AL之间的关系

    EAX与AX不是独立的,EAX是32位的寄存器,而AX是EAX的低16位. 举例来说 mov eax, 12345678h 那么AX将会是eax的低16位,也就是5678h. 而如果此时 mov ax ...

  2. [转载]汇编eax寄存器和AX,AH,AL之间的关系

    00000000 00000000 00000000 00000000 |=EAX=|-32个0,4个字节,2个字,1个双字 |AX=|-16个0,2个字节,1个字 |AH=|-----------8 ...

  3. 汇编中的BP与SS组合时,BP里面放的到底是SS中的一个基地址的指针还是基地址本身?

    这个问题应该没有意义,是自己没搞清指针和地址的关系,两者没有差别吧.基地址的地址就是它的指针.

  4. 破解基础----背的滚瓜烂熟差不多就会破解

    破解基础----背的滚瓜烂熟差不多就会破解 1)经典比较组合,常为注册码出现处(by programhunter)  1      mov  eax [      ]  这里可以是地址,也可以是其它寄 ...

  5. 转:传说中破解基础----背的滚瓜烂熟差不多就会破解

    1)经典比较组合,常为注册码出现处(by programhunter) 1     mov eax [      ] 这里可以是地址,也可以是其它寄存器     mov edx [      ] 同上 ...

  6. 免杀需要的基本汇编知识

    搜集的资料感觉挺好用,不知道谁总结的感觉挺全的,作为参考 一.机械码,又称机器码 Ultraedit打开,编辑exe文件时你会看到许许多多的由0.1.2.3.4.5.6.7.8.9.A.B.C.D.E ...

  7. 【reverse】通俗易懂的gcc内联汇编入门+示例:实现花指令

    文章目录 引言 依赖 Hello world Demo1:读取函数若干个字节的数据 效果 Demo2:基础的花指令 效果 如何去除花指令 参考资料 引言 基于Visual Studio的内联汇编教程已 ...

  8. X86汇编——简易通讯录

    尚未解决:输入的姓名.号码不能超过11位,否则将会覆盖到后面结构体分配的内存 头文件 include windows.inc include msvcrt.inc ;包含C语言的库 includeli ...

  9. 汇编——NT中读取MBR内容

    ;************************************************** ;ReadMBROnDiskNT.asm ;功能:Windows NT.2K.XP中读MBR ; ...

最新文章

  1. cmake 头文件 库文件 路径搜索 CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH
  2. 深入浅出Node.js(一):什么是Node.js(转贴)
  3. 推荐经典算法实现之BPMF(pymc3+MovieLen)
  4. Vim不常见但是很实用的命令技巧
  5. JDK/Java 16 可能带来什么新特性?
  6. Eclipse C/C++开发环境搭建
  7. 小弟带你走进VUE中input最大值设置出现的问题以及黑科技解决方案
  8. matlab的一些关于块分类的函数~~~
  9. 模块目录下site.php,使用apache配置为每个站点指定PHP包含目录
  10. leetcode Course Schedule II
  11. xshell网站打不开
  12. 案例: 模拟京东快递单号查询
  13. 利用Latex在线表格绘制表格以及多行合并垂直居中
  14. 波长与颜色的对应关系之python实现
  15. android wifi智能硬件4g,智能硬件 篇五:把WiFi带在身上,告别宽带!华为随行WiFi2畅享版真实体验...
  16. Ps 初学者教程「61」如何在图片中创建霓虹灯效果?
  17. mysql字段掩码_access字段输入掩码之字符篇
  18. 锐龙r5 6600u和r5 5600u区别 r56600u和r55600u对比
  19. 高校聘请13名韩国博士引争议,寒暑假完成博士课程,2.5年拿到证书
  20. 推荐系统_(一)算法详解

热门文章

  1. 05如何处理类别特征?
  2. 微信小程序:javascript调用另一个js文件的函数
  3. Docker 学习视频集 bilibili
  4. 重庆计算机财经学院,重庆财经学院
  5. VC MFC按钮(CButton)控件
  6. 【快递100接口BUG】数据库时区为0时区,而实际时区为东八区时间,导致存入时间多出八个小时
  7. 大佬们抖音带货流水都过亿 普通人有什么抖音变现的好方式
  8. 引擎之旅 前传:C++代码规范
  9. 电脑重置后需要清除tpm吗
  10. IOS按钮排列自动换行