分享

UndocumentedWindowsNT中文资源

 山峰云绕 2023-10-19 发布于贵州

https://download.csdn.net/download/foru111111/232026?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~BlogCommendFromBaidu~Rate-20-232026-download-10589621.257%5Ev14%5Epc_dl_relevant_base1_b&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~BlogCommendFromBaidu~Rate-20-232026-download-10589621.257%5Ev14%5Epc_dl_relevant_base1_b&spm=1003.2020.3001.6616.20

(皆是系统核心奥妙之所在特辟一章专讲反向工程之技巧微软符号文件建立一个调试环境)

书中涉及处皆是系统核心奥妙之所在,常人皆对此望而却步。内存操作、各类钩挂、系统服务、软件中断等等系统黑客必掌握之绝技,此书皆有论述,且其内容之深入、之实际以往经典中也难得一见。然内容虽深数却不难懂,作者论述深入浅出,稍有难点便细致讲解,更有数处令吾甚感罗嗦,其讲解之到位,可见一斑。更可贵之处在于,此书不仅受人以鱼,更受人以渔。特辟一章专讲反向工程之技巧,其意在鼓励人从此可自立门户,自行探索系统之奥秘。师父领进门,修行在个人,此言不差。有宝典在手,日日勤读善思,不愁大功不成。












Kendiv 第 1 页 2005-5-27

第一章 Windows 2000 对调试技术的支持
To all the people in the world who never stopped asking “Why”
尽管本书中的很多内容都称之为“Undocumented”,但其中的一些内容只能通过挖掘操
作系统的代码才能获取。Windows 2000 DDK(Device Driver Kit)提供了一个强大的调试器
可以出色的完成这方面的工作。本章将从建立一个完善的调试环境开始介绍。在阅读随后的
章节时,你会经常的使用内核调试器来挖掘操作系统内部的各种特性。如果你对内核调试器
很是厌烦,或许你需要制作一个自己的调试工具了。因此,本章还将介绍有关Windows 2000
调试接口的文档化和未文档化的资料,这包括微软符号文件(Symbol File)的详细信息。本
章的特色是提供了两个示例库和用于列出进程、进程和系统模块,以及隐藏在Windows 2000
符号文件中的各种符号信息的示例程序。
作为一个特殊的收获,在本章结束时,你将得到
首份有关PDB(Microsoft Program Database)的公开文档。
建立调试环境
“嗨,我不想调试Windows 2000程序。在此之前,我想自己写一个先!”当你读到
这个标题时你可能会这样大喊出来。“很对!”我说“这就是你该去做的!”但是为什
么你要以建立一个调试环境开始这次旅行呢?答案很简单:调试器是进入系统的后门。
当然,这并不是调试器开发人员的主要目的。然而,当你跟踪代码的执行过程或者你的
程序意外的玩完时,任何优秀的调试器都须能够告诉你一些有用的系统信息。仅仅报告
一个指向4GB地址空间某处的8位崩溃地址,然后让你独自一人去寻找到底发生了什么,
真是无法让人接受。调试器至少应该告诉你最后执行的引发错误的代码是哪个模块中的
代码,而且,在理想情况下,它还应该告诉你让你的程序玩完的那个函数的名称。因此,
调试器通常必须知道比编程手册还要多的系统信息,你可以利用这些信息来研究系统的
内部情况。
Windows 2000提供了两个调试器:WinDbg.exe(发音很像“WindBag”,译注:
WindBag在俚语中指空话连篇的人)一 个 Win32 GUI程序和i386kd.exe一个提供与之等价
功能的命令行模式程序。我曾经同时使用过这两个程序,最后确定i386kd.exe是最好的
一个,因为它有一组非常强大的选项。不过,最近看来WinDbg.exe似乎有所改进。不过,
本书中的所有例子都是与i386kd.exe相关的。就像你猜想的那样,i386前缀表示目标平台
(Intel 386处理器家族,也包括Pentium)kd是Kernel Debugger(内核调试器)的缩写。
Windows 2000内核调试器是一个非常强大的工具。比如,他知道如何使用Windows 2000
安装光盘中的符号文件(Symbol files),因此,可以给出系统内存中几乎任何地址的相
关符号信息(这非常有价值)。而且,它还可以反编译二进制代码、将内存信息的16进
制转储数据以多种格式显示,甚至还能显示一些内核关键结构的布局。在调试器的在线
帮助中有其命令行接口的详细文档。
准备一次崩溃转储(Crash Dump)
这些都是好消息。坏消息是你在内核调试器顺从你之前,必须做一些准备工作。第
一个障碍是调试通常涉及两台独立的计算机(通过线路连接在一起),其中一台运行调
试器,另一台用于被调试。然而,如果并不需要实时调试,那么有一个简单的方法,可
以不需要第二台机器。例如,如果一个有错误的程序抛出了一个未处理的异常而引发了
第 1 页 共 398 页

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多