您的浏览历史

天书夜读:从汇编语言到Windows内核编程(china-pub首发)(09年度畅销榜TOP50)(08年度畅销榜TOP50)

  • 定价 : ¥45.00
  • 会员价 : ¥33.75(75折)

基本信息

编辑推荐

从貌似天书的汇编代码中,一探Windows底层的核心实现。.
在开发中出现的问题,能从Windows自身找到答案!...

推荐阅读

内容简介回到顶部↑

本书从基本的Windows程序与汇编指令出发,深入浅出地讲解了Windows内核的编程、调试、阅读,以及自行探索的方法。读者在使用C/C++开发Windows程序的基础上,将熟练掌握汇编和C语言的应用,深入了解Windows底层,并掌握阅读Windows内核的基本方法,以及Windows内核的基本编程方法。
本书适合使用C/C++在Windows上编程的读者,尤其适合希望加深自己技术功底的Windows应用程序员、计算机专业的有志于软件开发的大中院校学生;专业的Windows内核程序员,亦可从本书得到超越一般内核程序开发的启发。

作译者回到顶部↑

本书提供作译者介绍

谭文:从2002年到2008年,从事信息安全类软件的Windows内核驱动的开发工作。从2008年开始参与一个主要涉及不同架构之间二进制指令的实时翻译技术的项目的开发。业余时间在驱动开发音(www.driverdevelop.com)以楚狂人为笔名发表了许多技术文章。
.. << 查看详细

作者: 谭文
谭文:从2002年到2008年,从事信息安全类软件的Windows内核驱动的开发工作。从2008年开始参与一个主要涉及不同架构之间二进制指令的实时翻译技术的项目的开发。业余时间在驱动开发网(www.drverdevelop.com)以楚狂人为笔名发表了许多技术文章。.. << 查看详细

[同作者作品]
天书夜读:从汇编语言到Windows内核编程(china-pub首发)(09年度畅销榜TOP50)(08年度畅销榜TOP50)

作者: 邵坚磊
邵坚磊:长期致力于x86体系架构与Windows系统底层技术的研究与相关商业软件的开发。目前在从事一个企业信息防泄密软件的Windows内核驱动的开发工作。是著名的反rootkit工具DarkSpy的作者之一。网名wowocock。..... << 查看详细

[同作者作品]
天书夜读:从汇编语言到Windows内核编程(china-pub首发)(09年度畅销榜TOP50)(08年度畅销榜TOP50)

目录回到顶部↑

入手篇 熟悉汇编
 第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语言的共用体和枚举类型

前言回到顶部↑

Windows是庞大复杂的系统。由于Windows并不公开源代码,我们在调试程序的时候,往往就调到自己未知的领域去了。没有C代码,只能看到令人眼花缭乱的汇编指令和机器码。我曾对它们望而生畏,敬而远之。尤其在这个黑客、破解、病毒、木马横行的时代,如果作为安全软件的开发者,同样不能期盼病毒的作者提供可以阅读的高级语言代码。.
如果那些东西,也和C语言一样亲切易懂,那多么好啊!这样的话,即便是Windows这样庞大复杂而且封闭的系统,或者是再诡异和隐蔽的破坏技术,至少只要我愿意去探索,对我来说就不再有秘密可言。
其实这个梦想并非不切实际。既然我们能读懂C代码,何以就不能读懂汇编呢?很多高手眼中,机器指令和C代码一样熟悉。
这本书并没有系统地介绍Windows系统底层。但是我尝试寻找正确的方法和手段,为读者打开Windows底层知识宝库的大门,使读者可以在其中自由阅读,自己去获取所需知识。
本书强调汇编语言的应用。虽然没有像指令手册那样罗列所有指令的细节,但是让读者在实践中熟悉实用的汇编指令。我一般把汇编语言用于调试和理解程序,在写代码时应用较少。但是汇编是了解没有代码的二进制代码的基础。
这里着重于Windows内核编程,包括WDK、WinDbg的使用,但是Windows内核开发体系庞大复杂,这方面已经有很多的经典书籍可以阅读。在这里我只提到了简单、实用和必要的部分。..
对于安全软件的开发者,尤其是有兴趣在Windows系统下开发反病毒软件的内核驱动读者,会学到基础的研究方法。
由于这一切都从阅读和理解机器指令出发,所以名为“天书夜读”。
“天书夜读”是通向软件底层技术的一个大门与捷径。这里涉及的每个方面的技术,无论是CPU底层架构与机器指令、汇编语言、Windows内核编程、软件逆向工程还是软件调试,无一不是入门艰难的技术,许多技术者在开始时就被汗牛充栋的庞杂资料吓倒。用一条简洁明确的线,把它们串联起来,使读者可以从最基础入门,循序渐进地接触到高深的技术,并应用于实际。避免一开始就面对浩瀚的文档资料而茫然不知如何入手,也不知如何学以致用,这就是我写这本书的目的。
本书正文的内容是从读者很可能已经遗忘的汇编语言的基础指令开始,介绍C语言与汇编指令的关系,为阅读用C语言编写的Windows内核做准备。然后开始讲解Windows内核的C语言编程的基础。让读者能熟悉使用C语言开发Windows内核程序。接着指导读者进行内核的开发和调试环境的配置,并进行了一系列的尝试:阅读Windows内核的部分实现代码,并尝试自己去实现它。与此同时,产生了修改已有内核的需求。于是接下来介绍了机器码指令和汇编语言的关系,以及能够解读机器码的反汇编引擎,并以此为基础,介绍了进行Windows内核Hook开发的方法。之后是Windows内核Hook的一个利用:我们举出了一个防止病毒木马感染的安全防毒软件的例子。在此之后,简要介绍了更深层次的病毒与安全的对抗:Rootkit与HIPS。最后是一些防止代码与技术被阅读者“偷学”的章节。
相信读者读完此书,无论是对汇编语言的掌握,还是Windows编程的技术,以及对Windows系统的了解和调试程序、查找修正故障的能力,都会得到一个飞跃式的提高。...
谭 文
2008年4月2日

书摘回到顶部↑

第10章 继续探索Windows内核
  10.1 探索Windows已有内核调用
  基础知识
下面用本书前面介绍的知识来做一些有用的事情。Windows从2000发展到XP后,XP DDK中出现了一些新的调用。内核程序开发者有时会发现,这些调用非常有用(这也是这些新调用产生的原因),但是如果使用这些调用,会导致驱动在Windows 2000下无法使用。目前Windows 2000的用户依然很多,存在这样的可移植性问题是非常遗憾的,退一步的方案是Windows 2000下限制某些功能。在程序中动态加载系统调用,并小心地判断当前的版本。在Windows 2000的情况下,一些功能被跳过。这样比前者好。但是依然不是最理想的解决方案。
有一些人开始使用未公开(Undocumented)的解决方案。未公开的解决方案的危害就是,可能不兼容未来的操作系统。但是由于现在这样做仅仅是针对一个过去版本的操作系统,问题就不复存在了。在新版本的操作系统上,调用新的系统调用,而在某个已经存在而且不会再变的操作系统版本上,调用未公开的方法。只要低版本操作系统测试无问题,以后的也不会有问题。
这里的所谓未公开的解决方案就是,在新版本的操作系统上,把新出现的功能调用进行调试,了解其实现的方法。然后在我们自己开发的内核程序中,实现同样的或者等价的功能,同时检测当前操作系统为低版本时,调用这些特殊的代码。
  下面举两个例子。
  这个调用获得设备栈底的设备,这对过滤驱动非常有用。
  ……
评论交流

共有130人开贴评论  182人参与评论  109人参与打分 查看

64人
 58%
用户平均打分
我要写评论 help如何参与评论和打分
28人
 25%
5人
 4%
5人
 4%
7人
 6%

llw02

三级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-1-21 10:18:00
刚拿到书,小看了一下,挺不错的
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
评价等级:  
发表于:2008-11-14 7:25:00
关于“你能得到Windows内核代码?真的是天书.... 骗钱的 ”的回复:
“Windows内核编程”是指在Windows内核中进行的编程,也就是说你开发的模块运行在R0级,是Windows内核的一部分。而不是从头开发Windows的整个内核。所以和我本人是否能得到Windows内核的代码没有关系。但是,依然有以下的方法可以得到Windows内核的部分代码的相关知识:
1.微软提供的WRK,是一套Windows内核的一部分的学习代码。和正式发行的Windows的真实代码有删减,但是学习者已经可以从中学到很多。
2.网上有泄露的WindowsNT几乎完整的代码和Windows2000的部分代码下载。
3.MS提供了符号表。因此只要使用调试器,就从汇编语言直接理解其内部实现。(本书主要讲解的就是这部分知识)。
回复 ( 3条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得4支)  扔鸡蛋 (得0个)

volvet

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-10-27 9:47:00
鼓励原创图书
以易读的方式 介绍汇编和windows内核。 还不错吧。
内容浅了些 不过应该适合初入门的读者
对于编程有经验但不熟悉内核的人 也可以看看的 所谓开卷有益。

您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

vxer
一级评论员
评价等级:  
发表于:2008-12-14 23:43:00
本书推荐给初学者阅读。从中学习简易的反汇编知识。
对于已有一段时间学习汇编语言或者编译相关的,本书可看可不看
关于微软操作系统的 更可以忽略。
微软的东西都是包装过的东西,没有必要学习别人的函数用法。也没有必要用别人的函数而津津乐道。网上整天微软未公开的函数之类的,一个函数也值得高兴成这样?
回复 ( 9条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得6支)  扔鸡蛋 (得9个)

kongruojun
一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-7-5 14:59:00
这本书很早之前就读过1-3章.就是因为看了这三章,我不在畏惧汇编代码了.后面因该是4-8章吧,也很不错,讲驱动编写,这几章的内容在查查资料,足够你用来写个SSDT HOOK之类的驱动了,在之后的也没细看.我想应该还不错,比起同作者的另一本<寒江独钓>来说,此书我看过的这前八章才是真正的内核编程入门.
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共130条)