调试线程
调试进程
直接调试
单步调试
附加调试
即时调试
名词解释
反汇编 (将二进制文件转换成汇编或者其它高级语言)
PE文件结构
静态调试
动态调试
ollydbg
1.界面介绍(cpu 5部分)
汇编窗口(地址(点击切换,设置断点)、16进制数据、反汇编、注释(双击进行注释))
寄存器窗口
堆栈窗口
数据窗口
信息窗口
2.快捷键
F2 设置断点
F7 单步进入函数 F8单步不进入函数 F9直到断点才结束(加shif忽略异常)
3.断点
INT3断点
这是在OD中最常用的断点类型,通过快捷键F2即可在相应代码处设置INT3型断点。INT3断点将代码的第一个字节,用一个特殊命令INT3(调试器陷阱标志,十六进制表示为0xCC)来替代。可以在反汇编窗口中选中要设断点的指令行并通过快捷键F2就可以设定一个此类型的断点。也可以在快捷菜单中设置其他快捷键。当再次按下F2键时,断点将被删除。注意,程序将在设断指令被执行之前中断下来。
INT3断点的设置数量是没有限制的。当关闭被调试程序或者调试器的时候,OD将自动把这些断点保存到硬盘中,最好不要在数据段或者指令的中间设置这种断点,如果在代码段以外设置断点,OD将会给出一个警告。可以在安全选项[Security options]中永远关闭这个提示,在某些情况下调试器会插入自带的临时INT3断点。
内存断点
OD每一时刻只允许有一个内存断点。可以在反汇编窗口、CPU窗口、数据窗口中选择一部分内存,然后使用快捷菜单设置内存断点。如果有以前的内存断点,将被自动删除。可以有两个选择:在内存访问(读,写,执行)时中断,或内存写入时中断。设置此类断点时,OD将会改变所选部分的内存块的属性。在与80x86兼容的处理器上将会有4096字节的内存被分配并保护起来。即使仅仅选择了一个字节,OD也会将整个内存块都保护起来。这将会引起大量的错误警告,请小心使用此类断点。某些系统函数(特别是在Windows95/98下)在访问受保护的内存时不但不会产生调试事件反而会造成被调试程序的崩溃。
硬件断点
(仅在Windows ME,NT或2000下可用)在80x86兼容的处理器上,OD允许设置4个硬件断点。和内存断点不同,硬件断点并不会降低执行速度,但是最多只能覆盖四个字节。在单步执行或者跟踪代码时,OD能够使用硬断点代替INT3断点。
内存断点 选中一块数据作为断点,当程序每次读到这块数据时即暂停。
4 常用汇编代码如下:
cmp a,b // 比较a与b
mov a,b // 把b值送给a值,使a=b
ret // 返回主程序
nop // 无作用,英文(no operation)简写,意思“do nothing”(机器码90)
call // 调用子程序,子程序以ret结尾
je 或jz // 相等则跳(机器码是74或84)
jne 或jnz // 不相等则跳(机器码是75或85)
jmp // 无条件跳(机器码是EB)
jb // 若小于则跳
ja // 若大于则跳
jg // 若大于则跳
jge // 若大于等于则跳
jl // 若小于则跳
pop xxx // xxx出栈
push xxx // xxx压栈