反汇编窗口
     
    
   
    在反汇编器中双击以下的栏或选项完成相应操作:
    
    · 地址栏:      显示相对被单击地址的地址;再次双击其地址返回到标准地址模式。
    
    · 十六进制转存栏:触发设置无条件断点。
    
    · 反汇编命令栏: 调用汇编器(可以直接修改汇编代码)。
    
    · 注释栏:       允许你增加或编辑与该行汇编命令相关性的注释。
   
    
     
      常用快捷键
     
    
    
    Alt+E    → Modules窗口,查找输入函数
    
    Ctrl+N   → 查找名称标志,选择你要下断的内容
    
    Shift+F9 → 强制继续执行跟踪或称拦截信息步进跟踪
    
    F12 → 暂时停止
    
    F10 → 打开反汇编选项菜单
    
    F9  → 运行键
    
    F8  → 单步跟踪结束
    
    F7  → 单步跟踪
    
    F3  → 打开快捷键
    
    F2  → 下断点快捷键
    
    Ctrl+F9 → 返回到跟踪
    
    
     Ctrl+F8 → 自动步进扫描,按F12可停止
    
    
    Ctrl+F7 → 同上,功能略有不同
    
    Ctrl+F6 → 回到OL主窗口
    
    Ctrl+F2 → 重新开始
    
    Art+F2  → 结束跟踪
    
    
     Enter   → 进制转换计算
     
    
    Art+L   → 打开日志窗口
    
    Art+C   → 快速回到程序入口
    
    Ctrl+S   → 打开查找命令次序窗口
    
    Shift+F2 → 打开附加选项窗口
    
    Shift+F4 → 打开条件对话窗
    
    
     Ctrl+E   → 编辑机器码
     
     Ctrl+G   → 输入跟随地址
     
     Space    → 填充或修改汇编内容(NOP修改)
    
   
    
    
     
      
       
        OD的支持的命令
       
      
      
       表达式
      
     
     
    
    CALC 表达式 -------------计算表达式的值
    
    ? 表达式  --------------同上
    
    表达式 ---------------  (第一个字符不能是字母)同上
    
    WATCH表达式------------- 添加监视
    
    W 表达式 ---------------同上
    
     
      
       反汇编器
      
     
     
    
    AT 表达式-------------  在反汇编中跟随
    
    FOLLOW--------------- 表达式 同上
    
    ORIG ----------------前往实际的 EIP
    
    * ------------------同上
    
     
      
       转存和堆栈
      
     
     
    
    
     D 表达式----------- --- 在转存中跟随
    
    
    DUMP 表达式 -------------同上
    
    DA [表达式]------- ------转存为汇编格式
    
    DB [表达式] -------------转存为十六进制(hex)字节格式
    
    DC [表达式] -------------作为ASCII 文本转存
    
    DD [表达式] -------------作为地址(堆栈格式)转存
    
    DU [表达式] -------------作为 UNICODE 文本转存
    
    DW [表达式]------------- 转存为十六进制(hex)字格式
    
    STK 表达式-------------- 在堆栈中跟随
    
     
      
       汇编
      
     
     
    
    A 表达式 [,命令]----------- 在地址处汇编
    
     
      
       标号和注释
      
     
     
    
    L 表达式, 标号 ------------为地址指派符号标号
    
    C 表达式, 注释 ------------在地址处作注释
    
     
      
       断点命令
      
     
     
    
    
     BP 表达式 [,条件] -----------在地址处设置 INT3 断点
     
     BPX 标号 ----------------在当前模块内部的每个调用外部’标号’处设置断点
     
    
    BC 表达式 --------------- 删除地址处的断点
    
    MR 表达式1 [,表达式2] ---------设置访问范围的内存断点
    
    MW 表达式1 [,表达式2] ---------设置写入范围的内存断点
    
    MD -------------------移除内存断点
    
    
     HR 表达式 --------------- 在访问地址处设置一个字节的硬件断点
     
     HW 表达式 --------------- 在写入地址处设置一个字节的的硬件断点
     
     HE 表达式 --------------- 在执行地址处设置硬件断点
     
     HD [表达式] -------------- 移除地址处的硬件断点
    
    
     
      
       跟踪命令
      
     
     
    
    STOP ----------------- 暂停执行
    
    PAUSE -----------------同上
    
    RUN ------------------运行程序
    
    G [表达式] ---------------运行到地址处
    
    GE [表达式] -------------- 跳过意外的句柄并运行到地址处
    
    S ------------------- 单步进入
    
    SI------------------- 同上
    
    SO -------------------单步跳过
    
    T [表达式] ---------------跟踪进入到地址处
    
    TI [表达式] -------------- 同上
    
    TO [表达式] -------------- 跟踪跳过到地址处
    
    TC 条件 -----------------跟踪进入到条件处
    
    TOC 条件 -----------------跟踪跳过到条件处
    
    TR --------------------执行到返回
    
    TU --------------------执行到用户代码
    
     
      
       
        ollydbg
       
       窗口
      
     
     
    
    LOG -------------------查看日志窗口
    
    MOD -------------------查看可执行模块
    
    MEM -------------------查看内存窗口
    
    CPU -------------------查看 CPU 窗口
    
    CS --------------------查看调用堆栈
    
    BRK --------------------查看断点窗口
    
    OPT --------------------编辑选项
    
     
      
       杂项命令
      
     
     
    
    EXIT -------------------关闭 OllyDbg
    
    QUIT -------------------同上
    
    OPEN [文件名] -------------- 打开待调试的可执行文件
    
    CLOSE ------------------ 关闭调试的程序
    
    RST ------------------- 重新载入当前程序
    
    HELP -------------------显示本帮助
    
    HELP OllyDbg -------------- 显示 OllyDbg 帮助
    
    HELP API函数帮助完整文件名 --------显示 API
   
    1.要从键盘上选择多行,
    
     按Shift键Up/Down箭头
    
    或者PgDn键;一个字节一个字节滚动反汇编命令,按Ctrl键并按Up/Down箭头;
   
    2.如果要修改多处代码,可以
    
     在每次修改后的代码处(拖动鼠标可以选取多行)右击选择复制到可执行文件,最后一起使用复制文件功能保存到文件;
    
   
    3.让OD显示MFC42.DLL中的函数:打开Debug(
    
     调试
    
    )/Select import libraries(
    
     选择导入库
    
    ),单击弹出的对话框中Add(
    
     添加
    
    ),在弹出的对话框中选择“MFC42.LIB”并打开,重新载入MFC程序即可;
   
    4.让OD轻松躲过ANTI:在“X语言”
    
     开启后运行OD
    
    ,并用Attach(
    
     附加
    
    )系上它就可以轻松通过检查,而且在OD系上它后仍然可以用CTRL+A进行分析;
   
    5.轻松对付调用MessageBoxA以及类似的模态对话框的程序:
    
     首先用OD加载目标程序
    
    ,如果不能加载用上面的方法“Attach”目标程序;然后,
    
     F9运行
    
    ,并且有意让
    
     目标程序显示MessageBox
    
    ,然后
    
     切换到OD中,F12暂停
    
    ,如:
    
    0041201F |> 53 PUSH EBX ; /Style
    
    00412020 |. 57 PUSH EDI ; |Title
    
    00412021 |. FF75 08 PUSH [ARG.1] ; |Text
    
    00412024 |. FF75 F4 PUSH [LOCAL.3] ; |hOwner
    
    00412027 |. FF15 A8534100 CALL DWORD PTR DS:[4153A8] ; /MessageBoxA
    
    0041202D |. 85F6 TEST ESI, ESI ;  //
    
     停在此处
    
    
    0041202F |. 8BF8 MOV EDI, EAX
    
    00412031 |. 74 05 JE SHORT 1551-CRA.00412038
    
    
     F8单步一下
    
    切换到MessageBox中,
    
     确认被OD中断
    
    。可以看见上面的代码41201F处有一个>,说明可以从某段代码跳转到此处,选择41201F这一行,在Information栏看见一句“
    
     JUMP FROM 412003
    
    ”,
    
     右键选择GO TO JUMP FROM 412003
    
    回到412003,一般都是条件跳转,上面的内容就是比较的地方啦。
   
    6.使用OD的Track(跟踪)功能:载入目标程序,在Debug(调试)中选择Open or clear run track(
    
     打开或清除run跟踪
    
    ),然后就可以用
    
     CTRL+F11或CTRL+F12开启Track into和Track over
    
    了。当我们暂停程序的时候,可以用小键盘上的“+”,“-”,“*”来控制TRACK功能。
    
    “Track into”和运行类似,但是记录所有指令以及寄存器变化。并且会自动进入所有的CALL中
    
    “Track over”和“Track into”类似,但是不进入CALL
    
    “+”用来显示TRACK缓冲区中的下一条指令
    
    “-”用来显示TRACK缓冲区中的上一条指令
    
    “*”用来发返回当前指令
   
 
