test后跟je
来源:互联网 发布:一带一路目的 知乎 编辑:程序博客网 时间:2024/04/29 05:32
今天俺也用OD(OllyDbg)反汇编了个小软件,其中里面有下面两条指令:
(图片 http://hi.baidu.com/felixzxh/blog/item/bb7c8ec910f6491f7e3e6f54.html)
没太明白什么意思,google一下,在看雪论坛上发现了一个大虾的解释很详细,记录一下:
1.test a,b 是a与b相与的意思,不是检查a,b是否相等。故test eax,eax是检查eax是否为零。
1.test可以影响cf,of,pf,sf,zf标志位。
2.JE当zf为零时跳转。
3.jz和je是同一条指令的两个不同记号而已。
补充:
1.test a,b是做 AND 运算(虽然通常是用来测试结果是否为零,但不限于此,比如一些位掩码操作,或者正负号判断等),但不把结果写回目的操作数,仅根据结果的值来置标志位。
2.je/jz 是 当运算结果为0时则跳,也就是当EFLAGS中的ZF标志为1时跳转。ZF标志为1,说明上一次运算(不管是算术运算还是逻辑运算)结果为0,而ZF为0,说明运算结果非0。
那 test eax,eax 放到这程序里面对于验证是否注册有什么意义呢?为什么要检测这个值是不是零呢?
因为EAX中是前一步的计算结果(比如验证是否成功),要判断验证是否成功,当然就等于判断EAX中的值了。当然,理论上不一定要和0比较,也可以进行其它的判断,但在这种情况下通常是一种bool型的值,在C中没有bool这种类型,而是把0作为false,把任何非0值作为true,所以这里就要判断它是true还是false,也就是判断它是不是为零了
转自:http://hi.baidu.com/felixzxh/blog/item/bb7c8ec910f6491f7e3e6f54.html
- test后跟je(转载)
- test后跟je
- 构造函数后跟冒号
- 构造函数后跟冒号
- like 后跟参数通配符
- Server Studio JE
- nutch-JE分词
- lucene-JE中文分词
- JE WakeLock [android][sogou]
- 条件判断je jnb
- JE分词器
- 函数声明后跟throw()
- url是jsp后跟参数
- 二、BDB je常见操作
- 我的je的地址
- 二、BDB je常见操作
- BDB je二级索引操作
- Berkeley DB Java Edition (JE)
- 启用Ajax的wcf服务器端与客户端应用
- 再次,解释CComPtr和CComQIPtr。
- 初来乍道 给点积分
- Lotus 域类型(可编辑,计算,创建时计算、显示时计算)
- IO
- test后跟je
- 函数的形参与实参的关系
- 一步一步学Android ROM开发(一)——修改现有ROM资源文件
- Java基础之Java运算符大百科
- 如何判断链表中存在环路
- 使用凭证保险库为_portlet_提供单点登录
- 搜索引擎
- framebuffer Device 技术
- 图片数据提取及显示的总流程