OllyDbg学习之路-3
6.比较和跳转指令 (1)cmp eax,ecx 相当于sub eax,ecx 但不保存结果到第一个操作数。 根据结果改变零标志位(Z)。相等时,零标志位置1。 根据结果正负改变符号标志位(S)。运算结果为负时,置为1。 cmp允许寄存器与byte、word、dword类型的内存单元做比较。 eg:cmp ax,word ptr ds:[405000] (2)test 两个数值进行与操作,结果不保存,改变相应标志位 eg:test eax,eax 这个指令可以确定eax是否为0 (3)关于寻找跳转,容易忽略提示框中的本地调用来自xxx。 7.call、ret (1)ret指令不仅仅可用于子程序的返回,eg: 12 push 401256ret 等价于 1 jmp 401256 (2)改变程序代码后,反汇编界面右键重新分析。(否则分析可能出错,如栈中信息没有分析出函数间调用。) 8.循环、字符串指令和寻址方式 (1)loop [lable] 等价于 cx=cx-1 若cx!=0 转到lable loopz/loope 等价于cx=cx-1 若cx!=0且zf=1 转到lable loopnz/loopne 等价于cx=cx-1 若cx!=0且zf=0 转到lable (2)movs 从一个地址向另一个地址复制数据。源地址保存在ESI寄存器中,目的地址保存在EDI寄存器中。