具体描述
从貌似天书的汇编代码中,一探Windows底层的核心实现。.
在开发中出现的问题,能从Windows自身找到答案!...
本书从基本的Windows程序与汇编指令出发,深入浅出地讲解了Windows内核的编程、调试、阅读,以及自行探索的方法。读者在使用C/C++ 开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及 Windows内核的基本编程方法。
本书适合使用C/C++在Windows上编程的读者,尤其适合希望加深自己技术功底的Windows应用程序员、计算机专业的有志于软件开发的大中院校学生;专业的Windows内核程序员,亦可从本书得到超越一般内核程序开发的启发。
作者简介
谭文,从2002年到2008年,从事信息安全类软件的Windows内核驱动的开发工作。从2008年开始参与一个主要涉及不同架构之间二进制指令的实时翻译技术的项目的开发。业余时间在驱动开发音(www.driverdevelop.com)以楚狂人为笔名发表了许多技术文章。
目录信息
第1章 汇编指令与C语言
1.1 上机建立第一个工程
1.1.1 用Visual Studio创建工程
1.1.2 用Visual Studio查看汇编代码
1.2 简要复习常用的汇编指令
1.2.1 堆栈相关指令
1.2.2 数据传送指令
1.2.3 跳转与比较指令
1.3 C函数的参数传递过程
第2章 C语言的流程和处理
2.1 C语言的循环反汇编
2.1.1 for循环
2.1.2 do循环
2.1.3 while循环
2.2 C语言判断与分支的反汇编
2.2.1 if-else判断分支
2.2.2 switch-case判断分支
2.3 C语言的数组与结构
2.4 C语言的共用体和枚举类型
第3章 练习反汇编C语言程序
3.1 算法的反汇编
3.1.1 算法反汇编代码分析
3.1.2 算法反汇编阅读技巧
3.2 发行版的反汇编
3.3 汇编反C语言练习
基础篇 内核编程
第4章 内核字符串与内存
4.1 字符串的处理
4.1.1 使用字符串结构
4.1.2 字符串的初始化
4.1.3 字符串的拷贝
4.1.4 字符串的连接
4.1.5 字符串的打印
4.2 内存与链表
4.2.1 内存的分配与释放
4.2.2 使用LIST_ENTRY
4.2.3 使用长长整型数据
4.2.4 使用自选锁
第5章 文件与注册表操作
5.1 文件操作
5.1.1 使用OBJECT_ATTRIBUTES
5.1.2 打开和关闭文件
5.1.3 文件读/写操作
5.2 注册表操作
5.2.1 注册表键的打开
5.2.2 注册表值的读
5.2.3 注册表值的写
第6章 时间与线程
6.1 时间与定时器
6.1.1 获得当前滴答数
6.1.2 获得当前系统时间
6.1.3 使用定时器
6.2 线程与事件
6.2.1 使用系统线程
6.2.2 在线程中睡眠
6.2.3 使用同步事件
第7章 驱动、设备与请求
7.1 驱动与设备
7.1.1 驱动入口与驱动对象
7.1.2 分发函数和卸载函数
7.1.3 设备与符号链接
7.1.4 设备的安全创建
7.1.5 设备与符号链接的用户相关性
7.2 请求处理
7.2.1 IRP与IO_STACK_LOCATION
7.2.2 打开与关闭请求的处理
7.2.3 应用层信息传入
7.2.4 驱动层信息传出
探索篇 研究内核
第8章 进入Windows内核
8.1 开始Windows内核编程
8.1.1 内核编程的环境准备
8.1.2 用C语言写一个内核程序
8.2 学习用WinDbg进行调试
8.2.1 软件的准备
8.2.2 设置Windows XP调试执行
8.2.3 设置VMWare虚拟机调试
8.2.4 设置被调试机为Vista的情况
8.2.5 设置Windows内核符号表
8.2.6 调试例子diskperf
8.3 认识内核代码函数调用方式
8.4 尝试反写C内核代码
8.5 如何在代码中寻找需要的信息
第9章 用C++编写的内核程序
9.1 用C++开发内核程序
9.1.1 建立一个C++的内核工程
9.1.2 使用C接口标准声明
9.1.3 使用类静态成员函数
9.1.4 实现new操作符
9.2 开始阅读一个反汇编的类
9.2.1 new操作符的实现
9.2.2 构造函数的实现
9.3 了解更多的C++特性
第10章 继续探索Windows内核
10.1 探索Windows已有内核调用
10.2 自己实现XP的新调用
10.2.1 对照调试结果和数据结构
10.2.2 写出C语言的对应代码
10.3 没有符号表的情况
10.4 64位操作系统下的情况
10.4.1 分析64位操作系统的调用
10.4.2 深入了解64位内核调用参数传递
深入篇 修改内核
第11章 机器码与反汇编引擎
11.1 了解Intel的机器码
11.1.1 可执行指令与数据
11.1.2 单条指令的组成
11.1.3 MOD-REG-R/M的组成
11.1.4 其他的组成部分
11.2 反汇编引擎XDE32基本数据结构
11.3 反汇编引擎XDE32具体实现
第12章 CPU权限级与分页机制
12.1 Ring0和Ring3权限级
12.2 保护模式下的分页内存保护
12.3 分页内存不可执行保护
12.3.1 不可执行保护原理
12.3.2 不可执行保护的漏洞
12.4 权限级别的切换
12.4.1 调用门及其漏洞
12.4.2 sysenter和sysexit指令
第13章 开发Windows内核Hook
13.1 XP下Hook系统调用IoCallDriver
13.2 Vista下IofCallDriver的跟踪
13.3 Vista下inline hook
13.3.1 写入跳转指令并拷贝代码
13.3.2 实现中继函数
实战篇 实际开发
第14章 反病毒、木马实例开发
14.1 反病毒、木马的设想
14.2 开发内核驱动
14.2.1 在内核中检查可执行文件
14.2.2 在内核中生成设备接口
14.2.3 在内核中等待监控进程的响应
14.3 开发监控进程
14.4 本软件进一步展望
第15章 Rootkit与HIPS
15.1 Rootkit为何很重要
15.2 Rootkit如何逃过检测
15.3 HIPS如何检测Rootkit
第16章 手写指令保护代码
16.1 混淆字符串
16.2 隐藏内核函数
16.3 混淆流程与数据操作
16.3.1 混淆函数出口
16.3.2 插入有意义的花指令
第17章 用VMProtect保护代码
17.1 安装VMProtect
17.2 使用VMProtect
17.3 查看VMProtect效果
参考文献
· · · · · · (收起)
读后感
本书作者在我的网友列表里好几年了,缘起是有朋友找我做文档安全系统,以驱动程序的方式来完成,在网上找资料的时候看到了署名楚狂人的作者写的一些技术文章,于是加了好友,但一直没怎么交流,这事儿过去好几年了,这书出来了.我还是站在书店很认真地翻了一回,感受如下: 首先,选题还...
1. 调试代码的时候,经常看到一大串的这个: 烫烫烫烫烫烫烫烫烫烫烫烫? 什么意思?这一大串的十六进制就是0xCCCCCCCCCC,是windows的int 3调试中断,在Debug时,Windows将局部内存初始化为int 3命令,这样发生非法调用时就会进入中断。 2. 调试内核 windbg+Vmware
从貌似天书的汇编代码中,一探Windows底层的核心实现。. 在开发中出现的问题,能从Windows自身找到答案!... 本书从基本的Windows程序与汇编指令出发,深入浅出地讲解了Windows内核的编程、调试、阅读,以及自行探索的方法。读者在使用C/C++ 开发Windows程序的基础上,将熟练掌...
本书作者在我的网友列表里好几年了,缘起是有朋友找我做文档安全系统,以驱动程序的方式来完成,在网上找资料的时候看到了署名楚狂人的作者写的一些技术文章,于是加了好友,但一直没怎么交流,这事儿过去好几年了,这书出来了.我还是站在书店很认真地翻了一回,感受如下: 首先,选题还...
本书作者在我的网友列表里好几年了,缘起是有朋友找我做文档安全系统,以驱动程序的方式来完成,在网上找资料的时候看到了署名楚狂人的作者写的一些技术文章,于是加了好友,但一直没怎么交流,这事儿过去好几年了,这书出来了.我还是站在书店很认真地翻了一回,感受如下: 首先,选题还...
用户评价
拿到《天书夜读》这本书,真的像是误闯了某个隐秘的角落,被一股浓稠又迷人的气息给裹挟住了。我原本以为会看到什么古籍抄录,或是神神叨叨的奇闻轶事,但读下去才发现,它更像是一场绵延不绝的梦境,在字里行间编织出一种独属于夜晚的寂静和深邃。书中的很多片段,尤其是一些描绘自然景物的部分,那种细腻到近乎残酷的描写,让我仿佛能听到风穿过树林的低语,闻到泥土在雨后散发出的湿润气息。我常常会在午夜时分,借着一盏昏黄的灯光翻开它,然后就被一种难以言喻的孤寂感所包围。这种孤寂并非令人沮丧,反而像是一种久违的回归,一种与世界喧嚣隔绝的喘息。每一次阅读,都像是在探索一个未知的宇宙,那些不成章法的叙述,那些跳跃的意象,都在我的脑海里投下巨大的阴影,又在下一刻化为点点星光。我会在阅读时反复咀嚼那些看似晦涩的词句,试图在它们背后找到某种隐秘的逻辑,或者干脆放任自己沉溺于其中,享受那种迷失的快感。它不是那种能让你在睡前轻松入眠的书,更像是会在你的梦里种下种子,然后让你在醒来后依然回味无穷,甚至会开始怀疑现实的边界。
《天书夜读》这本书,给我带来的最直接的感受,就是一种原始而野性的生命力。它没有经过过度的雕琢和修饰,就像是从大地深处直接生长出来的一株植物,带着泥土的芬芳和粗犷的枝干。我特别喜欢书中那些对自然的描绘,那种毫不保留的、近乎粗暴的震撼力,让我觉得人类的渺小和自然的宏大。它不像某些描写自然的图书那样,将自然描绘成宁静美好的避风港,反而常常展现出自然冷酷、残酷的一面,比如风暴的肆虐,比如动物之间的生存搏斗。这种原始的力量,让我觉得既恐惧又着迷。我会在阅读时,想象自己身处在那些广袤的原野,感受着风的呼啸,听着野兽的嚎叫,那种身临其境的感觉,让我暂时忘记了自己身处的现实世界。它让我重新审视人与自然的关系,不再是简单的征服者或者被征服者,而更像是一种相互依存,又充满冲突的共生体。书中的一些叙述,甚至带有一种史诗般的厚重感,仿佛在讲述一个古老文明的兴衰,让我觉得自己在和历史对话,和那些早已消失的生命进行交流。
《天书夜读》这本书,说实话,一开始让我有点无从下手。它不像市面上常见的那些条理清晰、逻辑严谨的作品,更像是一道由无数碎片拼接而成的拼图,每一块都带着自己的故事和色彩,却又难以拼凑出完整的画面。但正是这种破碎感,反而激发了我巨大的好奇心。我喜欢那种在阅读过程中不断“重新组合”的感觉,仿佛自己成为了一个侦探,在作者精心布置的迷雾中搜寻线索。书中那些人物的对话,常常是含糊不清,充满潜台词,需要我反复品味,才能窥见他们内心深处的情感波动。尤其是一些描写人物内心挣扎的段落,那种压抑、纠结,甚至有些扭曲的情绪,被刻画得淋漓尽致,让我感同身受,又觉得触目惊心。我常常会因为一段对话,或者一个眼神的描写,而陷入长久的沉思。它不是直接告诉你事情的真相,而是引导你去感受,去体会,去推断。每一次合上书本,我的脑海里都会回荡着那些未尽的话语,那些欲言又止的神情。它迫使我去思考,去审视,去面对自己内心深处那些不愿触碰的角落。我从不期待从它那里找到明确的答案,我只享受这种在未知中探索,在模糊中寻找的过程。
第一次翻阅《天书夜读》时,我被它那种截然不同的叙事方式深深吸引。它不遵循传统的线性叙事,而是像一串零散的记忆碎片,在我的脑海中跳跃组合。我喜欢这种“跳跃式”的阅读体验,它迫使我主动去寻找章节之间的联系,去构建属于自己的故事线。有时候,我会突然从一个场景跳跃到另一个看似毫不相关的场景,这种突兀感反而带来一种奇特的张力。书中的一些意象,也是非常奇特且令人难忘的,它们常常带着一种象征意义,但又并非明确指向某个固定的含义,留给我巨大的解读空间。我喜欢在阅读时,随手记下那些触动我的词语和句子,然后回去反复琢磨,试图从中挖掘出更深层的含义。它更像是一面镜子,映照出我内心深处的一些想法和感受,有时候甚至会让我看到自己都未曾察觉的另一面。这本书不提供现成的答案,而是鼓励你去提问,去思考,去创造。它就像一个迷宫,每一次深入,都会有新的发现,新的惊喜,也可能会有新的困惑。
对函数调用过程的解释非常详细
看完它看寒江,有点薄了 2011-2-3
这书应该叫底层编程。。。
虽然我只是简单了看了 补充了知识 但真是好东西
略读了一遍,作为入门很不错