PLKA介于LKD3和ULK3之间。...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书的容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...参考书 * LDD3 Linux Device Driver 3rd * LKD3 Linux Kernel Development 3rd * ULK3...Understanding the Linux Kernel 3rd * PLKA Professional Linux Kernel Architecture * UML...User Mode Linux * Intel V3 Intel?
(这里的先后顺序其实就是LKD3的目录的顺序)。...PLKA介于LKD3和ULK3之间。...参考书 LDD3 Linux Device Driver 3rd LKD3 Linux Kernel Development 3rd ULK3 Understanding...the Linux Kernel 3rd PLKA Professional Linux Kernel Architecture UML User Mode Linux...Linux,我的兴趣,我的动力,我的方向,我的未来!
6.用内核扩展命令查看常见内核对象数据结构(每条命令以分号隔开) (1)进程:lkd> !process [0 0];dt nt!_eprocess;dt nt!..._kprocess; (2)线程:lkd> !thread;dt nt!_ethread;dt nt!_kthread; (3)I/O请求包:lkd> dt nt!_irp;!...irpfind; (4)常见同步对象:lkd> dt nt!_kevent;lkd> dt nt!_kmutant;lkd> dt nt!_ksemaphore; (5)作业:lkd> !...job;会话(lkd> !session);内存管理(lkd> !vm)的命令等。 显示内核符号中所包含的类型信息的内核结构列表àlkd> dt nt!_*,若需递归显示子结构请使用“-r”开关。...在.hh后面添加关键字,将显示该命令的帮助,例如:lkd>.hh irp。
(这里的先后顺序其实就是LKD3的目录的顺序)。...PLKA介于LKD3和ULK3之间。...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书的容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...参考书 LDD3 Linux Device Driver 3rd LKD3 Linux Kernel Development 3rd ULK3 Understanding...the Linux Kernel 3rd PLKA Professional Linux Kernel Architecture UML User Mode Linux
(这里的先后顺序其实就是LKD3的目录的顺序)。...PLKA介于LKD3和ULK3之间。...这三本书,看完这三本书,你会发现读LDD3这些章节的时候简直跟喝白开水一样,太随意了,因为LDD3的讲解比之LKD3更粗略。...ULK3和LKD3都是英文版的。大牛们写的书,遣词造句真的是简洁,易懂,看原版对我们学习计算机编程的程序员来说完全不成问题,最好原汁原味。...参考书 LDD3 Linux Device Driver 3rd LKD3 Linux Kernel Development 3rd ULK3 Understanding
irpfind; (4)常见同步对象:lkd> dt nt!_kevent;lkd> dt nt!_kmutant;lkd> dt nt!_ksemaphore; (5)作业:lkd> !...job;会话(lkd> !session);内存管理(lkd> !vm)的命令等。 附件是WinDbg使用指南(English版)
(这里的先后顺序其实就是LKD3的目录的顺序)。...PLKA介于LKD3和ULK3之间。...这三本书,看完这三本书,你会发现读LDD3这些章节的时候简直跟喝白开水一样,太随意了,因为LDD3的讲解比之LKD3更粗略。...ULK3和LKD3都是英文版的。大牛们写的书,遣词造句真的是简洁,易懂,看原版对我们学习计算机编程的程序员来说完全不成问题,最好原汁原味。...参考书 LDD3 Linux Device Driver 3rd LKD3 Linux Kernel Development 3rd ULK3 Understanding the Linux Kernel
8d542404 lea edx,[esp+4] 可以看到在 Ring0 下的 ZwQuerySystemInformation 将 105h 放入了寄存器 eax 中, lkd...说明一下内核中 Zw和Nt两套函数的区别 lkd> u ZwQuerySystemInformation nt!...KiSystemService (8445807e) 84456c49 c21000 ret 10h lkd> u NtQuerySystemInformation l 10...说了那么多理论知识,我们windbg来看下SSDT表的结构: lkd> dd KeServiceDescriptorTable 84583b00 84498d5c 00000000 00000191...NtQuerySystemInformation = 84498d5c + 4 * 105h = [84499170h] [84499170h] = 8464ae3eh lkd> u 8464ae3e
pcr: lkd> !...于是:查看GDT lkd>dd 8003f000 8003f000 00000000 00000000 0000ffff 00cf9b00 8003f010 0000ffff 00cf9300 0000ffff...8003f060 2f40ffff 00009302 80003fff 0000920b 8003f070 700003ffff0092ff 0000ffff 80009a40 查看IDT表: lkd...8003f460 00080b1c 80548e00 00080e00 80548e00 8003f470 0008150880548e00 00081838 80548e00 查看TSS描述符: lkd...d0f70000 20ac0000 18000004 00000018 80042070 0000000000000000 00000000 00000000 也搜了一下一些命令的意思,但不知道对不对:使用命令lkd
lkd> .sympath srv*d:\symbols*http://msdl.microsoft.com/download/symbol lkd> .reload Connected to Windows...lkd> dd kiservicetable +0x7A * 4 l 1 80502d74 805c2296 lkd> u 805c2296 nt!...lkd> dd KeServiceDescriptorTable 80553fa0 80502b8c 00000000 0000011c 80503000 lkd> dd 80502b8c+0x7A...*4 80502d74 805c2296 805e49fc 805e4660 805a0722 lkd> u 805c2296 nt!...lkd> u ZwOpenProcess nt!
lkd> .sympath srv*d:\symbols*http://msdl.microsoft.com/download/symbollkd> .reloadConnected to Windows...lkd> dd kiservicetable +0x7A * 4 l 180502d74 805c2296lkd> u 805c2296nt!...lkd> dd KeServiceDescriptorTable80553fa0 80502b8c 00000000 0000011c 80503000lkd> dd 80502b8c+0x7A*480502d74...805c2296 805e49fc 805e4660 805a0722lkd> u 805c2296nt!...lkd> u ZwOpenProcessnt!
lkd> dd KeServiceDescriptorTable 8055ab80 804e3d20 00000000 0000011c 804d9f48 8055ab90 00000000...我们再看看804e3d20地址里是什么东西: lkd> dd 804e3d20 804e3d20 80587691 805716ef 8057ab71 80581b5c...KeServiceDescriptorTable.ntoskrnel.ServiceTableBase(804e3d20) + 0x7A * 4 = 804E3F08,然后804E3F08 ->8057559e 这个就是OpenProcess系统服务函数所在,我们再跟踪看看: lkd...下面我们来点实际的吧: lkd> u nt!NtOpenProcess nt!
配置好本地内核调试环境后,使用管理员权限启动 WinDBG,覆写 smss.exe(412) 进程的 Protection = 0x00 命令如下: # 获取 smss.exe 进程的 EPROCESS 地址 lkd...process 0 0 smss.exe # 从 EPROCESS 获取 Protection 的偏移和值 lkd > dt nt!..._eprocess ffffc40b2c45e080 Protection lkd > db ffffc40b2c45e080+0x87a l1 # 将 Protection 值修改为 0x00 lkd
获取内核源码: https://www.kernel.org/ 阅读linux内核,常用下面两种方法: bochs+linux0.11+书(linux内核完全注释、linux内核完全剖析、linux内核设计的艺术...) Source Insight+linux2.X+书(linux内核情景分析) 另外:笨叔叔近两年出的两本书不错,《奔跑吧Linux内核 入门篇》和《奔跑吧Linux内核 》基于Linux4.x,只是配套视频有点贵...《linux内核完全剖析》《linux内核完全注释》是引导你横向阅读的书,《linux内核设计的艺术》是引导你纵向阅读的书。...内核设计与实现》,英文名Linux Kernel Development(所以有人叫它LKD),机械工业出版社,美国Robert Love著,陈莉君译者。...市面上能见到的其它的Linux内核的图书,《Linux设备驱动程序》、《Linux内核源代码完全注释》以及新出的《Linux内核分析及编程》等。
lkd> u 83e7f82cnt!...lkd> dd KeServiceDescriptorTable // 获取到SSDT表基址8055d700 80505570 00000000 0000011c...805059e48055d710 00000000 00000000 00000000 00000000lkd> dd KeServiceDescriptorTableShadow...lkd> dd KeServiceDescriptorTable - KeServiceDescriptorTableShadow00000040 ???????? ????????...805f2452 805f5c9e 805f5ce2lkd> u 805a5664 // 得到SSDT表中第一个函数的地址nt!
lkd> u 83e7f82c nt!...lkd> dd KeServiceDescriptorTable // 获取到SSDT表基址 8055d700 80505570 00000000 0000011c...lkd> dd KeServiceDescriptorTable - KeServiceDescriptorTableShadow 00000040 ???????? ????????...805f2452 805f5c9e 805f5ce2 lkd> u 805a5664 // 得到SSDT表中第一个函数的地址 nt!...lkd> dd poi[KeServiceDescriptorTable-0x40+0x10]+0x211*4 bf9a1d44 a1ea5e9e bf86b7d8 bf82938b bf914622
命令行与 shell 脚本编程大全》 这是一本关于 Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的...推荐2:《Linux/Unix 系统编程手册》 个人觉得这本书已超越经典书籍 APUE,非常值得推荐。...本书详细描述了 Linux/Unix 系统编程所涉及的逾 500 个系统调用和库函数,并辅之以全面而清晰的逾 200 个程序示例。...推荐3:《Linux 内核设计与实现》 简称LKD,内核新人首选必读的书籍,帮助快速了解 Linux 内核设计与实现。相比大部头 ULK,本书不纠结于太多细节,整体读起来压力较小。...本书介绍了操作系统和应用程序的概念、策略、工具和调优,并用基于 Linux 的操作系统作为主要示例。
SOPR 下级定单已打印 36 I0036 SOCF 下级定单已确认 37 I0037 UMGP 已重新计划 38 I0038 配置 配置完成 39 I0042 PREL 部分释放 40 I0043 LKD
我们用Windbg查看下TEB的结构体,该结构体很大,我只列出我们目前关心的字段 lkd> dt _TEB nt!...我们再看下TIB结构体 lkd> dt _NT_TIB nt!...lkd> dt _PEB nt!
Linux 文件系统 目录 说明 bin 存放二进制可执行文件 sbin 存放二进制可执行文件,只有 root 才能访问 boot 存放用于系统引导时使用的各种文件 dev 用于存放设备文件 etc...是超级管理员 localhost 表示主机名 ~ 表示当前目录(家目录),其中超级管理员家目录为 /root,普通用户家目录为 /home/chan $ 表示普通用户提示符,# 表示超级管理员提示符 Linux...test.tar.gz 文件搜索命令 locate:在后台数据库搜索文件 updatedb:更新后台数据库 whereis:搜索系统命令所在位置 which:搜索命令所在路径及别名 find:搜索文件或文件夹 用户和组 Linux
领取专属 10元无门槛券
手把手带您无忧上云