RE速查表

IDA

按键 作用
Space 切换显示
C 转换为代码
D 转换为数据
A 转换为字符
* 转换为数组
U 未定义
O 提取偏移量
H 立即数->DEC
R 立即数->STR
B 立即数->BIN
Q 立即数->HEX
N 标签重命名
? 计算器
G 跳转到地址
: 注释
Ctrl+X 查看参考[显示栈]
X 查看参考
Art+I 搜索常量
Ctrl+I 再次搜索常量
Art+B 搜索Byte
Ctrl+B 再次搜索Byte
Art+T 搜索文本
Ctrl+T 搜索下一个
Art+P 编辑当前函数
Enter 跳转
Esc 返回
NUM - 收缩
NUM + 展开
F5 以伪代码模式显示

OllyDBG

快捷键 作用
F7 单步进入
F8 单步步过
F9 执行至点
Ctrl+F2 重载程序

MSVC

选项 作用
/O1 创建尺寸最小文件
/Ob0 禁止内敛展开
/Ox 启用内存优化
/GS- 禁用安全检查
/Fa(file) 创建汇编文件
/Zi 生成调试信息
/Zp(n) 使封装结构体向n字节边界对齐
/MD 使可执行文件使用MSVCR*.DLL

GCC

选项 作用
-Os 优化目标文件大小
-O3 打开所有-O2的优化选项
-regparm= 设定传参的寄存器数量
-o file 制定输出文件名
-g 产生有调试信息的代码
-S 仅编译到汇编指令,不进行汇编和链接
-masm=intel 汇编指令使用intel语法
-fno-inline 禁止内联函数

GDB

选项 作用
break filename.c:num 在源程序第几行设置断点
break function 函数入口设置断点
break *address 某地址断点
b 同break
p variable 显示变量的值
run/r 运行
cont 继续运行
c 同上
bt 打印当前栈所有信息
set disassembly-flavor intel 英特尔语法
disas 查看当前函数汇编指令
disas function 查看函数汇编指令
disas function,+50 查看函数的部分汇编指令
disas $eip,+0x10 查看函数的几条汇编指令
disas/r 查看接下来的几条
info registers 查看opcode
info float 查看CPU
info locals 查看FPU
x/w … 列出全局变量
x/w $rdi… 读内存,word型
x/10w… 从RDI指定地址读数,word型
x/s… 读取并显示为10个word型
x/i… 读取内存,并显示为字符串
x/10c… ~,并显示为汇编
x/b… ~,并显示10个字符
x/h… ~,并显示为byte
x/g… 读取并显示16位halfword型数据
finish 读取并显示giant words(64 bits)
next 执行到函数退出
step 单步语句(不步入)
set step-mode on 单步步入跟踪调试
frame n 打开step-mode
info break 切换栈帧
del n 查看断点
set args… 删除断点

PEDA

命令 作用
aslr 显示/设定GDB的ASLR(地址空间配置随机加载)
checksec [!]检查二进制文件的各种安全选项
dumpargs 函数将要被调用时,显示将要被传入函数的所有参数(默认会在反汇编代码下方自动显示)
dumprop 在给定内存范围中Dump出所有ROP gadgets
elfsymbol 获取elf的plt表
elfheader 获得调试的elf的头信息
lookup 搜索内存区间内的地址
patch [!]从地址[str/hex/int]开始修补内存
pattern 生成字符串模板(create size生成/offset value定位)
ropgadget [!]获取ROP gadgets
searchmem 内存中查找,支持正则
shellcode 生成shellcode
skeleton 生成python exp模板
readelf 获取elf文件头
procinfo /proc/pid list
vmmap [!]可以用来查看栈、bss段是否可以执行