通过阅读操作调试GDK7的Linux系统(上):中断GDK7,我们已经可以成功用Nanocode连接终端GDK7的Linux系统并且中断下来了,下面就是准备调试所需的符合和代码文件相关设置。

一. 调试所需内容

这里仅演示下载内核符号

  1. 在gdk7的命令行执行如下命令,产生“符号源列表”文件ddebs.list::

    codename=$(lsb_release -c | awk  '{print $2}')
         sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
         deb http://ddebs.ubuntu.com/ ${codename}      main restricted universe multiverse
         deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse
         deb http://ddebs.ubuntu.com/ ${codename}-updates  main restricted universe multiverse
         deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse

    然后再另起一行,输入EOF,然后回车保存即可。

    lsb_release -c命令用来获取当前Ubuntu的开发代号,用于在符号服务器中寻找所需符号包。产生好的ddebs.list应该像下面这样:

    ge@gewubox:/etc/apt/sources.list.d$ cat /etc/apt/sources.list.d/ddebs.list
         deb http://ddebs.ubuntu.com/ precise      main restricted universe multiverse
         deb http://ddebs.ubuntu.com/ precise-security main restricted universe multiverse
         deb http://ddebs.ubuntu.com/ precise-updates  main restricted universe multiverse
         deb http://ddebs.ubuntu.com/ precise-proposed main restricted universe multiverse
  2. 添加访问符号服务器的密钥文件:

    wget -O - http://ddebs.ubuntu.com/dbgsym-release-key.asc | sudo apt-key add -

    以下是执行过程:

  3. 执行sudo apt-get update更新

  4. 执行如下命令开始下载符号包:

    sudo apt-get install linux-image-`uname -r`-dbgsym

    安装过程如果顺利结束,那么符号文件会被安装到/usr/lib/debug/目录下,最重要的kernel文件在boot子目录下。
    然后进入/usr/lib/debug/boot/目录下,将vmlinuxXXXXXXXX文件改名成vmlinux,拷贝到另一个装nanocode的机器上。

  1. 下载源码
    5.1 对应版本的Linux源代码,修改/etc/apt/sources.list
    找到以 # deb-src开头的行。删除每行开头的#符号,

    deb-src http://cn.archive.ubuntu.com/ubuntu/ precise main restricted   #以实际为准

    类似下图:

    5.2 执行sudo apt-get update
    5.3 安装源文件:

    apt-get source linux-source

    其他ko的符号在的目录应该类似(/usr/lib/debug/lib/modules/5.3.0-62-generic),以实际为准

    源码所在的目录应该类似(/usr/src/linux-source-5.3.0/linux-source-5.3.0.rar.bz2),以实际为准,
    将这些都拷贝到安装有Nanocode的机器上,用来调试

    二.gdk7禁止内核随机化

    还需要先将gdk7里面的grub.cfg里面的启动参数位置添加nokaslr禁止内核随机化,才能在Nanocode中正常使用。例如下图光标位置就是添加的启动参数:

三.开始调试

  1. 还是用蓝色usb线将gdk7和另一个安装nanocode的电脑连接,在nanocode里面选择DCI OPEN,地址添加0x后面是kgb的地址,开始调试。

如果内核符号文件是从网上自动下载的,放到Nanocode机器上调试时候,需要把这文件名字改成vmlinux才行

  1. 在nanocode中,先将符号路径设置好,例如,我的符号vmlinux路径是E:\yl\test,那么我的符号设置命令就是
    .sympath E:\yl\test
    同理,我的源码路径如果是E:\yl\src
    那么我的代码路径设置命令应该是
    .srcpath E:\yl\src
    设置完成后,输入命令.reload重新加载,然后就可以正常工作了。
    此时输入命令 x lk!vfs_read和命令k此时可以正常显示出来。
作者:LiuJiaLi  创建时间:2025-03-12 14:27
最后编辑:LiuJiaLi  更新时间:2025-03-21 09:32