通过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,471 条评论

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

  2. Вывод из запоя в Москве в центре «Похмельная служба» — это медицинская помощь людям, которым трудно самостоятельно прекратить длительное употребление алкоголя и безопасно справиться с абстинентным синдромом. Наркологическая служба работает круглосуточно: врач может провести выезд на дом, оценить самочувствие зависимого, выполнить осмотр и диагностику, подобрать препараты для детоксикации либо рекомендовать лечение в клинике. При тяжелых случаях организуется госпитализация и дальнейшее наблюдение в стационаре. Помощь оказывается анонимно, с соблюдением конфиденциальности и учетом индивидуальных особенностей организма.
    Изучить вопрос подробнее – narkolog-vyvod-iz-zapoya

  3. Сосед делился похожим. И сердце уже не справлялось. Наркологический центр — полноценная детоксикация. Вывод из запоя — всё можно оформить анонимно. Вся информация доступна здесь: стационар наркологический https://snyatie.narkologicheskij-czentr-schelkovo-iko.ru И про наркологический диспансер по Щёлково и области. Тем быстрее человек вернётся к жизни.

  4. Вывод из запоя на дому подходит многим пациентам, которым не требуется круглосуточное лечение в стационаре. Нарколог приезжает на дому по указанному адресу, оценивает пациента и назначает лечение. Выезд на дому удобен тем, что пациент остается в привычной обстановке, а родственникам не нужно самостоятельно организовывать поездку в клинику. Помощь на дому может предоставляться анонимно, а заявку на лечение можно оформить круглосуточно.
    Узнать больше – https://vivvod-iz-zapoya-v-sankt-peterburge16.ru/

  5. Выезд начинается не с назначения лекарств, а с оценки пациента. Врач должен понять степень интоксикации, особенности зависимости и возможные ограничения. Для этого нарколог собирает историю болезни, уточняет стаж употребления алкоголя или психоактивных веществ, спрашивает о хронических диагнозах и лекарствах. Такой принцип позволяет выбрать оптимальный вариант лечения и не использовать универсальным образом одну схему для всех.
    Подробнее – narcolog-na-dom-krasnodar3.ru/

  6. Родственникам стоит внимательно следить за самочувствием больного и при появлении тревожных сигналов немедленно вызывать наркологическую бригаду. Существует перечень симптомов, при которых показана экстренная госпитализация или срочный выезд доктора на дом — в этом случае промедление угрожает жизни. Если вы заметили хотя бы один из этих признаков, не пытайтесь справиться самостоятельно и не давайте больному обезболивающие, снотворные или новые дозы спиртного.
    Узнать больше – vyvod-iz-zapoya-na-domu

  7. Публикация охватывает основные направления развития современной медицины. Мы обсудим значимость научных исследований, инноваций в лечении и роли общественного участия в формировании системы здравоохранения.
    Получить больше информации – капельницу от похмелья в Твери

  8. и попал без очереди. Аптекарь сказал, что рецепт теперь электронный. ЕМИАС — и не хочется никуда идти. ЕГИСЗ для стоматологии — врач может выписать лекарство онлайн. Можете ознакомиться по ссылке: телемедицина для предрейсовых медосмотров водителей телемедицина для предрейсовых медосмотров водителей И про Цифровую медицину для врачей. Главное — не бояться нового.

  9. Самостоятельный вывод из многодневного запоя может сопровождаться резкими изменениями давления, сердечного ритма, сна и психического состояния. Особенно высокий риск отмечается при многолетнем алкоголизме, заболеваниях сердца, печени, сосудов и нервной системы. Нарколог учитывает эти факторы при выборе лечения и решает, можно ли безопасно выполнять процедуры на дому.
    Получить больше информации – https://vivod-iiz-zapoya-v-sankt-peterburge16.ru/

  10. У жены подруга в женской консультации работает. Все в один голос твердят. ЕГИСЗ — хранятся в одной системе. Телемедицина для предрейсовых медосмотров — а кого-то обязывают. Можете ознакомиться по ссылке: телемедицина работа телемедицина работа И про своды ЕГИСЗ Росминздрав для частных центров. Иначе потом будет только сложнее.

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

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

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

  14. Продолжительное поступление этанола и продуктов его распада увеличивает нагрузку на организм. При тяжелых случаях могут возникнуть судороги, психические нарушения, алкогольный делирий, нарушения сердечного ритма, обезвоживание, острая почечная или печеночная недостаточность. Резко возрастает риск падений, бытовых травм, инсульта, инфаркта, комы и других опасных осложнений. Поэтому при резком ухудшении самочувствия нужна неотложная медицинская помощь, а не очередная доза алкоголя или бесконтрольный прием таблеток.
    Получить больше информации – https://vvyvod-iz-zapoya-v-krasnoyarske17.ru/

  15. Вывод из запоя в Кемерово — комплекс процедур, который помогает прервать длительное пьянство, провести детоксикацию и стабилизировать самочувствие. Нарколог оценивает тяжесть абстинентного синдрома, стаж алкоголизма, возраст, хронические патологии и подбирает лечение. В первых этапах задача врача заключается в безопасном очищении организма от продуктов распада этанола, поддержании работы сердца, печени, почек и головного мозга, а также в предотвращении осложнений. Выход из запоя возможен на дому или в стационаре клиники.
    Узнать больше – https://vyvood-iz-zapoya-kemerovo18.ru/

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

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

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

  19. Когда мы поняли, что обычная школа не подходит — мы задумались об альтернативе. Мы долго сомневались, но решили рискнуть. Школа онлайн — это оказалось удобнее, чем мы думали. Ребёнок занимается по своему графику. Мы видим результат — оценки подтянулись, появилась мотивация. Рекомендую всем, кто ищет гибкий формат обучения. интернет-школа https://shkola-onlajn-avk.ru По ссылке — подробная информация для региона. Хотите, чтобы ребёнок учился с комфортом и без нервов — выбирайте онлайн-школу. Школа онлайн — образование без границ!

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

  21. У жены подруга в женской консультации работает. Все в один голос твердят. Цифровое здравоохранение — это когда все анализы, снимки и назначения. Электронный рецепт — тут тоже свои тонкости. Можете ознакомиться по ссылке: медицинская система емиас https://kanalsanttech.ru И про своды ЕГИСЗ Росминздрав для всех медорганизаций. Главное — не запускать этот вопрос.

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

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

  24. Даже хороший опыт предыдущего домашнего лечения не означает, что очередной запой пройдет так же. Тяжесть абстиненции способна меняться от случая к случаю. Поэтому доктор каждый раз оценивает состояние заново. Если существует серьезная угроза здоровью, скорая медицинская помощь и госпитализация могут оказаться безопаснее, чем попытка провести очищение организма дома.
    Ознакомиться с деталями – https://vyvod-iz-zapoya-reutov15-1.ru

  25. Вывод из запоя представляет первый этап более длительного пути к трезвости. Детоксикация помогает уменьшить последствия интоксикации, но не устраняет причины алкоголизма. Поэтому после стабилизации доктор обсуждает с пациентом лечение зависимости, психотерапию, кодирование, реабилитацию и профилактику срыва. Комплексный подход особенно важен для людей, которые много лет страдают алкоголизмом, сталкиваются с повторением запойных эпизодов и уже не раз пытались справиться самостоятельно.
    Ознакомиться с деталями – anonimnyj-vyvod-iz-zapoya

  26. Вывод из запоя – это не только прерывание тяжёлого состояния, снятие похмелья и подобные процедуры, но комплекс мер по защите организма от ещё более серьёзных последствий. Одна капельница не является полноценным лечением алкогольной зависимости. Детоксикация помогает выйти из острой фазы, однако для устойчивого результата пациенту может потребоваться лечение алкоголизма, консультация психиатра-нарколога, кодирование, психотерапия и реабилитация. В клинике можно пройти необходимые этапы последовательно, а часть процедур при отсутствии противопоказаний проводится на дому.
    Ознакомиться с деталями – https://vivod-iiz-zapoya-v-sankt-peterburge16.ru/

  27. Вывод из запоя в Балашихе в центре «Детокс» — это профессиональная медицинская помощь людям, которые не могут самостоятельно остановить длительное употребление алкоголя и нуждаются в безопасном снятии абстинентного синдрома. Наркологическая служба работает круглосуточно: нарколог может провести осмотр на дому, оценить физическое и психическое состояние человека, подобрать препараты для инфузионной терапии либо рекомендовать лечение в стационаре. Важно понимать, что запой опасен не только выраженным похмельем. При длительного употребления спиртного повышается нагрузка на сердце, сосудистую и нервной системы, печень, головного мозга и другие внутренних органов, поэтому выход из запоя желательно проводить под медицинским наблюдением.
    Узнать больше – http://vyvod-iz-zapoya-balashiha15-1.ru/

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

  29. Оформить вызов на дому можно по телефону или через заявку на сайте. Оператор центра уточняет контактные данные, адрес в Москве, удобное время, причину обращения и наличие медицинских документов. Если препарат уже назначен, стоит сообщить его название и дозировку. Если схемы лечения нет, сначала проводится консультация врача, после которой специалист решает, можно ли сделать капельницу на дому.
    Подробнее – https://kapelnitsa-na-domu-v-moskwe2.ru/

  30. Особого внимания требуют нарушения сознания, судорожные приступы, выраженная дезориентация, паранойя, галлюцинации, сильнейшая тревога и резкие изменения поведения. При алкогольном отравлении может страдать сердечно-сосудистая система, нарушаться кровоток и функции мозга. В большинстве сложных случаев попытка просто «перетерпеть» похмельный синдром не является безопасной стратегией.
    Узнать больше – вывод из запоя дешево Кемерово

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

发表回复

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