【debug】GDB

1. 介绍

全称 GNU Debugger,它由 GNU 直接构建和维护,能与 Linux 系统及其组件完美集成,是调试 Linux 二进制文件的不二选择
官网: https://www.gnu.org/savannah-checkouts/gnu/gdb/index.html

GDB默认预装在很多的Linux发行版

#安装
apt install gdb

Pasted image 20251009211637.png

2. 使用

详细基本使用 GNU Debugger

2.1. 基本使用流程

info命令 disas

info functions 
info variables
disas _start

p/d $rbx #打印rbx 十进制

下断点

b _start
b *0x40100a

#查看
info b

#修改
disable【断点序号】
enable 【断点序号】
delete 【断点序号】

x命令检查

x/4ig $rip
x/wx 0x401000
x/s 0x402000
Argument Description Example
Count 我们要重复检查的次数 2310
Format 我们希望结果以以下格式呈现 x(hex)s(string)i(instruction)
Size 我们要检查的内存大小 b(byte)h(halfword)w(word)g(giant, 8 bytes)

Step命令

si 【count】
ni 
step #一直运行,直到到达下一行代码或退出当前函数

ptach set命令

break *0x401019
r
patch string 0x402000 "Patched!\\x0a"
set $rdx=0x9 #调整buffer大小
c

2.2. 算术运算指令

inc bl
dec bl
add rax, rbx
sub rax, rbx
imul rax, rbx #乘法

位运算

not rax -> NOT 00000001 -> 11111110
and rax, rbx -> 00000001 AND 00000010 -> 00000000
or rax, rbx -> 00000001 OR 00000010 -> 00000011
xor rax, rbx -> 00000001 XOR 00000010 -> 00000011