Cyber Security Academy · Урок

Динамический анализ с GDB и pwndbg

Устанавливайте точки останова, исследуйте память, отслеживайте системные вызовы и автоматизируйте сеансы GDB с помощью pwndbg.

Урок 3 из 413 шагов

«Динамический анализ с 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 — локальная установка не требуется.

Все уроки этого курса

  1. Ghidra: навигация и аннотирование двоичных файлов
  2. Основы ассемблера x86/x64 для реверс-инженеров
  3. Динамический анализ с GDB и pwndbg
  4. Деобфускация и методы противодействия анализу
← Назад к Cyber Security Academy