逆向工具常用操作

IDA

加载文件

Windows 下,用IDA加载文件之后,会在文件同目录下生成几个文件:

.id0    二叉树数据库

.id1    文件包含描述每个程序字节的标志

.nam  包含IDA Name 窗口的数据库

.til       本地数据库有关信息

 常用快捷键

快捷键操作
空格切换视图
ESC退回上一页
G搜索地址或者符号
N重命名
H16进制转换
Y修改函数原型、变量类型
:;注释(:只会在注释处出现)
C将光标处的内容解析成代码
P在当前地址解析成函数
D在当前地址解析成数据
U在当前地址解析成未定义内容
X交叉引用
F5C伪代码
Insert在结构体试图中添加结构体
ALT+T搜索文本
ALT+B搜索二进制
SHITF+F12字符串窗口

 

OD、xdbg 

常用快捷键

快捷键操作
F2下断点
F3载入EXE
F4运行到光标处
F7步进
F8步过
F9运行
空格修改汇编代码
CTRL+F2重载EXE
CTRL+F8自动逐行运行程序
CTRL+F9运行到ret处
CTRL+F命令模式
CTRL+G跳转到某个地址
CTRL+B查找二进制字符串
ALT+C反汇编窗口
ALT+M内存窗口
ALT+B断点窗口
ALT+E可执行模块窗口

 

断点

条件断点:在条件窗口 

  • eax == xxx
  • string[[esp+4]] == "abcd"      esp+4 是第一个参数 esp+8  是第二个参数
  • string[edi]  == "abcd"    直接是寄存器也可以
  • byte ptr[edi] =="a"   单个字符
  • unicode[eax] =="abcd"    OD认为eax是一个指向unicode串的指针,将其转换为ascii后与文本进行比较
  • bp CreateFileA,[STRING[ESP+4]] == "abcd"        当CreateFileA函数第一参数是abcd是中断  如果是unicode ,就用UNICODE[esp+4]

硬件断点

   DR0、DR1、DR2、DR3 四个寄存器用来存放硬件断点,所以最多同时只能存放4个硬件断点。

   DR4、DR5系统保留,DR7是一些控制位,用于控制断点的方式.

   DR6是用于显示哪个硬件调试器引发的断点。如果是DR0引发的断点,则DR6的第0位被置为1,如果是DR1引发的断点,则DR6的第1位被置为1,依次类推。因为硬件断点同时只能触发一个,所以DR6中的低4位,最多有一位被置为1,所以我们可以通过DR6的低4位来判断是否有硬件断点被断下,还可以确定是哪一位。

DR7结果如下所示:

位数作用
L0:G0 ~ L3:G3L0 == 1,代表DR0局部断点;G0 == 1,代表DR0全局断点。其他依次类推。
LE、GEP6 family和之后的IA32处理器都不支持这两位。当设置时,处理器会检测触发数据断点的精确指令。当其中一个被设置时,处理器会放慢执行速度,这样当命令执行时会通知这些数据断点。切换任务时LE会被清除,而GE则不会。为了兼容性,inter建议使用精确断点时把LE和GE都设置为1。
GD用于保护DRx,如果GD为1,则对DRx的任何访问都会导致进入1号调试陷阱(int 1)。即IDT的对应入口,这样可以保证调试器在必要情况下完全控制DRx
LEN0 ~ LEN3

指定调试地址寄存器DR0~DR3对应断点的长度,如果R/W x 为0时,LEN x 也必须为0,否则会产生不确定行为。LEN x 取值如下:

  • 00   1字节
  • 01   2字节
  • 10   保留
  • 11   4字节
R/W0 ~ R/W3

指定各个断点的触发条件。它们对应DR0 ~ DR3。可能取值如下:

  • 00  执行
  • 01  写入数据
  • 10  I/O端口断点
  • 11  读或写数据

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值