zoukankan      html  css  js  c++  java
  • OllyDbg---汇编指令

    汇编指令

    NOP 无操作

    • 运行这条指令时,不会对寄存器、内存以及堆栈造成任何影响,也就是无操作。

    • 当用一个短指令来替换一个长指令时,如果处理器没有错误,多余的空间将会被NOP填充。

    • 适当数目的NOP指令可以将其他指令完全替换掉。

    PUSH

    • 将操作数压入到堆栈顶部,新压入的值总是在堆栈的顶部,不会改变下边的数据。
    • 注意:PUSH 401008、PUSH [401008]的含义是不同的。
      • PUSH 401008是把数值401008压入到堆栈顶部
      • PUSH [401008]是将内存单元401008中存储的内容,压入到堆栈中,而且被倒序放置。

    POP

    • 出栈,取出栈顶部的第一个值,然后存放到指定的目标地址内存单元中,比如,POP EAX,从栈顶中取出第一个值存放到EAX中, 随后的一个值就会变为栈顶。

    PUSHAD

    • 把所有通用寄存器的内容按顺序压入到堆栈中

    POPAD

    • 与PUSHAD相反,从堆栈中取值,并将取到的内容放到相应的寄存器中
    PUSHAD 等价于 'PUSH AX, CX, DX, BX, SP, BP, SI, DI'。
    POPAD 等价于  'pop DI, SI, BP, SP, BX, DX, CX, AX'。
    

    MOV

    • 将第二个操作数赋值给第一个操作数

    MOVSX

    • 第二个操作数可能是一个寄存器,也可能是一个内存单元,第一个操作数的位数可能比第二个操作数多,第二个操作数的符号位将会填充第一个操作数的剩余部分。

    MOVZX

    • 和MOVSX类似,但是第一个操作数的剩余部分将会用0填充。

    LEA取地址指令

    • 类似于MOV指令,第一个操作数是一个寄存器,第二个操作数是一个内存单元,将指定地址存放到寄存器中。

    XCHG交换

    • 将两个操作数的值进行交换
  • 相关阅读:
    Android Studio 开发环境设置
    Android-项目介绍
    Android-开发工具
    在js 中使用ajax 调用后台代码方法,解析返回值
    $.each解析json
    VS2008 "当前不会命中断点。源代码与原始版本不同"解决方法
    64位系统 安装oracle
    session丢失返回登陆页
    DataTable转换为JsonResult
    easyui 绑定数据
  • 原文地址:https://www.cnblogs.com/KX-Lau/p/12928752.html
Copyright © 2011-2022 走看看