- 博客(25)
- 收藏
- 关注
原创 在GDK8下观察glibc堆
GDK8产品主页:https://www.nanocode.cn/#/gdk8/indexglibc堆布局介绍在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。我们一般称管理堆的那部分程序为堆管理器。堆在系统中 的布局可以分成两大类,分别是main_arena主场地和non_main_aren辅场地。main_arena主场地的布局如下图所示:在main_arena中,当程序第一次动态分配内
2021-11-16 16:18:44
659
原创 通过GDK8观察堆
实验环境主机: Windows 10;64位;专业版调试工具为Nano Code目标机: GDK8 Ubuntu 18.04;64位 ArmV8架构 Nano Debugger;用于支持符号化的Linux应用程序调试通过GDK8观察堆 堆是什么?--》在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址...
2021-10-11 18:12:19
699
原创 通过GDK7观察神秘的IDT
1.中断描述符表概述中断应该是一个覆盖范围较广的概念,在很多时候我们都会需要“中断”,比如当你用水壶烧水时,你并不需要一直盯着它,可以抽身去做一些别的的事情,当水壶完成烧水的任务,他可能会发出“嘟嘟嘟”的声音来告诉你水烧好了,因此你既完成了一些别的事情,同时又有了热水喝;在计算机中,中断也是如此,CPU的时间较为宝贵,并不可能所有的事情都亲历亲为,也不可能非要盯着一件事情,等这件事情结束后再去做下一件事情,因此CPU会通过下达任务的方式给其他执行单元,在执行单元做任务的过程中,CPU可以...
2021-09-16 19:58:06
445
原创 Nano Code扩展之!address命令
!address命令的介绍 !address命令用于显示内存描述符内信息的命令。地址空间描述符----mm_struct在Linux中有一种名为task_struct的结构体,专门负责记录进程的信息,因此他也被称为是进程描述符;不难想象,一个进程它拥有许许多多的信息,因此负责描述它的task_struct结构体也必然非常庞大,数一下大概有几百个字段吧,而这其中又有不少的指针成员,这些指针成员内存有的地址会指向对应的结构体。在这些指针成员中有两个较为...
2021-09-10 18:28:25
290
原创 Nano Code扩展之获取进程task_struct结构体的信息
基本概念的说明在Linux中task_struct结构体内存储着进程的信息;在Nano Code或WinDBG中可以通过[dt task_struct]命令查看task_struct结构体中存储的信息,当然也可以通过[dt task_struct 地址]查看进程对应的task_struct结构体内存储的信息。list_head结构体是Linux中提供的双向循环链表;list_head结构体的定义在下方能看到。struct list_head { s...
2021-08-27 18:57:49
434
原创 WinDBG插件编写介绍及在Nano Code中加载扩展
穷理者,因其所已知而及其所未知,因其所已达而及其所未达。人之良知,本所固有。然不能穷理者,只是足于已知已达,而不能穷其未知未达,故见得一截,又不曾见得一截,此其所以于理未精也。然仍须功夫日日增加。今日既格得一物,明日又格得一物,工夫更不住地做。如左脚进得一步,右脚又进一步;右脚进得一步,左脚又进,接续不已,自然贯通。借钟馗与GDK7之合力捉”鬼“,保佑代码平安顺利、风调雨顺,再无”鬼怪出现“。Nano Code与WinDBG 最近在使用GDK...
2021-08-09 18:24:48
602
原创 Nano Code扩展(一)-简单说明
Nano Code扩展说明 扩展也可以被称为是插件,通过DLL以导出函数的形式供调试器加载扩展;扩展用于实现用户自定义的功能,便于用户基于自己的调试需求去扩展调试功能。无论是Nano Code还是WinDBG都拥有着丰富的扩展命令;但即使是这样,也难免也会有一些不足之处,让用户在调试过程中觉得现有的命令并不大够用,扩展也因此而出现。Nano Code是一款功能强大的调试器,它兼容WinDBG;因此在WinDBG上可以使用的扩展在Nano Code上也可以照常使用。 在调试器中以!开...
2021-08-05 18:51:01
554
原创 在调试器下看Panic机制及oops信息分析
穷理者,因其所已知而及其所未知,因其所已达而及其所未达。人之良知,本所固有。然不能穷理者,只是足于已知已达,而不能穷其未知未达,故见得一截,又不曾见得一截,此其所以于理未精也。然仍须功夫日日增加。今日既格得一物,明日又格得一物,工夫更不住地做。如左脚进得一步,右脚又进一步;右脚进得一步,左脚又进,接续不已,自然贯通。借钟馗与GDK7之合力捉”鬼“,保佑代码平安顺利、风调雨顺,再无”鬼怪出现“。oops 当你见到oops这个单词时,第一时间想...
2021-07-26 17:42:02
1852
原创 在调试器下观察Linux内核是如何发送数据包的
本文通过使用GDK7调试套件在Linux内核下观察信息发送过程1. TCP/IP参考模型与OSI参考模型TCP/IP参考模型与OSI参考模型的关系,如图1.1所示。图1.1 TCP/IP参考模型与OSI参考模型的关系2. 观察信息发送的过程2.1 应用程序层断下函数sock_sendmsg,并查看栈回溯,如图2.1所示。图2.1 查看栈回溯有信息发送时的栈回溯 无信息发送时的栈回溯lk...
2021-07-21 15:43:20
564
1
原创 Nano Code中DCI路径的设置方法
1. 未安装Intel System Studio所需文件可以在下方的百度网盘链接中下载:百度网盘链接:链接: https://pan.baidu.com/s/1UdOn7eIG5W-3mN9PphpnWg 提取码: 6hhe 复制这段内容后打开百度网盘手机App,操作更方便哦1.安装DCI设备的USB驱动dcidrv.msi。2.把openipc.zip复制到NanoCode所在文件夹下,并解压openipc.zip,如图1.1所示。图1.1 openipc.zip与openi
2021-07-14 11:30:45
595
原创 使用GDK7调试Linux内核之观察i915
1. i915与DRM的介绍1.1 i915i915可以分成两类;一类是内核态空间下的i915,另一类是用户态空间下的i915。内核态空间下的i915是英特尔显卡的内核驱动程序。用户态空间下的i915是基于英特尔显卡的mesa实现的。 mesa是基于开源的OpenGL实现的。1.2 DRMDRM的全称是Direct Rendering Manager,它是Linux内核中的子系统;DRM用于将用户态空间下的进程与GPU进行连接。用户态空间下的进程通过DRM给出API与GPU进行通信,
2021-07-13 17:19:01
2092
原创 符号文件及内核源代码的加载
目录1. 符号文件的加载2. 内核源代码的加载3. 验证是否成功加载其他说明1. 符号文件的加载1. 在命令行内输入.sympath+ 符号文件所在文件夹路径。.sympath+ 符号文件所在文件夹路径 //将符号文件所在文件夹路径添加到符号搜索路径中。 .sympath 符号文件所在文件夹路径 //当此命令成功执行后符号搜索路径中仅含有新添加的符号文件所在文件夹路径。2.执行.sympath命令,如图1.1所示。图1.1 ...
2021-07-12 15:15:27
294
原创 中断Ubuntu系统的GDK7-100
目录1. 确认调试主机与GDK7-100成功连接2. 中断Ubuntu系统的GDK7-100其他说明1. 确认调试主机与GDK7-100成功连接1.保证调试主机及GDK7-100处于开机状态。2.通过专用调试电缆将调试主机与GDK7-100连接起来。调试主机端必须使用USB3.0接口与专用调试电缆连接,具体接口位置没有要求。 GDK7-100必须使用后面板上的蓝色USB3.0接口中与专用调试电缆连接,其余的USB3.0接口则不行。3....
2021-07-12 15:10:23
330
原创 Ubuntu系统的GDK7中符号文件的准备与确认
目录1. 符号文件的准备2. 符号文件的确认其他说明1. 符号文件的准备1.可参考文章http://advdbg.org/blogs/advdbg_system/articles/7147.aspx下载符号文件。内核符号文件默认的下载位置是/usr/lib/debug/boot/vmlinux-5.3.0-62-generic。 其他内核模块符号文件默认的下载位置是/usr/lib/debug/lib/modules/5.3.0-62-generic。2....
2021-07-12 14:53:11
461
原创 使用GDK7调试Linux内核之KVM
1. KVM的介绍1.1 KVM架构的介绍1.目前有3种较为主流的虚拟化技术架构:ESXi架构、Xen架构及KVM架构,主要区别在虚拟化CPU、内存、磁盘及网络通信组件的模块不同及管理调度组件实现方式的不同;流虚拟化技术架构如图1.1所示。图1.1 主流虚拟化技术架构 ESxi架构:CPU、内存、磁盘及网络通信组件的虚拟化都在ESXi内核中实现;由于CPU、内存、磁盘及网络通信组件的虚拟化都在同一内核中实现,故不需要管理调度组件。 Xen架构:CPU及内...
2021-07-09 19:34:50
552
原创 入坑张银奎老师研发的GDK7
目录1. GDK7和Nano Code的简单介绍1.1 GDK7的简单介绍1.2 Nano Code的简单介绍2. GDK7调试原理的简单说明3. 配置前的准备工作3.1准备设备3.2 准备GDK73.3 准备调试主机4. 配置过程4.1 配置GDK7的过程4.2 配置调试主机的过程4.3确认调试主机与GDK7成功连接5. 中断GDK7(调试主机端操作)5.1中断Ubuntu系统的GDK75.2 中断Windows系统的GDK7参考文献..
2021-07-01 16:14:03
3466
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人