通过阅读操作调试GDK7的Linux系统(上):中断GDK7,我们已经可以成功用Nanocode连接终端GDK7的Linux系统并且中断下来了,下面就是准备调试所需的符合和代码文件相关设置。
一. 调试所需内容
这里仅演示下载内核符号
在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
添加访问符号服务器的密钥文件:
wget -O - http://ddebs.ubuntu.com/dbgsym-release-key.asc | sudo apt-key add -
以下是执行过程:
执行
sudo apt-get update
更新执行如下命令开始下载符号包:
sudo apt-get install linux-image-`uname -r`-dbgsym
安装过程如果顺利结束,那么符号文件会被安装到/usr/lib/debug/目录下,最重要的kernel文件在boot子目录下。
然后进入/usr/lib/debug/boot/目录下,将vmlinuxXXXXXXXX文件改名成vmlinux,拷贝到另一个装nanocode的机器上。
下载源码
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中正常使用。例如下图光标位置就是添加的启动参数:
三.开始调试
- 还是用蓝色usb线将gdk7和另一个安装nanocode的电脑连接,在nanocode里面选择
DCI OPEN
,地址添加0x后面是kgb的地址,开始调试。
如果内核符号文件是从网上自动下载的,放到Nanocode机器上调试时候,需要把这文件名字改成vmlinux才行
- 在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-21 09:32