通过QEMU/KVM GDB Stub进行内核调试

内核准备

内核配置

建议从源代码重新编译内核,这样可以更方便地进行源代码级调试;当然自己从发行版官网下载相应内核的调试符号亦可以,通常情况下只用于应急分析,比如crash dump分析等。

自己编译Linux内核的话,最好打开两个选项:

CONFIG_DEBUG_INFO=y
CONFIG_GDB_SCRIPTS=y

可通过make menuconfig来设置内核配置项,分别以5.12及6.1.0为例: 5.12: Linux kernel 5.12 menuconfig 6.1.0: Linux kernel 6.1.0 menuconfig

禁止编译优化

无法针对Linux内核禁止全局优化,但可以针对特定的源代码文件做禁止编译优化的处理,可通过以下方式达成:

在需要被调试的源代码文件头部增加下面一行代码:

#pragma GCC optimize ("O0")

或者修改其对应的Makefile,以文件名core.c为例:

CFLAGS_REMOVE_core.o := -O2
CFLAGS_core.o := -O0

镜像准备

建议通过libvirt来管理本地KVM虚拟机,这样使用起来非常方便,如果条件不允许的话亦可用qemu命令行方式来运行。

添加 gdb stub

下面的示例是以命令行方式来运行调试目标:

qemu-system-x86_64 -m 4096 -nographic -net user,hostfwd=tcp::44334-:22 -net nic -hda \
    debian-10.7.qcow2 -machine type=pc,accel=kvm -cpu host -smp 4 -gdb tcp:127.0.0.1:44333

“-gdb tcp:127.0.0.1:44333” 就是gdb stub的命令行参数,即gdb可连接localhost:44333来调试目标系统。

如果使用libvirt的话则需要修改QEMU配置,可通过命令virsh edit来进行修改,需要在末尾加上中间4行:

   </devices>

   <qemu:commandline>
    <qemu:arg value='-gdb'/>
    <qemu:arg value='tcp:localhost:44333'/>
  </qemu:commandline>

</domain>

另外还需要更改虚拟机配置文件的domain type,即将第一行从

<domain type='kvm'>

改为:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

修改内核启动项

本步骤主要为了禁止内核地址随机化,不然内核符号无法定位并正确绑定。可通过修改grub项完成,在安装新内核过程中会自加增加nokaslr及nopti,当然在编译内核时亦可直接禁止相应功能亦可。

root@T490:~# cat /etc/default/grub | grep nokaslr
GRUB_CMDLINE_LINUX_DEFAULT=&quot;noquiet nopti nokaslr console=ttyS0&quot;

最直接的方式就是直接修改/boot/grub/grub.cfg文件,或者在系统启动时手工编译grub启动项亦可:

root@T490:~# cat /boot/grub/grub.cfg | grep nokaslr
    linux   /boot/vmlinuz-5.10.14 root=UUID=c4072cd3-9ed9-4376-b85c-95d1306e817b ro  noquiet nopti nokaslr console=ttyS0,115200

host端准备

前面我们就完成了guest端即调试目标机的配置,然后就是准备host端,可以用gdb,亦可以用vscode等gui工具,甚至可以用Windows Visual Studio配合VisualKernel工具来调试Linux系统。

源代码及调试符号vmlinux

将相应源代码及调试符号vmlinux复制到host端即可,复制时注意软链接问题,比如:

vmlinux-gdb.py -> /BUILD/linux-5.12/scripts/gdb/vmlinux-gdb.py

设置gdb的auto-load路径

建议直接修改 ~/.gdbinit文件,当然手动执行亦可,当处理多个调试机时最好通过.gdbinit来保存配置:

matt@T490 /W/K/debian-10.7> cat ~/.gdbinit 
add-auto-load-safe-path /usr/share/gdb/python/gdb/
add-auto-load-safe-path /usr/share/gdb/python/
add-auto-load-safe-path /usr/share/gdb/
add-auto-load-safe-path /BUILD/linux-5.12
set auto-load python-scripts on
source /BUILD/pwndbg/gdbinit.py

我本地的调试环境里安装的是pwndbg,已配置好了python组件

启动gdb

cd /BUILD/linux-5.12; gdb ./vmlinux

在gdb中执行以下执行开启内核调试:

    target remote :44333

然后gdb会自动加载pwndbg并中断目标机: Linux kernel 5.12 gdb

在内核gdb scripts加载成功的情况下可以执行lx系列扩展命令以获取内核信息: Linux kernel 5.12 gdb scripts

可通过apropos lx查询相应的gdb scripts扩展命令,如lx-lsmod, 变量:$lx_current():

gdb> apropos lx
function lx_clk_core_lookup -- Find struct clk_core by name
function lx_current -- Return current task.
function lx_device_find_by_bus_name -- Find struct device by bus and name (both strings)
function lx_device_find_by_class_name -- Find struct device by class and name (both strings)
function lx_module -- Find module by name and return the module variable.
function lx_per_cpu -- Return per-cpu variable.
function lx_rb_first -- Lookup and return a node from an RBTree
function lx_rb_last -- Lookup and return a node from an RBTree.
function lx_rb_next -- Lookup and return a node from an RBTree.
function lx_rb_prev -- Lookup and return a node from an RBTree.
function lx_task_by_pid -- Find Linux task by PID and return the task_struct variable.
function lx_thread_info -- Calculate Linux thread_info from task variable.
function lx_thread_info_by_pid -- Calculate Linux thread_info from task variable found by pid
lx-clk-summary -- Print clk tree summary
lx-cmdline --  Report the Linux Commandline used in the current kernel.
lx-configdump -- Output kernel config to the filename specified as the command
lx-cpus -- List CPU status arrays
lx-device-list-bus -- Print devices on a bus (or all buses if not specified)
lx-device-list-class -- Print devices in a class (or all classes if not specified)
lx-device-list-tree -- Print a device and its children recursively
lx-dmesg -- Print Linux kernel log buffer.
lx-fdtdump -- Output Flattened Device Tree header and dump FDT blob to the filename
lx-genpd-summary -- Print genpd summary
lx-iomem -- Identify the IO memory resource locations defined by the kernel
lx-ioports -- Identify the IO port resource locations defined by the kernel
lx-list-check -- Verify a list consistency
lx-lsmod -- List currently loaded modules.
lx-mounts -- Report the VFS mounts of the current process namespace.
lx-ps -- Dump Linux tasks.
lx-symbols -- (Re-)load symbols of Linux kernel and currently loaded modules.
lx-timerlist -- Print /proc/timer_list
lx-version --  Report the Linux Version of the current kernel.

Linux kernel 6.0 gdb Linux kernel 6.0 gdb Linux kernel 6.0 gdb

gdb常用命令及调试技巧

常用命令

常用gdb指令:bt, disass, step, next, break/delete, print, x/[i/g/d]等,具体可查询gdb命令手册

断点设置

使用break命令可设置断点,支持以下几种命令格式:

  • break 函数名: break dump_stack
  • break source_file:line_number: break smith_hook.c:70
  • break 逻辑地址:break 0xffffffff81003010,可以强制break跳过符号/函数名识别

针对模块的调试,可以考虑在模块中增加不常用内核函数的调用,如dump_stack;模块加载前是无法设置断点的,但内核函数的调用是可以的,这样就可以在模块调用指定内核函数时触发断点,然后再通过add-symbol-file /path_to/ko_file base_address,base_address或通过lx-lsmod查询得到,即模块在内核中的内存位置,之后就可以访问模块内的符号了,如全局变量或内部函数

X86_64位环境调试32位虚拟机

需要在attach前设置目标及当前系统架构,如 set architecture i386:x86-64。建议安装gdb-multiarch,以免系统自带gdb不支持多种架构:

pwndbg> target remote :44323
Remote debugging using :44323
warning: Selected architecture i386 is not compatible with reported target architecture i386:x86-64
warning: Architecture rejected target-supplied description
Remote 'g' packet reply is too long (expected 312 bytes, got 608 bytes): 102b91c10......0000

pwndbg> set architecture i386:x86-64
The target architecture is set to "i386:x86-64".
pwndbg> target remote :44323
Remote debugging using :44323
0x00000000c1912b23 in default_idle () at arch/x86/kernel

16,445 条评论

  1. Помогаем быстро перейти от консультации к конкретному плану: выезд, стационар или наблюдение.
    Ознакомиться с деталями – kapelnica-na-domu-cena

  2. Самостоятельный вывод из многодневного запоя может сопровождаться резкими изменениями давления, сердечного ритма, сна и психического состояния. Особенно высокий риск отмечается при многолетнем алкоголизме, заболеваниях сердца, печени, сосудов и нервной системы. Нарколог учитывает эти факторы при выборе лечения и решает, можно ли безопасно выполнять процедуры на дому.
    Дополнительная информация – вывод из запоя капельница на дому

  3. Медикаментозное лечение зависимости основывается на применении лекарственной терапии, которая изменяет реакцию организма на алкоголь или уменьшает влечение к нему. В клинике используются методы с препаратом на основе дисульфирама и, по показаниям, средства с другим механизмом действия, например налтрексон. Конкретный препарат, способ введения и срок выбирает врач после обследования. Кодирование препаратом не должно назначаться по советам знакомых или только по отзывам в интернете: у лекарственной методики есть противопоказания, особенности использования и ограничения совместимости.
    Дополнительная информация – https://kodirovanie-ot-alkogolizma-moskva15-1.ru/

  4. Наркологическая служба в Кемерово оказывает услуги круглосуточно. Можно вызвать специалиста к дому или пройти лечение в стационаре клиники. Врач оценивает состояние пациента, длительность запоя, возраст, хронические заболевания, препараты, которые он принимает, и другие факторы. Схема выведения определяется индивидуально: одному пациенту подходит стандартная капельница на дому, другому необходима расширенная детоксикация, а при тяжелом течении врач рекомендует стационар. Такой подход позволяет выбрать наиболее безопасный и эффективный вариант.
    Получить больше информации – https://vyvvod-iz-zapoya-kemerovo18.ru/

  5. Помощь можно получить анонимно, с аккуратным оформлением и внимательным отношением к личным данным.
    Подробнее – vyvood-iz-zapoya-kemerovo18.ru/

  6. Looking for a reliable car rental at HPN Airport? Take a look at the luxury car rental services at HPN for your next trip. Competitive deals and various models available. rental car hpn car rental hpn Book your car today and hit the road with ease!

  7. Если показатели нестабильны, капельница на дому может быть небезопасной. При нарушении сознания, судорогах, выраженной одышке, боли за грудиной, подозрении на инсульт, тяжелом отравлении, массивных отеках или резких изменениях артериального давления требуется вызывать скорую помощь. Откладывайте плановую процедуру только после согласования с доктором, но не откладывайте экстренное обращение при опасных признаках.
    Подробнее – narkolog-kapelnica-na-dom

  8. Нарколог оценивает совокупность проявлений, а не один отдельный симптом. Срочный вызов особенно нужен, если самочувствие резко ухудшается прямо сейчас, зависимый становится агрессивным или теряет ориентацию. Такие меры необходимы для предотвращения делирия, сердечно-сосудистых осложнений и травм.
    Дополнительная информация – вывод из запоя на дому круглосуточно Кемерово

  9. Обратиться в наркологическую клинику можно при длительном употреблении алкоголя, регулярных запоях, абстинентном синдроме, употреблении психоактивных веществ или повторных срывах после попыток лечения. Врач определяет, какие процедуры необходимы сейчас и какой этап лечения потребуется в дальнейшем. При необходимости помощь проводится в стационаре или начинается с выезда нарколога на дом.
    Ознакомиться с деталями – наркологическая клиника нарколог Кемерово

  10. GEO-платформа для брендов Видимость компании в информационном пространстве определяет ее коммерческий успех. Платформа для мониторинга видимости брендов оценивает долю голоса в цифровой среде. Инструмент рассчитывает частоту упоминаний по сравнению с главными конкурентами. Анализируются не только количественные, но и качественные показатели присутствия. Специальные графики наглядно демонстрируют взлеты и падения позиций. Маркетинговые отделы используют эти данные для корректировки стратегии продвижения. Алгоритмы учитывают авторитетность источников и охват аудитории. Регулярные срезы помогают оценивать результативность PR-активностей. Прозрачная методология расчетов исключает субъективность в оценках. Бизнес получает инструмент для точного измерения своего цифрового капитала.

  11. Searching for affordable car rental at HPN Airport? Explore the best deals for hpn car rental. Whether you need car rental at white plains airport (hpn), our selection is unmatched. Discover hpn car rental companies and get the best vehicle for your trip. car rental at hpn car rental hpn airport Don’t miss out for the best rates!

  12. Наркология объединяет медицинское лечение, психологию, психиатрию и технологии реабилитации. Основной комплекс помощи может включать очищение организма, медикаментозное лечение, диагностику, лечение абстинентного синдрома, консультацию психотерапевта, работу с мотивацией зависимого и последующее возвращение в социум. Если болезнь существует на протяжении нескольких лет, терапия обычно требует больше времени. Подробнее доктор объясняет пациенту, какие задачи решаются на каждом этапе и почему полный курс лечения не стоит заменять одной капельницей.
    Подробнее – nnarkologicheskaya-klinika-v-krasnoyarske17.ru/

  13. Помощь врача нужна, если запой длится несколько дней, больному становится сложно самостоятельно отказаться от алкоголя, а попытки выйти из запоя сопровождаются выраженным похмельем. Чем дольше сохраняется запой, тем выше нагрузка на организм пациента. При алкоголизме нередко обостряются хронические заболевания, возникают нарушения сердечного ритма, сна, пищеварения, деятельности печени и нервной системы. В таком случае лечение лучше проводить под контролем нарколога.
    Ознакомиться с деталями – вывод из запоя вызов на дом в Санкт-Петербурге

  14. Вывод из запоя – это не только прерывание тяжёлого состояния, снятие похмелья и подобные процедуры, но комплекс мер по защите организма от ещё более серьёзных последствий. Одна капельница не является полноценным лечением алкогольной зависимости. Детоксикация помогает выйти из острой фазы, однако для устойчивого результата пациенту может потребоваться лечение алкоголизма, консультация психиатра-нарколога, кодирование, психотерапия и реабилитация. В клинике можно пройти необходимые этапы последовательно, а часть процедур при отсутствии противопоказаний проводится на дому.
    Узнать больше – вывод из запоя дешево Санкт-Петербург

  15. Медик должен учесть общую тяжесть абстиненции, возраст, стаж зависимости и прошлые эпизоды лечения. Не стоит ставить внутривенное средство по совету соседей или друзей: подобные действия могут привести к нежелательным реакциям. При серьезном ухудшении решение принимается исходя из безопасности, а не из желания обязательно остаться дома.
    Подробнее – срочный вывод из запоя Кемерово

  16. Looking for a reliable rental car service at White Plains Airport (HPN)? I can recommend the luxury options from local HPN rental companies. Their fleet is always well-maintained vehicles and affordable rates. white plains airport rental cars hpn car rental Give them a try if you’re visiting the area.

  17. Перед назначением процедур нарколог проводит первичное обследование. Врач определяет степень опьянения, проверяет общее состояние, собирает сведения о принимаемых препаратах и хронических заболеваниях. При подготовке программы могут использоваться анализы крови, ЭКГ, тестирование и медицинское освидетельствование. Такой подход позволяет создать четкое представление о состоянии пациента и снизить риск осложнений.
    Подробнее – вывод наркологическая клиника

  18. Домашняя инфузионная помощь применяется по медицинским показаниям и не должна назначаться самостоятельно. Капельница является способом внутривенного введения раствора и лекарственных средств, поэтому выбор препарата, дозировки и объема должен выполнять врач. В некоторых случаях процедура используется для коррекции обезвоживания, поддержки организма при алкогольной интоксикации, введения витаминов, электролитов и других назначенных компонентов. Точно определить необходимость терапии можно только после осмотра.
    Получить больше информации – vyzov-vracha-na-dom-kapelnica

  19. Выездная услуга подходит не каждому. При тяжелого течении заболевания, вероятности острых осложнений, необходимости постоянного мониторирования или экстренного обследования врач может рекомендовать госпитализацию. В стационаре доступные методы диагностики и оборудование позволяют быстрее оценивать показатели и при необходимости корректировать лечение. Особенно важно не откладывать обращение за экстренной помощью, когда состояние быстро ухудшается.
    Изучить вопрос подробнее – kapelnica-ot-alkogolya-na-domu-cena

  20. Капельница на дому не сводится к механическому введению раствора. Медик оценивает состояние пациента, давление, пульс, температуру, показатели крови при наличии результатов, переносимость препаратов и вероятность осложнений. Для медицинского персонала важны качество процедуры, корректная дозировка и контроль реакции организма. Выездной формат особенно удобен пожилому человеку, человеку со сниженной физической активностью или тому, кому тяжело посещать клиники самостоятельно.
    Изучить вопрос подробнее – капельницы на дом круглосуточно

  21. Вывод из запоя в Кемерово — комплекс мер, направленных на прекращение длительного приема алкоголя, уменьшение абстинентных проявлений и стабилизацию самочувствия пациента. Если зависимый несколько дней продолжает пить и не может самостоятельно отказаться от спиртного, организм испытывает серьезную нагрузку. В крови накапливаются продукты распада этанола и токсины, нарушается водно-электролитный баланс, страдают печень, почки, сердце, сосуды, нервная система. При многолетнем алкоголизме последствия очередного запоя могут быть значительно тяжелее, чем несколько лет назад, поэтому затягивать с обращением к наркологу не следует.
    Получить больше информации – врач вывод из запоя

  22. Медицинские услуги на дому выбирают при стабильном самочувствии, когда нет признаков тяжелого острого состояния и врач допускает лечение вне клиники. На дому можно провести курс назначенных внутривенных капельниц, выполнить отдельный укол, организовать наблюдение медсестры и получить консультацию врача. Услуга полезна, если обратившемуся сложно самостоятельно приехать на прием или требуется провести лечение в удобное время.
    Получить больше информации – vyvod-iz-zapoya-na-domu-moskva-kapelnica

  23. Чтобы врачу было легче определить правильного направления лечения, желательно открыто рассказать об употреблении. Скрывать количество алкоголя, наркотиков или лекарств невыгодно самому пациенту: недостаток информации мешает безопасному подбору препаратов. Подробнее нарколог собирает анамнез и уточняет, как давно появилась проблема.
    Узнать больше – https://nnarkologicheskaya-klinika-v-krasnoyarske17.ru/

  24. Наркологическая помощь в Реутове оказывается круглосуточно, включая выходные дни. После обращения специалист уточняет длительность употребления алкоголя, примерное количество спиртного, наличие хронических болезней, принимаемые препараты и текущие симптомы. Эти данные помогают предварительно оценить тяжесть ситуации и подобрать оптимальное лечение. Если человек находится в стабильном состоянии и отсутствуют показания для госпитализации, вывод из запоя может проводиться на дому. При серьезной интоксикации, психических расстройствах, сердечной недостаточности и других осложнениях более безопасным решением становится лечение в стационаре.
    Изучить вопрос подробнее – скорая вывод из запоя

  25. Перед назначением процедур нарколог проводит первичное обследование. Врач определяет степень опьянения, проверяет общее состояние, собирает сведения о принимаемых препаратах и хронических заболеваниях. При подготовке программы могут использоваться анализы крови, ЭКГ, тестирование и медицинское освидетельствование. Такой подход позволяет создать четкое представление о состоянии пациента и снизить риск осложнений.
    Получить больше информации – наркологическая клиника нарколог Санкт-Петербург

  26. Looking for convenient car rental HPN options? Whether you need a HPN airport luxury car rental, you’ll find many premium car rental HPN to choose from. Heading to White Plains? Make sure to reserve your rental car HPN in advance. luxury car rental white plains airport hpn airport luxury car rental Explore top offers on HPN rental car services today.

  27. Если запой длится больше нескольких суток, а объем алкоголя в день только растет, присутствуют неадекватные реакции, срочно звоните в наркологическую клинику. Скорая медицинская оценка особенно нужна при судорогах, обмороке, выраженной спутанности, нарушении дыхания или резком ухудшении самочувствия. Если пациент психически неадекватен, агрессивен или находится под сильным воздействием ПАВ, не следует пытаться самостоятельно доставить его в клинику ценой собственной безопасности. Подробнее подходящий алгоритм следует уточнять у экстренных служб и профильного врача.
    Получить больше информации – наркологическая клиника

  28. Чем раньше пациент обращается за помощью, тем проще врачу оценить состояние и составить последовательный план лечения. При тяжелом самочувствии может потребоваться госпитализация в стационар.
    Узнать больше – наркологическая клиника стационар

  29. Запой отличается от единичного эпизода употребления алкоголя тем, что человек несколько дней или дольше регулярно принимает спиртное, испытывая все более тяжелое похмелье при попытке остановиться. Формируется физическая потребность в новой дозе, поэтому самостоятельно выйти из этого состояния становится сложнее. Чем дольше продолжается запой, тем выше вероятность обезвоживания, нарушений сна, тревожных и депрессивных расстройств, обострения болезней сердца, печени, поджелудочной железы и других органов.
    Дополнительная информация – вывод из запоя цена в Красноярске

  30. Looking for a reliable car rental at HPN Airport? Compare the best deals from premium HPN car rental companies. Whether you need a economy car or just a affordable option, there’s great choices for your trip. westchester county airport car rental luxury car rental hpn airport Book your rental today for the lowest prices!

  31. Центр «Элегия Мед» организует услуги на дому круглосуточно по Москве и Московской области. Чтобы вызвать врача, достаточно оставить заявку по телефону через оператора или воспользоваться формой записи на сайте. Администратор уточнит адрес, район, удобное время, причину обращения и необходимые данные для организации выезда. Информация о здоровье и обработку персональных данных осуществляют с учетом политики конфиденциальности и требований действующего законодательства. Обращение не требует длительного ожидания: при наличии свободной бригады специалист может приехать срочно, однако точное время зависит от района, дорожной ситуации и текущего графика персонала.
    Изучить вопрос подробнее – skolko-stoit-kapelnica-na-domu-v-moskve

  32. Москва отличается высокой плотностью районов и большой территорией, поэтому время прибытия зависит от адреса, ситуации на дорогах и выезда за пределы МКАД. Вызвать врача на дому можно по телефону или через заявку. Оператор уточнит категорию услуги, подберет оптимальное время и сообщит предварительные цены. Приоритетом остается безопасность: если больному нужна специализированная диагностика, постоянное мониторирование или экстренная помощь, специалист рекомендует обратиться в клинику или вызвать скорую.
    Получить больше информации – kapelnica-na-domu-telefon

  33. GEO-сервис Современная GEO-платформа для брендов помогает побеждать в региональной конкуренции. Решение объединяет геоаналитику и инструменты управления репутацией. Система собирает информацию о марке с учетом локации. Удобные дашборды выводят главные метрики на экран. Руководство видит объективную картину популярности в регионах. Платформа поддерживает гибкое распределение прав доступа. Интеграция с внешними системами настраивается через API. Высокая производительность системы впечатляет с первой минуты. Продукт помогает опережать конкурентов на любом рынке. Качество данных подтверждено экспертами индустрии.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注