0day工具集

1、ollydbg集成反汇编分析、十六进制编辑、动态调试等多种功能,缺点:无法调试内核(与SoftCE和WinDbg相比)

ollydbg快捷键
快捷键功能说明
F8单步执行遇到函数调用指令不跟入(step over)
F7单步执行遇到函数调用指令跟入(step in)
F2设置断点在一条指令上按F2键将设置断点,再按一次将取消断点
F4执行到当前光标所选中的指令在遇到循环时可以方便地使用F4键执行到循环结束后的指令
F9运行程序运行程序直到遇到断点
Ctrl+G查看任意位置的数据这个功能键非常有用,在指令区、栈区、内存区都可以使用,能方便地查看任意位置的指令和数据

2、SoftICE(In Circuit Emulator)实体电路模拟器,德高望重的调试器,工作在ring0级,可调试驱动等内核对象,截获CPU所有动作的设备。缺点:暴力中断所有进程。

Compuware SoftCE Driver Suite插件

setting->general :Initialization输入如下命令可以调试界面

Faults off;set font 2;lines 44;data 3;dd; dex 3 ss:esp;data 0;wc 20;code on; x ;

初始化命令的含义
命令解释
Faults off关闭错误提示。SoftICE在加载进程时总是会发出一些错误警告
set font 2设置2号字体。SoftICE有3种字体,默认情况为小号字,2号字体为中号字
Lines 44Lines命令用于设置界面显示的行数,显示范围是25~128,这里总共显示44行
data 3打开3号窗口
Dd  按照DWORD显示数据
dex 3 ss:esp在3号窗口中显示栈信息
data 0设置0号窗口(命令输入窗口)为当前窗口
wc 20代码窗口占20行
Code on显示机器代码
X显示调试界面

1)开始菜单->Start SoftICE启动批处理文件ntice.bat.  运行SoftICE

2)开始菜单->Symbol Loader启动装载界面,选择要装载运行的PE文件。点击装载运行即可

3)Ctrl+D激活SoftICE,调出调试界面

SoftICE基础调试命令
功能命令解释
单步执行t或F8step into,单步执行,遇到函数进入执行
p或F10step over,单步执行,遇到函数不跟入
p ret或F12step out,执行到当前函数结束
执行到指定位置gog[地址]如不跟地址,将把控制权交还进程持续执行;如跟地址,则执行到指定地址所在的指令后停下
断点命令bl列出当前所有断点(breakpoint list)
be[断点ID|*]激活断点,其中,断点ID可以是多个,用空格或逗号隔开,如果用*,则激活所有断点(breakpoint enable)
bd[断点ID|*]禁用断点,参数同上(breakpoint disable)
bc[断点ID|*]清除断点,参数同上(breakpoint clear)
bpx[地址|函数名]为指定的地址或者API函数下断点
bpm[数据类型][地址][访问类型]内存断点。数据类型可以是b字节、w字(双字节)、d双字(四字节);访问类型可以是r只读、w写、读写
信息查看与编辑命令
功能命令说明
数据显示(Display)db[地址]按照字节模式显示内存数据[display byte]
dw[地址]按照字(双字节)模式显示内存数据(display word)
dd按照双字(四字节)模式显示内存数据(display dword)
ds按照短整型模式显示内存数据(display short)
dl按照长整型模式显示内存数据(display long)
数据编辑(Edit)eb[地址][数据]按字节模式将数据写入内存任意地址(edit byte)
ew[地址][数据]按字模式将数据写入内存任意地址(edit word)
ed[地址][数据]按双字模式将数据写入内存任意地址(edit dword)
es[地址][数据]按短整型模式将数据写入内存任意地址(edit short)
el[地址][数据]按长整型模式将数据写入内存任意地址(edit long)
栈帧显示stack显示当前栈帧信息
编辑寄存r[寄存器名][值]修改或查看寄存器的值,如reax 0
反汇编u[地址]对指定地址的二进制进行反汇编并显示

 Ctrl+D在操作系统和SoftICE之间切换控制权

3、WinDbg

介于OllyDbg和SoftICE之间,比较温和的调试器,可以调试内核,但却不像SoftICE那么暴力。

调试功能的命令
功能命令说明
单步调试t或F11单步,遇到函数跟进(step into)
p 或F10单步,遇到函数跳过(step over)
Shift+F11跳出当前函数(step out)
执行到指定位置(Go)g[地址函数名]持续执行到指定位置的指令
gh[地址函数名]持续执行时,如果遇到异常则中断
gn[地址函数名]持续执行时,即使遇到异常也忽略
断点功能(Break Point)bl列出已设置的断点。显示结果中,第一列为断点的ID;第二列为断点当前的状态;e表示断点处于活动状态(enable),d表示断点暂时被禁用;第三列为断点的位置(break point list)
be[断点ID]激活断点(breakpoint enable)
bd[断点ID]禁用断点(breakpoint disable)
bc[断点ID]清除断点(break point clear)
bp[地址|函数名]设置断点。如不指定地址,则在当前指令上下断点。注意,这里介绍的是最基础的断点方式,WinDbg中可以结合地址、函数名、消息等各种条件设置很复杂的断点。此外bu、bm等命令也可以设置断点

信息显示与编辑功能
功能命令说明
数据显示(display)d[地址]显示内存数据,默认情况下按照字节和ASCII显示,即等同于DB命令。如果修改了显示模式,再次使用时则与最后一次数据显示命令所使用的显示模式相同
db[地址]按照字节模式显示内存数据(display byte)
dd[地址]按照双字模式显示内存数据(display dword)
dD按双精度浮点数的模式显示内存数据,注意这条命令和前面一条命令是区分大小写的(display Double Float)
da按ASCII模式显示(display ASCII)
du按Unicode模式显示(display Unicode)
ds按字符串模式显示,注意,在没有‘\0’作为字符串结束时,不要轻易用这条命令打印内存,否则WinDbg会将遇到的第一个NULL前的东西都打印出来(display String)
dt套用已知的数据结构模版(structure)显示内存。这个命令很有用,例如,在调试堆时可以直接用这个命令把内存按照堆表的格式显示出来。关于这条命令的详细用法,请参照WinDbg自带的帮助文档(display Type)
数据编辑(Edit)e[地址][数据]修改任意内存地址的值
Eb'以字节形式写入
ed[地址][数据]以双字形式写入
ea[地址][数据]以ASCII字符形式写入,注意,ASCII字符串需要加双引号
eu[地址][数据]以Unicode字符形式写入,注意,Unicode字符串需要加双引号
栈帧的显示k[x]由栈顶开始列出当前线程中的栈帧,x为需要回溯的栈帧数
kb[x]栈帧回溯命令带上‘b'后,可以额外显示3个传递给函数的参数
寄存器的显示(Register)r[寄存器名]r命令显示当前所有寄存器值,也可以用来显示指定寄存器的值,例如,reax就只显示EAX的值
模块显示(List Module)lm列出当前已经读入的所有模块,如动态链接库(list module)等
反汇编功能u反汇编当前指令后的几条指令并显示
u[起始地址]从指定的地址开始反汇编
u[始址][终址]反汇编指定的地址范围区间的机器代码

 4、IDA Pro简介

反汇编软件,也可以做一些简单的动态调试(反汇编,逆向)

空格可以在汇编代码和图形显示间切换。

IDA可以把标注好的函数名、注释等导入OllyDbg

常用的快捷键命令
快捷键功能
为当前指令添加全文交叉引用的注释
n定义或修改名称,通常用来标注函数名
g跳转到任意地方观察代码
Esc返回到跳转前的位置
D分别按字节、字、双字的形式显示数据
A按照ASCII形式显示数据

5、二进制编译器

十六进制编辑软件可以打开任意的二进制文件

UltraEdit、Hex Workshop和WinHex和010 editor

6、VMware

虚拟系统,镜像恢复,隔离物理机

7、python

快速开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值