通过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

9,419 条评论

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

  2. Особого внимания требуют нарушения сознания, судорожные приступы, выраженная дезориентация, паранойя, галлюцинации, сильнейшая тревога и резкие изменения поведения. При алкогольном отравлении может страдать сердечно-сосудистая система, нарушаться кровоток и функции мозга. В большинстве сложных случаев попытка просто «перетерпеть» похмельный синдром не является безопасной стратегией.
    Дополнительная информация – https://n.vyvod-iz-zapoya-kemerovo18.ru/

  3. Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
    Подробнее можно узнать тут – vyvod-iz-zapoya-v-koroleve

  4. Лечение начинается с оценки клинической картины. Врач-нарколог проводит осмотр, при необходимости назначает обследование, ЭКГ, анализы, тест на употребление веществ, проверяет основные показатели, уточняет данные о принимаемых лекарствах, хронических диагнозах, аллергии, опыте кодирования и прошлых попытках остановиться. На этой основе назначается детоксикация: витаминно-минеральный раствор, средства для восстановления водно-солевого баланса, успокоительные препараты, нейропротекторы, кардиопротекторы, гепатопротекторы и другие медикаменты, которые улучшают самочувствие, поддерживают функции головного мозга, печени, сердца и нервной системы.
    Углубиться в тему – vyvod iz zapoya cena

  5. Завершает визит блок рекомендаций и краткий маршрут на 2–4 недели: питьевой режим и питание, режим сна, щадящая физическая активность, поддерживающая фармакотерапия. По желанию обсуждаются варианты кодирования и подключение к реабилитационной программе — только по допуску врача и при отсутствии противопоказаний. В первые дни возможны контрольные звонки для уточнения самочувствия и корректировки схемы.
    Получить дополнительные сведения – http://narkolog-na-dom-serpuhov6.ru/narkolog-na-dom-anonimno-v-serpuhove/

  6. Вывод из запоя представляет собой комплекс медицинских действий, направленных на прекращение употребления спиртного, снижение последствий интоксикации и стабилизацию самочувствия. Детоксикация не лечит зависимость как заболевание полностью, однако делает первый этап безопаснее и создает условия, чтобы затем идти к кодированию, психотерапии и реабилитации. Врачи учитывают, сколько дней человек пил, какие напитки употреблял, проходил ли вывод из запоя раньше и какие препараты принимает постоянно.
    Дополнительная информация – https://n.narkologicheskaya-klinika-v-kemerovo18.ru/

  7. Мы принимаем обращения анонимно и понимаем, насколько важны для семьи конфиденциальность, комфорт и уважительное отношение персонала. Лечение может проходить амбулаторно, в стационаре или на дому, если выбранный формат соответствует медицинским показаниям. Получить предварительную консультацию, узнать цены и обсудить возможный план можно по телефону. Позвоните в центр, расскажите о ситуации и задайте вопрос специалисту: консультация поможет определить, с чего лучше начать.
    Узнать больше – http://n.narkologicheskaya-klinika-kemerovo18.ru

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

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

  10. Распознать критическое состояние, требующее участия профессионалов, можно по характерным признакам. Если у близкого наблюдается расстройство сознания, неадекватное поведение или резкие скачки артериального давления, медлить больше нельзя. В таких случаях необходима экстренная помощь врача-психиатра, ведь длительное воздействие токсинов может закончиться отказом жизненно важных органов. Вызвать нарколога на дом в Москве и области нужно при первых же угрозах, не дожидаясь усугубления ситуации. Наши специалисты готовы провести лечение запоя и снятие ломки немедленно.
    Углубиться в тему – vyzvat-narkologa-na-dom-prokapatsya

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

  12. Когда клиника далеко, время позднее или важна конфиденциальность, помощь на дому позволяет начать лечение немедленно и в комфортной обстановке. Ниже — типичные ситуации, когда визит нарколога на дом особенно уместен.
    Получить дополнительную информацию – https://narkolog-na-dom-serpuhov6.ru

  13. Слушайте кто сталкивался Брат снова сорвался Дети напуганы Нужна срочная помощь на дому Короче, врачи приехали и поставили систему — вывод из запоя на дому срочно Приехали через 40 минут В общем, жмите чтобы сохранить — врач на дом капельница от запоя врач на дом капельница от запоя Не ждите пока станет хуже Перешлите тем кто в такой же ситуации

  14. Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
    Подробнее – vyvod-iz-zapoya-deshevo

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

  16. Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
    Получить больше информации – https://v.vyvod-iz-zapoya-kemerovo18.ru/

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

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

  19. Сначала администратор собирает ключевые данные: возраст и примерный вес, длительность употребления, описание симптомов, хронические заболевания, аллергии и принимаемые лекарства. По этой информации врач заранее продумывает схему инфузии и прогнозирует длительность процедуры.
    Подробнее – https://narkolog-na-dom-serpuhov6.ru/narkolog-na-dom-anonimno-v-serpuhove

  20. Ранняя врачебная помощь не только снижает тяжесть абстинентного синдрома, но и предотвращает опасные осложнения, даёт шанс пациенту быстрее вернуться к обычной жизни, а его близким — обрести уверенность в завтрашнем дне.
    Исследовать вопрос подробнее – https://vyvod-iz-zapoya-shchelkovo6.ru/pomoshch-vyvod-iz-zapoya-v-shchelkovo/

  21. Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
    Изучить вопрос глубже – vyvod-iz-zapoya-stacionar

  22. Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
    Подробнее можно узнать тут – narkolog-na-dom-kruglosutochno

  23. Мы используем современные и проверенные методики наркологии, медикаментозное лечение, психотерапию, детоксикацию, кодирование и программы длительной реабилитации. Подход подбирается индивидуально: врач оценивает состояние организма, характер зависимости, срок употребления, сопутствующие заболевания, психические нарушения, возраст, результаты обследования и анамнеза. Лечение может проходить амбулаторно, в стационаре или с оказанием отдельных медицинских услуг на дому. Если необходим срочный вызов нарколога, выездная бригада работает круглосуточно, включая ночь, выходные и праздничные дни.
    Узнать больше – https://n.narkologicheskaya-klinika-sankt-peterburg14.ru

  24. Нижний Новгород, всем привет Брат снова сорвался Дети напуганы Таблетки не помогают Короче, только это реально спасло — вывод из запоя на дому нижний новгород круглосуточно без выходных Сняли ломку и стабилизировали состояние В общем, жмите чтобы сохранить — вывод из запоя на дому цены https://anonimnyj.vyvod-iz-zapoya-na-domu-nizhnij-novgorod.ru Звоните прямо сейчас Перешлите тем кто в такой же ситуации

  25. Врач проводит подробную диагностику, оценивает как физическое, так и психологическое состояние пациента. На основании полученных данных формируется индивидуальная программа помощи, которая включает не только медикаментозное лечение, но и психотерапевтическую поддержку, консультации для семьи и рекомендации по восстановлению.
    Исследовать вопрос подробнее – anonimnaya-narkologicheskaya-pomoshch-domodedovo

  26. В этой публикации мы предложим ряд рекомендаций по избавлению от зависимостей и успешному восстановлению. Мы обсудим методы привлечения поддержки и важность самосознания. Эти советы помогут людям вернуться к нормальной жизни и стать на путь выздоровления.
    Изучить эмпирические данные – лечение алкоголизма в ростове на дону

  27. Частная наркологическая клиника доктора Лазарева эффективно осуществляет лечение зависимости в Санкт-Петербурге с 2008 года. Для каждого пациента составляется индивидуальная программа курса терапии на дому или в реабилитационном центре. Лечение осуществляется с учетом характера зависимости, состояния органов, возраста, длительности употребления, результатов диагностики и готовности пациента меняться. Комплексность программы является значимым преимуществом: врач работает не только с физическими проявлениями болезни, но и с психологическими причинами пагубной привычки.
    Получить больше информации – http://v.narkologicheskaya-klinika-sankt-peterburg14.ru/

  28. Сначала оценивается общее самочувствие и наличие противопоказаний. При необходимости проводится обследование, измеряются основные показатели, назначаются анализы крови и мочи. Далее врач подбирает инфузионные растворы и препараты. Капельница может включать витаминные комплексы, гепатопротекторные и другие средства по медицинским показаниям. Количество раствора в литрах определяется индивидуально: больший объем не всегда означает более эффективное лечение.
    Подробнее – https://n.narkologicheskaya-klinika-kemerovo18.ru/

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

  30. Слушайте кто знает Отец не выходит из штопора Жена в истерике Таблетки не помогают Короче, врачи приехали и поставили систему — вывод из запоя на дому Москва с выездом Сняли ломку и стабилизировали состояние В общем, жмите чтобы сохранить — откапать от алкоголя на дому https://vyvod-iz-zapoya-na-domu-moskva-jst.ru Звоните прямо сейчас Перешлите тем кто в такой же ситуации

  31. С пациентом работают профильные специалисты, которые оценивают состояние и подбирают безопасный план помощи.
    Получить дополнительные сведения – vyvod-iz-zapoya-v-koroleve

  32. I was genuinely happy to discover this article today because it manages to deliver a very clear and neutral overview of the subject without getting bogged down in unnecessary details or overly complex jargon that confuses readers.

    https://luckydrawnews.com

  33. В этой публикации мы обсуждаем современные методы лечения различных заболеваний. Читатели узнают о новых медикаментах, терапиях и исследованиях, которые активно применяются для лечения. Мы нацелены на то, чтобы предоставить практические знания, которые могут помочь в борьбе с недугами.
    Разобраться лучше – лечение от алкоголизма в ростове

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

  35. Когда клиника далеко, время позднее или важна конфиденциальность, помощь на дому позволяет начать лечение немедленно и в комфортной обстановке. Ниже — типичные ситуации, когда визит нарколога на дом особенно уместен.
    Детальнее – вызов нарколога на дом

  36. Зависимость от алкоголя и наркотиков — это серьезные хронические заболевания, разрушающие физическое и психическое здоровье. Многие родственники до последнего пытаются справиться с проблемой самостоятельно, однако отсутствие своевременного лечения запоя часто приводит к тяжелым последствиям. Регулярное употребление спиртного вызывает токсические поражения всего организма, особенно страдают печень, сердце и нервная система. Огромное значение имеет срочный вызов нарколога на дом для лечения запоя и вывода из абстинентного состояния. Врач-нарколог приезжает, чтобы безопасно провести все необходимые процедуры и снизить риски для жизни. Лечение алкоголизма на дому начинается именно с такого экстренного вмешательства.
    Изучить вопрос глубже – нарколог на дом люберцы

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

  38. Врач проводит первичный осмотр и оценивает, можно ли начать лечение на дому или безопаснее организовать госпитализацию. Особенно важно обратиться за профессиональной помощью при алкогольном отравлении, заболеваниях сердца и ЖКТ, нарушении функций печени, почек и мозга, а также при психозах и выраженной агрессии.
    Подробнее – https://k.vyvod-iz-zapoya-kemerovo18.ru/

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

发表回复

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