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 关闭被调试的程序。如果程序还在活动状态,你会被询问是否执行该操作。