Динамический анализ с GDB и pwndbg
Устанавливайте точки останова, исследуйте память, отслеживайте системные вызовы и автоматизируйте сеансы GDB с помощью pwndbg.
«Динамический анализ с GDB и pwndbg» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Что такое динамический анализ
Динамический анализ запускает двоичный файл и наблюдает за его поведением в реальном времени: содержимым памяти, значениями регистров, системными вызовами и сетевыми соединениями. Он дополняет статический анализ (Ghidra), показывая фактические значения во время выполнения и поток управления.
Основы GDB
GDB (отладчик GNU) — стандартный отладчик Linux:
gdb ./vuln # load binary
gdb -p 1234 # attach to running process
run [args] # start execution
break main # set breakpoint at main
continue (c) # continue execution
next (n) # step over
step (s) # step intoРасширение pwndbg
pwndbg — подключаемый модуль GDB, добавляющий средства для разработки эксплойтов:
- Визуальное отображение стека и регистров при каждой остановке
- Генерация шаблонов с помощью
cyclic - Команда
heapдля визуализации кучи - Поиск гаджетов ROP с помощью
rop - Проверка защит двоичного файла с помощью
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shТочки останова и точки наблюдения
Управление выполнением:
# Break at address:
break *0x401234
# Break at function:
break strncpy
# Watch memory address:
watch *0x7ffd1234 # break when value changes
# Conditional break:
break *0x401234 if $rax == 0
# List and delete:
info break
delete 1Исследование памяти и регистров
Проверка состояния:
info registers # show all registers
print $rax # print register value
x/10xg $rsp # examine 10 qwords at RSP
x/s 0x402000 # examine as string
x/20i $rip # disassemble 20 instructions at RIP
pwndbg: telescope $rsp 20 # smart stack displayПошаговое выполнение кода
Команды навигации:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressСоздание сценариев для GDB
Автоматизируйте GDB с помощью Python:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFАнализ кучи с помощью pwndbg
Команды pwndbg для исследования кучи:
heap # show all heap chunks
heap -a # show all allocations
bin # show free list bins
tcachebins # show tcache entries
vis_heap_chunks # visual heap mapТрассировка системных вызовов
Используйте strace, чтобы отслеживать системные вызовы без полноценной отладки:
strace ./vuln # trace all syscalls
strace -e trace=open,read,write ./vuln # filter syscalls
strace -f ./vuln # follow forks
# ltrace for library calls:
ltrace ./vulnНастройка среды отладки
Важные настройки для разработки эксплойтов:
# Disable ASLR for testing:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# Or per-process:
setarch $(uname -m) -R gdb ./vuln
# Verify with:
ldd ./vuln # check libc baseОтладка двоичных файлов без символов
Во многих двоичных файлах из промышленной эксплуатации отладочные символы удалены. Методы:
- Используйте
fileиreadelf, чтобы изучить двоичный файл - Устанавливайте точки останова по адресам, а не по символам
- Используйте сигнатуры функций для распознавания распространённых вызовов библиотек
- При наличии загружайте символы libc отдельно
Быстрая проверка: GDB
Какая команда GDB устанавливает точку останова, срабатывающую только при выполнении определённого условия?
Итоги урока
GDB с pwndbg позволяет выполнять динамический анализ: устанавливать точки останова, исследовать регистры и память, отслеживать выполнение. Основные команды: break, run, ni/si, x/format, info registers. pwndbg добавляет визуализацию кучи, телескопический просмотр стека и инструменты для работы с шаблонами. strace/ltrace отслеживают системные вызовы и вызовы библиотек без полноценной настройки отладки.
Изучай Cyber Security Academy с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 76
- Уроки
- 303
Часто задаваемые вопросы
Урок «Динамический анализ с GDB и pwndbg» бесплатный?
Да — полный текст урока «Динамический анализ с GDB и pwndbg» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Динамический анализ с GDB и pwndbg»?
Устанавливайте точки останова, исследуйте память, отслеживайте системные вызовы и автоматизируйте сеансы GDB с помощью pwndbg. Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Динамический анализ с GDB и pwndbg»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Ghidra: навигация и аннотирование двоичных файлов
- Основы ассемблера x86/x64 для реверс-инженеров
- Динамический анализ с GDB и pwndbg
- Деобфускация и методы противодействия анализу