• OllyDbg


    1.按F9运行程序,

    2.ctrl+G打开跟随表达式窗口,输入的Api大小写敏感,函数名大小写必须正确

    3.Alt+B打开断点窗口,Always表示断点激活状态,Disable表示断点停用,按空格键可切换状态

    4.Alt+n打开输入输出表,Alt+C回到主窗口

    5.Alt+F9回到调用函数的地方.

    6.API函数基本采用_stdcall调用约定,参数按从右到左入栈,由被调用者清理栈中参数,返回值放在eax寄存器中,因此对API要分析其前的PUSH指令,这些指令将参数放进堆栈以传送给API调用,

    C代码中的子程序采用C调用约定,同线参数按从右到左入栈,由调用者清理栈中的参数。

     7.int3指令,机器码是CCH,又常称为CC指令,也就是按F2下的断点,虽然显示的是下断前的指令,但实际上已被替换成cc了.

    8.硬件断点原理是使用4个调试寄存器(DR0,DR1,DR2,DR3)来设定地址,因此最多只能设置4个断点,右击寄存器面板窗口,执行view debug registers,就可以看到DR0,DR1,DR2,DR3了,右键选breakpoint--->hardware,on execution(断点/硬件执行)命令,按F9执行程序,程序中断到硬件调试这一行,查看调试寄存器,会发现DR0的值和中断点的内存地址一致。设置断点后,实际就是把DR0,DR1,DR2,DR3其中一个设置为断点的内存地址,删除,单击菜单"debug-->Hardware breakpoints(调试/硬件断点)",打开硬件断点面板,单击delete删除相应的硬件断点.

    9.F4,可以执行到光标所在的行,利用的就是调试寄存器原因,中断后自动删除,相当于一次性硬件断点,硬件断点的速度快,缺点是最多能使用4个断点。

    整理下基本快捷操作:

    F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。(相当于 SoftICE 中的 F9)

    F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。(相当于 SoftICE 中的 F10)

    F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。(相当于 SoftICE 中的 F8)

    F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。(相当于 SoftICE 中的 F7)

    F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。(相当于 SoftICE 中的 F5)

    CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。(相当于 SoftICE 中的 F12)

    ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。(相当于 SoftICE 中的 F11)

    ALT + F2 关闭被调试的程序。如果程序还在活动状态,你会被询问是否执行该操作。


  • 相关阅读:
    Linux内核的总结认识
    服务器的基本问题避免
    Linux中多线程信号的处理
    gdb调试
    TCP数据包的封包和拆包
    网络TCp数据的传输设计(黏包处理)
    InputArray和OutputArray
    UTF8转unicode说明
    C++使用标准库的栈和队列
    resize函数有五种插值算法
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693538.html
Copyright © 2020-2023  润新知