勘误说明

由于个人技术水平有限,书中内容错漏在所难免。各位读者在阅读本书的过程中,若发现与自己见解不同之处,一定要坚持自己的意见,并用实践去检验。经过实践检验之后,若发现书中内容仍存在问题,请可以直接在下方直接留言反馈。

对于留言反馈的读者,本站一律予以积分奖励;同时勘误的读者,也会出现在第二版的感谢名单中。

请大家批评指正,不吝赐教

书中演示的开发环境软件下载

用户篇

本书所有的程序开发均是在VS2013上开发完成的,在正式介绍VS2013开发环境安装之前,需要到官网上下载安装文件镜像以及多字节MFC库安装文件。

vs2013.5_ult_chs.iso下载链接:

http://download.microsoft.com/download/9/3/E/93EA27FF-DB02-4822-8771-DCA0238957E9/vs2013.5_ult_chs.iso?type=ISO

vc_mbcsmfc.exe下载链接:

http://www.microsoft.com/zh-cn/download/details.aspx?id=40770

上述两个安装文件下载完毕之后,就可以进行安装了,本文演示使用的操作系统是 64 位 Windows 10。安装完上述两个软件,即可进行第一部分 “用户篇” 内容的学习和练习。

内核篇

VS2013 要进行驱动开发,必须要在上述“用户篇”环境基础上,再下载安装 WDK8.1,可以到微软驱动开发官网上进行下载:

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

注意,下载的 WDK 一定要对应自己的 VS 版本,VS2013 就下载 WDK8.1。

安装步骤,可以参考《Windows黑客编程技术详解》书中内容

本书配套源码下载

https://www.write-bug.com/article/1811.html

勘误收集

下面列举图书目前收集到的错误内容(按目录顺序排列),请读者谨慎阅读:

再次对书中出现上述错误内容而抱歉

上传的附件 cloud_download NTFS_FileLocation_Test_修改.7z ( 155.15kb, 44次下载 ) cloud_download CryptoApi_Rsa_Test_修改.7z ( 156.17kb, 18次下载 ) cloud_download ScreenCapture_Test_修改.7z ( 164.45kb, 27次下载 )
你的回答被采纳后将获得: 100点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : qt+Mysql 发布 无法连接数据库的问题 可以问一下站内那个基于Java的办公自动化系统怎么导入与运行吗 : 下一篇keyboard_arrow_right

2个回答

Barefoot
2018-12-31 18:08:23

书中 389 页,明明给的是 classifyFn 函数的代码,却在文中写的是 “notifyFn函数的实现代码” !!!

demon-x
2019-01-03 11:20:31

书中内核篇 “18.2 过PatchGuard的进程隐藏” 这一章节介绍的技术,使用 MiProcessLoaderEntry 函数断链的方式,经过跑代码实践验证,该蓝屏的还是会蓝屏,错误代码是0x109,所以并没有过PG!!!

看雪上有大佬已经指出来了,我只是帮忙搬运到这里勘误!!!

https://bbs.pediy.com/thread-248775.htm

精彩评论

  • 可以问一下站内那个基于Java的办公自动化系统怎么导入与运行吗
    你是用什么软件开发Java程序?我学生用的是eclipse软件如果你是用eclipse的话:1.file中找到import(鼠标右键也可以找到)2.点击Existing Project into Workspace3.在select root directory右边点击Browse4.查找需要导入的工程文件就行了
    2020-03-09 13:30:36 thumb_up( 3 )
  • [算法问题] 谁逃课了
    哈哈,一开始还以为是吐槽帖,没想是问问题啊。。。顺便解答下你的问题吧。 bA, bB, bC, bD, bE 来表示A、B、C、D、E,true表示逃课,false表示不逃课,原理比较简单,就是暴力枚举 bA, bB, bC, bD, bE,然后判断是否满足给出的 5 个条件,代码如下所示: bool judge(bool bA, bool bB, bool bC, bool bD, bool bE){ bool bRet = false; do { // (1)如果A逃课,B也一定逃课 if (true == bA) { if (true == bB) { // 条件(1)成立 } else { // 条件(1)不成立 break; } } // (2)B和C中有且只有一个人参与逃课 if (true == (bB || bC) && false == (bB && bC)) { // 条件(2)成立 } else { // 条件(2)不成立 break; } // (3)C和D要么都逃,要么都不逃 if (true == bC) { if (true == bD) { // 条件(3)成立 } else { // 条件(3)不成立 break; } } else { if (false == bD) { // 条件(3)成立 } else { // 条件(3)不成立 break; } } // (4)D和E至少有一个人逃了 if (true == (bD || bE)) { // 条件(4)成立 } else { // 条件(4)不成立 break; } // (5)如果E逃课,则A和D一定参与逃课 if (true == bE) { if ((true == bA) && (true == bD)) { // 条件(5)成立 } else { // 条件(5)不成立 break; } } // 所有条件都满足 bRet = true; } while (false); return bRet;}int _tmain(int argc, _TCHAR* argv[]){ int a = 0, b = 0, c = 0, d = 0, e = 0; bool bA = false, bB = false, bC = false, bD = false, bE = false; for (a = 0; a < 2; a++) { for (b = 0; b < 2; b++) { for (c = 0; c < 2; c++) { for (d = 0; d < 2; d++) { for (e = 0; e < 2; e++) { bA = (bool)a; bB = (bool)b; bC = (bool)c; bD = (bool)d; bE = (bool)e; // 判断 if (true == judge(bA, bB, bC, bD, bE)) { if (true == bA) { printf("A"); } if (true == bB) { printf("B"); } if (true == bC) { printf("C"); } if (true == bD) { printf("D"); } if (true == bE) { printf("E"); } printf("\n"); } } } } } } return 0;} 运行程序,结果显示:CD,则表示C和D逃课满足上述5个条件~~~
    2020-07-12 12:15:34 thumb_up( 1 )
  • 你购买"WRITE-BUG技术共享平台"推出的永久VIP了吗
    买了,支持大大,并且,100块100年,一年才1块钱,就相当于不要钱呀!!!
    2018-11-12 13:31:28 thumb_up( 7 )
  • 说说最近的感想吧(最佳答案不止一个)
    最近一直在学JAVA,有不懂的可以交流
    2020-06-28 23:56:25 thumb_up( 1 )
  • 用c对无向图领接表的存盘,读盘并输出邻接表
    这是数据结构中图的知识点吧,一言难尽啊!自己也忘得差不多了,定义出无向图的数据结构(点数、边数、点和边),用链表结构来存储邻接表?最后实现图的遍历。。
    2020-06-30 12:56:29 thumb_up( 2 )
  • 想学游戏开发,应该直接学习游戏引擎还是从游戏引擎原理学起呢?
    从事3年的游戏客户端开发,我的建议是直接学习现成的游戏引擎。理由1、容易出作品能增加自己的积极性2、方便之后出来找工作3、并不会妨碍到自己学习游戏原理,问题是你是否多思考,(当你使用引擎的某个功能并带有好奇的时候,你会发现网上很多人都有相同的疑问,很多大神都会贴出自己完整的思路)4、可能做游戏会和你想象中的不太一样,直接上手用引擎就是在做游戏,如果发现不合适,也可以尽早退出
    2019-03-24 18:12:39 thumb_up( 4 )
eject