﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Tiany 's Blog</title><link>http://www.cppblog.com/tiany/</link><description>奋斗的路上肯定会遇到很多困难 该不该继续？</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:08:35 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:08:35 GMT</pubDate><ttl>60</ttl><item><title>从看雪的一个沙箱代码中扣出的InlineHook代码</title><link>http://www.cppblog.com/tiany/archive/2013/03/26/198824.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Mon, 25 Mar 2013 16:20:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2013/03/26/198824.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/198824.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2013/03/26/198824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/198824.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/198824.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Inlin_Hook.h：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#pragma&nbsp;once&nbsp;&nbsp;#define&nbsp;__malloc(_s)&nbsp;&nbsp;&nbsp;&nbsp;VirtualAl...&nbsp;&nbsp;<a href='http://www.cppblog.com/tiany/archive/2013/03/26/198824.html'>阅读全文</a><img src ="http://www.cppblog.com/tiany/aggbug/198824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2013-03-26 00:20 <a href="http://www.cppblog.com/tiany/archive/2013/03/26/198824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WinDBG命令概览(中) - 元命令</title><link>http://www.cppblog.com/tiany/archive/2013/03/24/198772.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Sun, 24 Mar 2013 08:10:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2013/03/24/198772.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/198772.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2013/03/24/198772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/198772.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/198772.html</trackback:ping><description><![CDATA[<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px auto; font: 14px/25px Verdana, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">元命令(Meta-Command)用来提供标准命令没有提供的常用调试功能, 与标准命令一样, 元命令也是内建在调试器引擎或者WinDBG程序文件中的. 所有元命令都已一个点(.)开始, 所以元命令也被称为点命令(Dot Command).</p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px auto; font: 14px/25px Verdana, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px auto; font: 14px/25px Verdana, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">按照功能, 可以把元命令分成如下几类.</p>
<ul style="widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: disc; text-indent: 0px; font: 14px/25px Verdana, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); margin-left: 45px; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><li>显示和设置调试会话和调试器选项.</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>用于符号选项的<strong>.symopt</strong>- Set Symbol Options</li><li>用于符号路径的.<strong>sympath</strong>- Set Symbol Path, 和<strong>.symfix</strong>- Set Symbol Store Path.</li><li>用于程序源文件的<strong>.srcpath</strong>- Set Source Path,<span class="Apple-converted-space">&nbsp;</span><strong>.srcnoisy</strong>- Noisy Source Loading,<span class="Apple-converted-space">&nbsp;</span><strong>.srcfix</strong>- Use Source Server</li><li>用于扩展命令模块路径的<strong>.extpath</strong>- Set Extension Path</li><li>用于匹配扩展命令的<strong>.extmatch</strong>- Display All Matching Extensions</li><li>用于可执行文件的<strong>.exepath</strong>- Set Executable Path</li><li>设置反汇编选项的<strong>.asm</strong>- Change Disassembly Options</li><li>控制表达式评估器的<strong>.expr</strong>- Choose Expression Evaluator</li></ul></li><li>控制调试会话或者调试目标.</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>重新开始调试会话的<strong>.restart</strong>- Restart Kernel Connection(Kernel Mode) 或 Restart Target Application(User Mode)</li><li>放弃用户态调试目标(进程)的<strong>.abandon</strong>- Abandon Process</li><li>创建新进程的<strong>.create</strong>- Create Process</li><li>附加到存在进程的<strong>.attach</strong>- Attach to Process</li><li>打开转储文件的<strong>.opendump</strong>- Open Dump File</li><li>分离调试目标的<strong>.detach</strong>- Detach from Process</li><li>用于杀掉进程的<strong>.kill</strong>- Kill Process</li></ul></li><li>管理扩展命令模块</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>加载模块的<strong>.load</strong>- Load Extension DLL</li><li>卸载模块<strong>.unload</strong>- Unload Extension DLL和<strong>.unloadall</strong>- Unload All Extension DLLs</li><li>显示已加载模块的<strong>.chain</strong>- List Debugger Extensions</li></ul></li><li>管理调试器日志文件</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>显示信息<span class="Apple-converted-space">&nbsp;</span><strong>.logfile</strong>- Display Log File Status</li><li>打开<span class="Apple-converted-space">&nbsp;</span><strong>.logopen</strong>- Open Log File</li><li>追加<span class="Apple-converted-space">&nbsp;</span><strong>.logappend</strong>- Append Log File</li><li>关闭<span class="Apple-converted-space">&nbsp;</span><strong>.logclose</strong>- Close Log File</li></ul></li><li>远程调试</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>用于启动remote.exe服务的<strong>.remote</strong>- Create Remote.exe Server</li><li>用于启动调试引擎服务器的<strong>.server</strong>- Create Debugging Server</li><li>列出可用服务器的<strong>.servers</strong>- List Debugging Servers</li><li>用于向远程服务器发送文件的<strong>.send_file</strong>- Send File</li><li>用于结束远程进程服务器的<strong>.endpsrv</strong>- End Process Server</li><li>用于结束引擎服务器的<strong>.endsrv</strong>- End Debugging Server</li></ul></li><li>控制调试器</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>让调试器睡眠一段时间的<strong>.sleep</strong>- Pause Debugger</li><li>唤醒处于睡眠状态的调试器的<strong>.wake</strong>- Wake Debugger</li><li>启动另一个调试器来调试当前调试器的<strong>.dbgdbg</strong>- Debug Current Debugger</li></ul></li><li>编写命令程序</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>包括一系列类似C语言关键字的命令, 如</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>.if, .else, .elsif, .foreach, .do, .while. .continue, .catch, .break, .continue, .leave, .printf, .block. 在&lt;软件调试&gt;一书第30章的第18节有介绍命令程序的编写方法.</li></ul></ul></li><li>显示或者转储调试目标数据</li>
<ul style="list-style-type: disc; margin-left: 45px"><li>产生转储文件的<strong>.dump</strong>- Create Dump File</li><li>将原始内存数据写到文件的<strong>.writemem</strong>- Write Memory to File</li><li>显示调试会话时间的<strong>.time</strong>- Display System Time</li><li>显示线程时间的<strong>.ttime</strong>- Display Thread Times</li><li>显示任务列表的<strong>.tlist</strong>- List Process IDs</li><li>以不同格式显示数字的<strong>.formats</strong>- Show Number Formats</li><li>可以列出所有元命令和每个命令的简单说明的<strong>.help</strong>- Meta-Command Help</li></ul></ul><img src ="http://www.cppblog.com/tiany/aggbug/198772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2013-03-24 16:10 <a href="http://www.cppblog.com/tiany/archive/2013/03/24/198772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WinDBG命令概览(上) - 标准命令</title><link>http://www.cppblog.com/tiany/archive/2013/03/24/198770.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Sun, 24 Mar 2013 08:01:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2013/03/24/198770.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/198770.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2013/03/24/198770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/198770.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/198770.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WinDBG的大多数功能是以命令方式工作的, 本系列将介绍WinDBG的三类命令, 标准命令, 元命令和扩展命令.&nbsp;标准命令===============标准命令用来提供适用于所有调试目标的基本调试功能.所有基本命令都是实现在WinDBG内部的, 执行这些命令时不需要加载任何扩展模块. 大多数标准命令是一两个字符或者符号, 只有version等少数命令除外. 标准命令...&nbsp;&nbsp;<a href='http://www.cppblog.com/tiany/archive/2013/03/24/198770.html'>阅读全文</a><img src ="http://www.cppblog.com/tiany/aggbug/198770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2013-03-24 16:01 <a href="http://www.cppblog.com/tiany/archive/2013/03/24/198770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS2008编译驱动环境配置</title><link>http://www.cppblog.com/tiany/archive/2013/03/23/198753.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Sat, 23 Mar 2013 12:20:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2013/03/23/198753.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/198753.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2013/03/23/198753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/198753.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/198753.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">新建一个空的</span><span style="font-family: 'Times New Roman'">win32</span><span style="font-family: 宋体">控制台程序</span></span> 
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'"><span>&nbsp;</span>1</span></span><span style="font-family: 宋体">、选（文件&#8594;新建&#8594;项目&#8594;</span><span style="font-family: 'Times New Roman'">Visual&nbsp;C++</span><span style="font-family: 宋体">项目&#8594;</span><span style="font-family: 'Times New Roman'">win32</span><span style="font-family: 宋体">&#8594;</span><span style="font-family: 'Times New Roman'">win32</span><span style="font-family: 宋体">控制台项目）创建一个</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">填写上名称</span><span style="font-family: 'Times New Roman'">event</span><span style="font-family: 宋体">然后按确定</span><span><br /></span><span style="font-family: 宋体">在弹出的</span><span style="font-family: 'Times New Roman'">win32</span><span style="font-family: 宋体">应用程序向导里</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-family: 宋体">选应用程序设置</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-family: 宋体">&#8594;附加选项</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-family: 宋体">勾选空项目&#8594;完成。</span><span><br /></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span>&nbsp;</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">二</span><span><span style="font-family: 'Times New Roman'">&nbsp;、&nbsp;&nbsp;</span></span><span style="font-family: 宋体">选项目菜单&#8594;添加现有项&#8594;添加所有驱动相关的</span><span style="font-family: 'Times New Roman'">*.h,*.c,*.cpp,*.rc</span><span style="font-family: 宋体">之类的文件。</span></p><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">选工具</span><span style="font-family: 'Times New Roman'">(T)</span><span style="font-family: 宋体">&#8594;选项</span><span style="font-family: 'Times New Roman'">(<span>O</span>)....</span><span style="font-family: 宋体">&#8594;项目&#8594;</span><span style="font-family: 'Times New Roman'">VC++</span><span style="font-family: 宋体">目录&#8594;</span></span> 
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;</span>1</span><span style="font-family: 宋体">、在<span style="color: blue">可执行文件</span>目录中添加：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: red">D:/WINDDK/3790.1830/BIN/X86<span>&nbsp;&nbsp;&nbsp;</span>//VS2003(没测),VS2005(没测),VS2008</span></span></span><span style="font-family: 宋体; color: red; font-size: 10pt">内不需要</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span>&nbsp;</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;</span>2</span><span style="font-family: 宋体">、在<span style="color: blue">包含文件</span>目录添加如下路径</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>D:/WINDDK/3790.1830/inc/wxp<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>D:/WINDDK/3790.1830/inc/crt<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>(</span></span><span style="font-family: 宋体">可选</span><span><span style="font-family: 'Times New Roman'">)<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>D:/WINDDK/3790.1830/inc/ddk/wxp<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>D:/WINDDK/3790.1830/inc/ddk/wdm/wxp</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span>&nbsp;</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;</span>3</span><span style="font-family: 宋体">、在<span style="color: blue">库文件</span>目录中添加：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>D:/WINDDK/3790.1830/LIB/WXP/I386</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span>&nbsp;</span></p><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">项目</span><span style="font-family: 'Times New Roman'">event</span><span style="font-family: 宋体">属性设置</span><span style="font-family: 'Times New Roman'">&nbsp;</span></span> 
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span style="font-family: 宋体; color: red">新建项目配置</span></strong><strong><span style="color: red"><span style="font-family: 'Times New Roman'">check&nbsp;//</span></span></strong><strong><span style="font-family: 宋体; color: red">必选</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span style="color: red"><span style="font-family: 'Times New Roman'">(</span></span></strong><strong><span style="font-family: 宋体; color: red">一</span></strong><strong><span style="color: red"><span style="font-family: 'Times New Roman'">)C/C++</span></span></strong><strong><span style="font-family: 宋体; color: red">属性设置</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;</span></span></strong><strong><span style="font-family: 宋体">常规选项卡</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">1</span></span><span style="font-family: 宋体">调试信息格式</span><span style="font-family: 'Times New Roman'">(C7</span><span style="font-family: 宋体">兼容</span><span style="font-family: 'Times New Roman'">(/Z7)&nbsp;//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">2</span></span><span style="font-family: 宋体">警告等级</span><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">（</span><span style="font-family: 'Times New Roman'">2</span><span style="font-family: 宋体">级</span><span style="font-family: 'Times New Roman'">(/W2)<span>&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">3</span></span><span style="font-family: 宋体">将警告视为错误</span><span style="font-family: 'Times New Roman'">(</span><span style="font-family: 宋体">是</span><span style="font-family: 'Times New Roman'">(/wx)<span>&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;</span></span></strong><strong><span style="font-family: 宋体">优化选项卡</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">1</span></span><span style="font-family: 宋体">优化</span><span style="font-family: 'Times New Roman'">(</span><span style="font-family: 宋体">禁用</span><span style="font-family: 'Times New Roman'">/Od)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;</span></span></strong><strong><span style="font-family: 宋体">预处理器</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: blue">预处理器定义：</span><span style="color: blue"><span style="font-family: 'Times New Roman'">WIN32=100;_X86_=1;WINVER=0x501;DBG=1<span>&nbsp;&nbsp;&nbsp;</span>//</span></span><span style="font-family: 宋体; color: blue">必选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;</span></span></strong><strong><span style="font-family: 宋体">代码生成</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'"><strong><span>&nbsp;&nbsp;</span></strong><span>&nbsp;&nbsp;</span></span><span style="font-family: 宋体">启用最小重新生成：否</span><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">基本运行时检查：默认值</span><span style="font-family: 'Times New Roman'">//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">运行时库：多线程调试</span><span style="font-family: 'Times New Roman'">(/MTd)&nbsp;</span><span style="font-family: 宋体">或</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-family: 宋体">多线程</span><span style="font-family: 'Times New Roman'">(/MT)<span>&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">建议选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">缓冲区安全检查：否</span><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'"><span>&nbsp;</span>(</span></span><span style="font-family: 宋体">可避免出现</span><span style="font-family: 'Times New Roman'">LINK&nbsp;:&nbsp;error&nbsp;LNK2001:&nbsp;</span><span style="font-family: 宋体">无法解析外部符号</span><span style="font-family: 'Times New Roman'">__security_cookie)</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><strong><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;</span></span></strong><strong><span style="font-family: 宋体">高级</span></strong></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: blue">调用约定</span><span style="color: blue"><span style="font-family: 'Times New Roman'">__stdcall(/Gz)<span>&nbsp;&nbsp;&nbsp;</span>//</span></span><span style="font-family: 宋体; color: blue">必选</span></p><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><strong><span style="font-family: 宋体; color: red">链接器</span></strong></span> 
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: red"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: red">常规：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: blue">输出文件：</span><span style="color: blue"><span style="font-family: 'Times New Roman'">$(OutDir)/$(ProjectName).sys&nbsp;//</span></span><span style="font-family: 宋体; color: blue">必选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体">启用增量链接：否</span><span style="font-family: 'Times New Roman'">(/INCREMENTAL:NO)&nbsp;//</span><span style="font-family: 宋体">建议选上</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span>&nbsp;</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">忽略导入库：是</span><span style="font-family: 'Times New Roman'">//</span><span style="font-family: 宋体">可选</span><span style="font-family: 'Times New Roman'">(&nbsp;</span><span style="font-family: 宋体">设置为此值时，必须在附加库目录中加：</span><span style="font-family: 'Times New Roman'">D:/WINDDK/3790.1830/lib/wxp/i386&nbsp;</span><span style="font-family: 宋体">，这样项目就不会依赖</span><span style="font-family: 'Times New Roman'">IDE</span><span style="font-family: 宋体">环境的设置</span><span style="font-family: 'Times New Roman'">)<span>&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">否</span><span style="font-family: 'Times New Roman'">(&nbsp;</span><span style="font-family: 宋体">设置为此值时，将依赖</span><span style="font-family: 'Times New Roman'">IDE&nbsp;</span><span style="font-family: 宋体">的环境的相关设置</span><span style="font-family: 'Times New Roman'">)</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: red"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: red">输入：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">附加依赖项</span><span style="font-family: 'Times New Roman'">ntoskrnl.lib&nbsp;Hal.lib&nbsp;wdm.lib&nbsp;wdmsec.lib&nbsp;wmilib.lib&nbsp;ndis.lib&nbsp;MSVCRT.LIB&nbsp;LIBCMT.LIB&nbsp;//</span><span style="font-family: 宋体">必选其</span><span style="font-family: 'Times New Roman'">12</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">//NT</span></span><span style="font-family: 宋体">式驱动</span><span style="font-family: 'Times New Roman'">ntoskrnl.lib<span>&nbsp;&nbsp;</span>WDM</span><span style="font-family: 宋体">式驱动</span><span><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;</span>wdm.lib<br /><span>&nbsp;</span>(&nbsp;HalXXX</span></span><span style="font-family: 宋体">函数在</span><span style="font-family: 'Times New Roman'">Hal.lib</span><span style="font-family: 宋体">，</span><span style="font-family: 'Times New Roman'">WmiXXX</span><span style="font-family: 宋体">函数在</span><span style="font-family: 'Times New Roman'">wmilib.lib&nbsp;</span><span style="font-family: 宋体">，</span><span style="font-family: 'Times New Roman'">NdisXXX</span><span style="font-family: 宋体">函数在</span><span><span style="font-family: 'Times New Roman'">ndis.lib&nbsp;)<br /><span>&nbsp;</span>(&nbsp;</span></span><span style="font-family: 宋体">必要时需要增加微软的标准库</span><span style="font-family: 'Times New Roman'">MSVCRT.LIB&nbsp;MSVCRTD.LIB(</span><span style="font-family: 宋体">调试库</span><span style="font-family: 'Times New Roman'">)&nbsp;LIBCMT.LIBIBCMTD.LIB(</span><span style="font-family: 宋体">调试库</span><span><span style="font-family: 'Times New Roman'">)&nbsp;)<br /><span>&nbsp;</span>(&nbsp;</span></span><span style="font-family: 宋体">如果源码中有</span><span style="font-family: 'Times New Roman'">source&nbsp;</span><span style="font-family: 宋体">文件，那么该文件的</span><span style="font-family: 'Times New Roman'">TARGETLIBS&nbsp;</span><span style="font-family: 宋体">字段会列出该项目需要的库</span><span style="font-family: 'Times New Roman'">)</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">忽略所有默认库：是</span><span style="font-family: 'Times New Roman'">(/NODEFAULTLIB)</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: red"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: red">清单文件：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: blue">启用用户账户控制（</span><span style="color: blue"><span style="font-family: 'Times New Roman'">UAC</span></span><span style="font-family: 宋体; color: blue">）</span><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: blue">否</span><span style="color: blue"><span style="font-family: 'Times New Roman'">//</span></span><span style="font-family: 宋体; color: blue">必选</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-family: 宋体">不然会出现</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&gt;LINK&nbsp;:&nbsp;fatal&nbsp;error&nbsp;LNK1295:&nbsp;&#8220;/MANIFESTUAC&#8221;</span></span><span style="font-family: 宋体; font-size: 9pt">与</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&#8220;/DRIVER&#8221;</span></span><span style="font-family: 宋体; font-size: 9pt">规范不兼容；链接时不使用</span><span style="font-family: 'Times New Roman'"><span style="font-size: 9pt">&#8220;/MANIFESTUAC&#8221;</span><span>&nbsp;</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: red"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: red">调试：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">生成调试信息</span><span style="font-family: 'Times New Roman'">&nbsp;</span><span style="font-family: 宋体">是</span><span style="font-family: 'Times New Roman'">(/DEBUG)&nbsp;//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">生成映像文件：是</span><span style="font-family: 'Times New Roman'">(/MAP)<span>&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">映像文件名：</span><span style="font-family: 'Times New Roman'">$(TargetDir)$(TargetName).map&nbsp;//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: red"><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: red">系统</span><span style="color: red"><span style="font-family: 'Times New Roman'">(System)</span></span><span style="font-family: 宋体; color: red">：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: blue">子系统</span><span style="color: blue"><span style="font-family: 'Times New Roman'">:</span></span><span style="font-family: 宋体; color: blue">控制台</span><span style="color: blue"><span style="font-family: 'Times New Roman'">(/SUBSYSTEM:CONSOLE)&nbsp;//</span></span><span style="font-family: 宋体; color: blue">必选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">堆栈保留大小：</span><span style="font-family: 'Times New Roman'">4194304&nbsp;//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">堆栈提交大小：</span><span style="font-family: 'Times New Roman'">4096<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: blue">驱动程序</span><span style="color: blue"><span style="font-family: 'Times New Roman'">:<span>&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-family: 宋体; color: blue">驱动程序</span><span style="color: blue"><span style="font-family: 'Times New Roman'">(/DRIVER)&nbsp;//</span></span><span style="font-family: 宋体; color: blue">必选</span><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'"><span>&nbsp;</span><span style="color: red"><span>&nbsp;&nbsp;&nbsp;</span></span></span></span><span style="font-family: 宋体; color: red">高级：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; color: blue">入口点：</span><span style="color: blue"><span style="font-family: 'Times New Roman'">DriverEntry<span>&nbsp;&nbsp;&nbsp;</span>//</span></span><span style="font-family: 宋体; color: blue">必选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; color: blue">随机基址</span><span style="color: blue"><span style="font-family: 'Times New Roman'">:</span></span><span style="font-family: 宋体; color: blue">默认值</span><span style="color: blue"><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>//</span></span><span style="font-family: 宋体; color: blue">必选</span><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; color: blue">不然会出现</span><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">1&gt;G:/event2008/check/event2008.exe&nbsp;:&nbsp;fatal&nbsp;error&nbsp;LNK1295:&nbsp;&#8220;/DYNAMICBASE&#8221;</span></span><span style="font-family: 宋体; font-size: 9pt">与</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&#8220;/DRIVER&#8221;</span></span><span style="font-family: 宋体; font-size: 9pt">规范不兼容；链接时不使用</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&#8220;/DYNAMICBASE&#8221;</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; color: blue; font-size: 9pt">数据执行保护</span><span style="color: blue; font-size: 9pt"><span style="font-family: 'Times New Roman'">(DEP):&nbsp;</span></span><span style="font-family: 宋体; color: blue; font-size: 9pt">默认值</span><span style="color: blue; font-size: 9pt"><span style="font-family: 'Times New Roman'">//</span></span><span style="font-family: 宋体; color: blue; font-size: 9pt">必选</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&nbsp;</span></span><span style="font-family: 宋体; font-size: 9pt">不然会出现</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">G:/event2008/check/event2008.sys&nbsp;:&nbsp;fatal&nbsp;error&nbsp;LNK1295:&nbsp;&#8220;/NXCOMPAT:NO&#8221;</span></span><span style="font-family: 宋体; font-size: 9pt">与</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&#8220;/DRIVER&#8221;</span></span><span style="font-family: 宋体; font-size: 9pt">规范不兼容；链接时不使用</span><span style="font-size: 9pt"><span style="font-family: 'Times New Roman'">&#8220;/NXCOMPAT:NO&#8221;</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span>&nbsp;</span></span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">设置效应和：是</span><span style="font-family: 'Times New Roman'">(/RELEASE)&nbsp;//</span><span style="font-family: 宋体">可选</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; color: blue">基址：</span><span style="color: blue"><span style="font-family: 'Times New Roman'">0x10000<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>//</span></span><span style="font-family: 宋体; color: blue">建议选上</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: red"><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: red">命令行</span><span style="color: red"><span style="font-family: 'Times New Roman'">&#8221;-&gt;</span></span><span style="font-family: 宋体; color: red">附加选项：</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="color: blue"><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体; color: blue">添加开关：</span><span style="color: blue"><span style="font-family: 'Times New Roman'">/SECTION:INIT,D&nbsp;/IGNORE:4078&nbsp;//</span></span><span style="font-family: 宋体; color: blue">建议填上</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">可以避免以下错误提示</span><span><br /><span style="font-family: 'Times New Roman'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>LINK&nbsp;:&nbsp;warning&nbsp;LNK4078:&nbsp;</span></span><span style="font-family: 宋体">找到多个</span><span style="font-family: 'Times New Roman'">&#8220;INIT&#8221;</span><span style="font-family: 宋体">节，它们具有不同的属性</span><span><span style="font-family: 'Times New Roman'">(E2000020)<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>LINK&nbsp;:&nbsp;error&nbsp;LNK2001:&nbsp;</span></span><span style="font-family: 宋体">无法解析的外部符号</span><span style="font-family: 'Times New Roman'">__load_config_used</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">五．编译，链接。</span></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; font: 14px/21px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体">一些要修改</span><span style="font-family: 'Times New Roman'">DDK</span><span style="font-family: 宋体">例子源码方能成功的问题，目前不知道什么选项可以不改：</span><span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">源码中的关键字</span><span style="font-family: 'Times New Roman'">try&nbsp;</span><span style="font-family: 宋体">要改为</span><span style="font-family: 'Times New Roman'">__try&nbsp;,&nbsp;except&nbsp;</span><span style="font-family: 宋体">要改为</span><span style="font-family: 'Times New Roman'">__except&nbsp;.</span></p><img src ="http://www.cppblog.com/tiany/aggbug/198753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2013-03-23 20:20 <a href="http://www.cppblog.com/tiany/archive/2013/03/23/198753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学破解 &lt;三&gt; PE格式之 区块表与区块 </title><link>http://www.cppblog.com/tiany/archive/2012/04/11/170920.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Wed, 11 Apr 2012 07:31:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2012/04/11/170920.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/170920.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2012/04/11/170920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/170920.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/170920.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">_______________________________<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;IMAGE_DOS_HEADER　　　　　</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;Dos部首<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;PE,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">　　　　　　　　&nbsp;&nbsp;　</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;PE文件标志<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;IMAGE_FILE_HEADER　　　　&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;映像文件头<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;IMAGE_OPTIONAL_HEADER32　&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;映像可选头<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;Section&nbsp;Table　　　　　　&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;节表<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;.text　　　　　　　　　　&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;代码区段<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;.data　　　　　　　　　　&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;数据区段<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;.idata　　　　　　　　　　</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;输入表<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;.edata　　　　　　　　　　</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;输出表<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　&nbsp;.reloc　　　　　　　　　　</span><span style="color: #000000">|</span><span style="color: #000000">　　　&nbsp;</span><span style="color: #000000">&lt;--</span><span style="color: #000000">&nbsp;重定位表区段<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　　<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />.　　　　　　　　　　&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">|</span><span style="color: #000000">　　调试信息　　　　　　&nbsp;　　</span><span style="color: #000000">|</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　</span><span style="color: #000000">-------------------------------</span></div><br />
<p>根据这个结构表IMAGE_OPTIONAL_HEADER下面紧接着就是区块表和各种区块，也可以叫做节表和节英文是SECTION。</p>
<p>节表是由一大堆的IMAGE_SECTION_HEADER排列成的一个数据结构。其数量由IMAGE_NT_HEADERS结构中的FileHeader.NumberOfSections成员来决</p><span id="Codehighlighter1_38_890_Open_Text">
<p align="justify"></span>定。</p>
<p>IMAGE_SECTION_HEADER的结构如下</p><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">typedef </span><span style="color: #0000ff">struct</span><span style="color: #000000"> _IMAGE_SECTION_HEADER <br /><img id="Codehighlighter1_38_890_Open_Image" onclick="this.style.display='none'; Codehighlighter1_38_890_Open_Text.style.display='none'; Codehighlighter1_38_890_Closed_Image.style.display='inline'; Codehighlighter1_38_890_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_38_890_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_38_890_Closed_Text.style.display='none'; Codehighlighter1_38_890_Open_Image.style.display='inline'; Codehighlighter1_38_890_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_38_890_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_38_890_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; </span><span style="color: #008000">//</span><span style="color: #008000"> 节表名称,如&#8220;.text&#8221; <br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #008000">//</span><span style="color: #008000">IMAGE_SIZEOF_SHORT_NAME=8</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> union<br /><img id="Codehighlighter1_165_385_Open_Image" onclick="this.style.display='none'; Codehighlighter1_165_385_Open_Text.style.display='none'; Codehighlighter1_165_385_Closed_Image.style.display='inline'; Codehighlighter1_165_385_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_165_385_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_165_385_Closed_Text.style.display='none'; Codehighlighter1_165_385_Open_Image.style.display='inline'; Codehighlighter1_165_385_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"> </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_165_385_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_165_385_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> DWORD PhysicalAddress; </span><span style="color: #008000">//</span><span style="color: #008000"> 物理地址</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> DWORD VirtualSize; </span><span style="color: #008000">//</span><span style="color: #008000"> 真实长度，这两个值是一个联合结构，可以使用其中的任何一个，一<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #008000">//</span><span style="color: #008000"> 般是取后一个</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /></span><span style="color: #000000"> }</span></span><span style="color: #000000"> Misc;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> DWORD VirtualAddress; </span><span style="color: #008000">//</span><span style="color: #008000"> 节区的 RVA 地址</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> DWORD SizeOfRawData; </span><span style="color: #008000">//</span><span style="color: #008000"> 在文件中对齐后的尺寸</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> DWORD PointerToRawData; </span><span style="color: #008000">//</span><span style="color: #008000"> 在文件中的偏移量</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> DWORD PointerToRelocations; </span><span style="color: #008000">//</span><span style="color: #008000"> 在OBJ文件中使用，重定位的偏移</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> DWORD PointerToLinenumbers; </span><span style="color: #008000">//</span><span style="color: #008000"> 行号表的偏移（供调试使用地）</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> WORD NumberOfRelocations; </span><span style="color: #008000">//</span><span style="color: #008000"> 在OBJ文件中使用，重定位项数目</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> WORD NumberOfLinenumbers; </span><span style="color: #008000">//</span><span style="color: #008000"> 行号表中行号的数目</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> DWORD Characteristics; </span><span style="color: #008000">//</span><span style="color: #008000"> 节属性如可读，可写，可执行等 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; </span></div></span><br /><br />
<p>Name 里面存的是区块的名字 </p>
<p><span style="white-space: pre"></span>.text code 什么的就是放代码用的</p>
<p><span style="white-space: pre"></span>.data 就是放数据，已经初始化好的</p>
<p><span style="white-space: pre"></span>.idata 就是输入表 ，很多加壳程序会修改输入表，hook api 在程序运行api时，让壳取得一定时间的权限来反跟踪，脱壳的一大步骤就是还原输入表。</p>
<p><span style="white-space: pre"></span>.edata 输出表</p>
<p><span style="white-space: pre"></span>.bbs 未初始化的数据</p>VirtualSizes是一个非常牛逼的成员，其中的值是区块没有按FileAlignment对其前的大小，通过它可以推算出区块中还有多少没有被使用，很多病毒会在未被是用的空间里<br />
<p>插入自己的代码。</p>
<p>Characteristics 表示该区块的属性 可读啊 可写啊什么的</p><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_TYPE_REG　　　　　　　　 0x00000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_TYPE_DSECT　　　　　　　 0x00000001　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_TYPE_NOLOAD　　　　　　　0x00000002　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_TYPE_GROUP　　　　　　　 0x00000004　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_TYPE_NO_PAD　　　　　　　0x00000008　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_TYPE_COPY　　　　　　　　0x00000010　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_CNT_CODE　　　　　　　　 0x00000020　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contains code.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">区段包含代码</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_CNT_INITIALIZED_DATA　　 0x00000040　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contains initialized data.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">区段包含已初始化数据</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_CNT_UNINITIALIZED_DATA　 0x00000080　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contains uninitialized data.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">区段包含未初始化数据</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_LNK_OTHER　　　　　　　　0x00000100　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_LNK_INFO　　　　　　　　 0x00000200　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contains comments</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000"> or some other type of information.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_TYPE_OVER　　　　　　　　0x00000400　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_LNK_REMOVE　　　　　　　 0x00000800　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contents will not become part of image.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_LNK_COMDAT　　　　　　　 0x00001000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contents comdat.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　　　　　　　　　　　　　　　　　　 0x00002000　</span><span style="color: #008000">//</span><span style="color: #008000"> Reserved.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_NO_DEFER_SPEC_EXC　　　　0x00004000　</span><span style="color: #008000">//</span><span style="color: #008000"> Reset speculative exceptions handling bits</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000"> in the TLB entries for this section.</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_GPREL　　　　　　　　　　0x00008000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section content can be accessed relative to GP</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_FARDATA　　　　　　　0x00008000</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">　　　IMAGE_SCN_MEM_SYSHEAP　- Obsolete　0x00010000</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_PURGEABLE　　　　　　0x00020000</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_16BIT　　　　　　　　0x00020000</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_LOCKED　　　　　　　 0x00040000</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_PRELOAD　　　　　　　0x00080000</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_1BYTES　　　　　　 0x00100000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_2BYTES　　　　　　 0x00200000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_4BYTES　　　　　　 0x00300000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_8BYTES　　　　　　 0x00400000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_16BYTES　　　　　　0x00500000　</span><span style="color: #008000">//</span><span style="color: #008000"> Default alignment if no others are specified.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_32BYTES　　　　　　0x00600000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_64BYTES　　　　　　0x00700000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_128BYTES　　　　　 0x00800000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_256BYTES　　　　　 0x00900000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_512BYTES　　　　　 0x00A00000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_1024BYTES　　　　　0x00B00000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_2048BYTES　　　　　0x00C00000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_4096BYTES　　　　　0x00D00000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_ALIGN_8192BYTES　　　　　0x00E00000　</span><span style="color: #008000">//</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000"> Unused　　　　　　　　　　　　　　　　　0x00F00000</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_LNK_NRELOC_OVFL　　　　　0x01000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section contains extended relocations.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_DISCARDABLE　　　　　0x02000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section can be discarded.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">该区段可丢弃</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_NOT_CACHED　　　　　 0x04000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section is not cachable.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_NOT_PAGED　　　　　　0x08000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section is not pageable.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_SHARED　　　　　　　 0x10000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section is shareable.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">该区段可共享</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_EXECUTE　　　　　　　0x20000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section is executable.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">该区段可执行</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_READ　　　　　　　　 0x40000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section is readable.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">该区段可读</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000"> IMAGE_SCN_MEM_WRITE　　　　　　　　0x80000000　</span><span style="color: #008000">//</span><span style="color: #008000"> Section is writeable.</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　　　　　　　　　　　　　　　　　　　　 </span><span style="color: #008000">//</span><span style="color: #008000">该区段可写</span></div><br />最后写个程序把这个结构读出来 
<p>由于我比较懒就只读了Name这个成员，有些加壳软件会修改Name这个字段使读出来的东西乱七八糟，比如UPX的压缩壳，会把Name字段改成UPX0，UPX1这样</p><br /><br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">windows.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include </span><span style="color: #000000">"</span><span style="color: #000000">stdio.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">int</span><span style="color: #000000"> argc, </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> argv[])<br /><img id="Codehighlighter1_74_1051_Open_Image" onclick="this.style.display='none'; Codehighlighter1_74_1051_Open_Text.style.display='none'; Codehighlighter1_74_1051_Closed_Image.style.display='inline'; Codehighlighter1_74_1051_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_74_1051_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_74_1051_Closed_Text.style.display='none'; Codehighlighter1_74_1051_Open_Image.style.display='inline'; Codehighlighter1_74_1051_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_74_1051_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_74_1051_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> FILE </span><span style="color: #000000">*</span><span style="color: #000000">p;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">int</span><span style="color: #000000"> i;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> unsigned </span><span style="color: #0000ff">long</span><span style="color: #000000"> Signature;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> IMAGE_FILE_HEADER myfileheader;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> IMAGE_DOS_HEADER mydosheader;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> IMAGE_OPTIONAL_HEADER myoptionalheader;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> IMAGE_SECTION_HEADER mysectionheader;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> p </span><span style="color: #000000">=</span><span style="color: #000000"> fopen(</span><span style="color: #000000">"</span><span style="color: #000000">test.exe</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">r+b</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">if</span><span style="color: #000000">(p </span><span style="color: #000000">==</span><span style="color: #000000"> NULL)</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mydosheader,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(mydosheader),</span><span style="color: #000000">1</span><span style="color: #000000">,p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fseek(p,mydosheader.e_lfanew,SEEK_SET);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">Signature,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(Signature),</span><span style="color: #000000">1</span><span style="color: #000000">,p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fseek(p,mydosheader.e_lfanew</span><span style="color: #000000">+</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(Signature),SEEK_SET);</span><span style="color: #008000">//</span><span style="color: #008000">指向IMAGE_FILE_HEADER结构的偏移</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"> fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">myfileheader,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(myfileheader),</span><span style="color: #000000">1</span><span style="color: #000000">,p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fseek(p,mydosheader.e_lfanew</span><span style="color: #000000">+</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(Signature)</span><span style="color: #000000">+</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(myfileheader)</span><span style="color: #000000">+</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(myoptionalheader),SEEK_SET);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> printf(</span><span style="color: #000000">"</span><span style="color: #000000">Signature : %04X\n</span><span style="color: #000000">"</span><span style="color: #000000">,Signature);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> printf(</span><span style="color: #000000">"</span><span style="color: #000000">IMAGE_SECTION_HEADER 结构:\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img id="Codehighlighter1_886_1020_Open_Image" onclick="this.style.display='none'; Codehighlighter1_886_1020_Open_Text.style.display='none'; Codehighlighter1_886_1020_Closed_Image.style.display='inline'; Codehighlighter1_886_1020_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_886_1020_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_886_1020_Closed_Text.style.display='none'; Codehighlighter1_886_1020_Open_Image.style.display='inline'; Codehighlighter1_886_1020_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"> </span><span style="color: #0000ff">for</span><span style="color: #000000">(i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">myfileheader.NumberOfSections;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_886_1020_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_886_1020_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mysectionheader,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(mysectionheader),</span><span style="color: #000000">1</span><span style="color: #000000">,p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> printf(</span><span style="color: #000000">"</span><span style="color: #000000">Name : %s\n</span><span style="color: #000000">"</span><span style="color: #000000">,mysectionheader.Name);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /> }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> fclose(p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div><br /><img src ="http://www.cppblog.com/tiany/aggbug/170920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2012-04-11 15:31 <a href="http://www.cppblog.com/tiany/archive/2012/04/11/170920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学破解 &lt;二&gt; PE格式之IMAGE_NT_HEADERS</title><link>http://www.cppblog.com/tiany/archive/2012/04/11/170918.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Wed, 11 Apr 2012 07:09:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2012/04/11/170918.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/170918.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2012/04/11/170918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/170918.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/170918.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这个IMAGE_NT_HEADERS其实就是PE相关结构的映像头，NT据我揣测应该是New Technology的缩写，区分于DOS WIN9X的新技术，您老要是非觉得是NTR什么的也没关系。IMAGE_NT_HEADERS的结构是这个样子的Code highlighting produced by Actipro CodeHighlighter (freeware)http://www....&nbsp;&nbsp;<a href='http://www.cppblog.com/tiany/archive/2012/04/11/170918.html'>阅读全文</a><img src ="http://www.cppblog.com/tiany/aggbug/170918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2012-04-11 15:09 <a href="http://www.cppblog.com/tiany/archive/2012/04/11/170918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学破解 &lt;一&gt; PE格式之MS-DOS MZ header </title><link>http://www.cppblog.com/tiany/archive/2012/04/08/170495.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Sun, 08 Apr 2012 14:24:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2012/04/08/170495.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/170495.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2012/04/08/170495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/170495.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/170495.html</trackback:ping><description><![CDATA[<p><span style="white-space: pre"></span>PE的意思就是这个 the Protable Executable (PE) file format 微软搞得那么一套东西，字面意思是可移植的，但是现实使用中没见他多么的可移植，PE格式借鉴了UNIX系统中的COFF (Common Object File Format) 格式。而且PE对MS-Dos的兼容，保留了MS-Dos头，在dos下打开会提示 &#8220;这是win32程序在dos下不能跑<span style="font-size: 13px">&#8221; 向下兼容，非常的友好。</span></p>
<p><span style="font-size: 13px">MS-DOS MZ header 的结构是这样的</span></p>
<p><span style="font-family: Simsun; font-size: 16px"></span></p>
<p style="display: inline !important"><span style="font-size: 13px"></span></p><span style="font-family: Simsun; font-size: 16px"></span>
<p style="padding-bottom: 2px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline !important; font-family: Simsun; font-size: 16px; padding-top: 2px"><span style="font-size: 13px"><span style="font-size: 13px">MS-DOS MZ header</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_33_1310_Open_Image" onclick="this.style.display='none'; Codehighlighter1_33_1310_Open_Text.style.display='none'; Codehighlighter1_33_1310_Closed_Image.style.display='inline'; Codehighlighter1_33_1310_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_33_1310_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_33_1310_Closed_Text.style.display='none'; Codehighlighter1_33_1310_Open_Image.style.display='inline'; Codehighlighter1_33_1310_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #000000">typedef&nbsp;</span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;_IMAGE_DOS_HEADER&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_33_1310_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_33_1310_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;DOS&nbsp;.EXE&nbsp;header</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_magic;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Magic&nbsp;number</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_cblp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Bytes&nbsp;on&nbsp;last&nbsp;page&nbsp;of&nbsp;file</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_cp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Pages&nbsp;in&nbsp;file</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_crlc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Relocations</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_cparhdr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Size&nbsp;of&nbsp;header&nbsp;in&nbsp;paragraphs</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_minalloc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Minimum&nbsp;extra&nbsp;paragraphs&nbsp;needed</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_maxalloc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Maximum&nbsp;extra&nbsp;paragraphs&nbsp;needed</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_ss;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Initial&nbsp;(relative)&nbsp;SS&nbsp;value</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Initial&nbsp;SP&nbsp;value</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_csum;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Checksum</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_ip;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Initial&nbsp;IP&nbsp;value</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_cs;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Initial&nbsp;(relative)&nbsp;CS&nbsp;value</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_lfarlc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;File&nbsp;address&nbsp;of&nbsp;relocation&nbsp;table</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_ovno;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Overlay&nbsp;number</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_res[</span><span style="color: #000000">4</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Reserved&nbsp;words</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_oemid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;OEM&nbsp;identifier&nbsp;(for&nbsp;e_oeminfo)</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_oeminfo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;OEM&nbsp;information;&nbsp;e_oemid&nbsp;specific</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp;&nbsp;e_res2[</span><span style="color: #000000">10</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Reserved&nbsp;words</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;LONG&nbsp;&nbsp;&nbsp;e_lfanew;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;File&nbsp;address&nbsp;of&nbsp;new&nbsp;exe&nbsp;header</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;IMAGE_DOS_HEADER,&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">PIMAGE_DOS_HEADER;</span></div>
<p style="padding-bottom: 2px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline !important; font-family: Simsun; font-size: 16px; padding-top: 2px"></span></span></p><br />
<p>其中比较关键的成员是这个 e_lfanew 它指向了PE文件头在PE文件中的相对虚拟地址RAV(Relative Virtual Addresses)，e_magic的值应该等于 0x5A4D 是MS-DOS MZ header的标志 MZ好像是个程序员名字的缩写 其他成员基本没啥大用，一些加壳软件会修改它的成员为自己的节腾出空间，或者在添加节形式感染时节表尾部的空隙不够写入一个新的解表结构的时候把IMAGE_DOS_HEADE 和 IMAGE_NT_HEADER 融合。</p>
<p>可以自己写一个小程序来输出一下IMAGE_DOS_HEADE</p>
<p>IMAGE_DOS_HEADE这个结构体定义在windows.h中</p>
<p>系统加载PE格式的文件时，会先加载IMAGE_DOS_HEADE这个结构体，再根据结构体里的e_lfanew提供的相对偏移找到PE文件头。</p>
<p><br /></p>
<p>用c语言可以直接读出IMAGE_DOS_HEADE这个结构体，下面开始写。</p>
<p>从文件的开始位置读取IMAGE_DOS_HEADE结构体<br /></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mydosheader,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(mydosheader),</span><span style="color: #000000">1</span><span style="color: #000000">,p);</span></div><br />吧文件指针移动到e_lfanew所指的相对偏移，即PE文件头<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">fseek(p,mydosheader.e_lfanew,SEEK_SET);</span></div><br /><br />读取PE文件标志，这个PE Signature是 PE\0\0 这样一个值，证明它是PE格式的身份。<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">sig,</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">,p);</span></div><br />这个判断中大写的变量都是，windows.h中的常数 
<p>&nbsp;</p>
<p>IMAGE_NT_SIGNATURE 的值是 PE\0\0</p>
<p>IMAGE_DOS_SIGN</p>
<p>ATURE 的值是 MZ</p>
<p>具体的定义可以自己去windows.h中看</p><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">　</span><span style="color: #0000ff">if</span><span style="color: #000000">((mydosheader.e_magic </span><span style="color: #000000">==</span><span style="color: #000000">IMAGE_DOS_SIGNATURE) </span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　　(sig </span><span style="color: #000000">==</span><span style="color: #000000"> IMAGE_NT_SIGNATURE))<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">有效的PE文件/n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">无效的PE文件/n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />　　　　</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;</span></div><br />下面是完整的程序<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">windows.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include </span><span style="color: #000000">"</span><span style="color: #000000">stdio.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">int</span><span style="color: #000000"> argc, </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> argv[])<br /><img id="Codehighlighter1_74_1545_Open_Image" onclick="this.style.display='none'; Codehighlighter1_74_1545_Open_Text.style.display='none'; Codehighlighter1_74_1545_Closed_Image.style.display='inline'; Codehighlighter1_74_1545_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_74_1545_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_74_1545_Closed_Text.style.display='none'; Codehighlighter1_74_1545_Open_Image.style.display='inline'; Codehighlighter1_74_1545_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_74_1545_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_74_1545_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　FILE </span><span style="color: #000000">*</span><span style="color: #000000">p;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　IMAGE_DOS_HEADER mydosheader;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　unsigned </span><span style="color: #0000ff">long</span><span style="color: #000000"> sig;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　p </span><span style="color: #000000">=</span><span style="color: #000000"> fopen(</span><span style="color: #000000">"</span><span style="color: #000000">test1.exe</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">r+b</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　</span><span style="color: #0000ff">if</span><span style="color: #000000">(p </span><span style="color: #000000">==</span><span style="color: #000000"> NULL)</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">mydosheader,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(mydosheader),</span><span style="color: #000000">1</span><span style="color: #000000">,p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　fseek(p,mydosheader.e_lfanew,SEEK_SET);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　fread(</span><span style="color: #000000">&amp;</span><span style="color: #000000">sig,</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">,p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　fclose(p);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">IMAGE_DOS_HEADER dump:/n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_magic　 : %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_magic);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_cblp　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_cblp);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_cp　　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_cp);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_crlc　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_crlc);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_cparhdr : %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_cparhdr);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_minalloc: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_minalloc);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_maxalloc: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_maxalloc);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_ss　　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_ss);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_sp　　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_sp);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_csum　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_csum);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_ip　　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_ip);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_cs　　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_cs);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_lfarlc　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_lfarlc);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_ovno　　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_ovno);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_res[0]　: %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_res[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_oemid　 : %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_oemid);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">e_oeminfo : %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_oeminfo);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">res2[0]　 : %04x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_res2[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">lfanew　　: %08x/n</span><span style="color: #000000">"</span><span style="color: #000000">,mydosheader.e_lfanew);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　</span><span style="color: #0000ff">if</span><span style="color: #000000">((mydosheader.e_magic </span><span style="color: #000000">==</span><span style="color: #000000">IMAGE_DOS_SIGNATURE) </span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　　　　　(sig </span><span style="color: #000000">==</span><span style="color: #000000"> IMAGE_NT_SIGNATURE))<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">有效的PE文件/n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　　　printf(</span><span style="color: #000000">"</span><span style="color: #000000">无效的PE文件/n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />　　　　</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><br />
<p>最后附上参考文章的地址</p>
<p>&nbsp;</p>
<p><a href="http://xue23.blog.163.com/blog/static/9793442005431142120/">http://xue23.blog.163.com/blog/static/9793442005431142120/</a></p>
<p><a href="http://bbs.fishc.com/home.php?mod=space&amp;uid=9&amp;do=blog&amp;id=558">http://bbs.fishc.com/home.php?mod=space&amp;uid=9&amp;do=blog&amp;id=558</a></p>
<p>Peering Inside the PE.pdf</p>
<p>&nbsp;</p>
<p><a href="http://xue23.blog.163.com/blog/static/9793442005431142120/">http://xue23.blog.163.com/blog/static/9793442005431142120/</a></p><br /><img src ="http://www.cppblog.com/tiany/aggbug/170495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2012-04-08 22:24 <a href="http://www.cppblog.com/tiany/archive/2012/04/08/170495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VMware + WinDbg 配置内核调试 </title><link>http://www.cppblog.com/tiany/archive/2012/03/03/167024.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Fri, 02 Mar 2012 16:47:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2012/03/03/167024.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/167024.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2012/03/03/167024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/167024.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/167024.html</trackback:ping><description><![CDATA[<div class="postText"><span style="font-size: 10pt">借助VMware实现单机使用WinDbg进行调试的方法。 </span>
<p><span style="font-size: 10pt">安裝VMware Workstation 6.0, WinDbg。<br /><br />具体步骤如下：<br /><br /><strong>1 设置 VMware 的虚拟com</strong><br /><br />1.1 运行 VMware ，点击 "Edit virtual machine settings"<br /><br />1.2 点击 "Add..." 来运行 VMware 的 Hardware Wizard </span></p>
<p><span style="font-size: 10pt"><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-31517202.GIF" width="614" height="468" /> </span></p>
<p><br /><span style="font-size: 10pt">1.3 选择 "Serial Port"，点 "下一步"<br /><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-31517204.GIF" width="441" height="376" /> </span></p>
<p><br /><span style="font-size: 10pt">1.4 选择 "Output to named pipe",点 "下一步" </span></p>
<p><span style="font-size: 10pt"><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-31517206.GIF" width="441" height="376" /> </span></p>
<p><br /><span style="font-size: 10pt">1.5 第一框里保持默认的 </span><a href="file://./pipe/com_1"><span style="font-size: 10pt"><font color="#1d58d1">\\.\pipe\com_1</font></span></a><span style="font-size: 10pt"> &lt;==== 此可為任何名<br />第二框里选"This end is the server."<br />第三框里选"The other end is an application."<br />选中 "Connect at power on"<br />然后点击 "Advanced&gt;&gt;"<br /><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-31517208.GIF" width="441" height="376" /> </span></p>
<p><br /><span style="font-size: 10pt">1.6 选中 "Yield CPU on poll"（VMware Support 中提到了这一点），然后点完成。<br /><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-315172010.GIF" width="441" height="376" /> </span></p>
<p><br /><span style="font-size: 10pt">1.7 这样就完成了虚拟com的设置。<br /><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-315172012.GIF" width="614" height="468" /> </span></p>
<p><br /><span style="font-size: 10pt">1.8 重新启动 VM。<br /><br /><strong>2 设置 VMware 虚拟出来的 guest os</strong><br /><br />现在 power on 虚拟出来的 guest os<br /><br />2.1 设置boot.ini<br /><br />在c:\下，可以找到boot.ini，可以用记事本打开它。我们需要在 guest os 的启动项上加些参数，才能够使用WinDbg调试它。我们可以在现有的行后面直接加参数，不过强烈推荐复制一个新行，在新行的后面加参数。这样在调试启动有问题的时候，我们可以方便的换回原来的启动方式。下面就是我改好的boot.ini。<br />其中 " multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows XP Professional" /fastdetect "<br />是原来的行。<br />" multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows XP Professional - debug" /fastdetect /noguiboot <strong><span style="color: red"><strong>/debug /debugport=com1 /baudrate=115200</strong> </span></strong>" 新加為用于 WinDbg 调试的行。<br /><br />------------------------------------------------------------------------------------------<br /><br />[boot loader]<br />timeout=10<br />default=multi(0)disk(0)rdisk(0)partition(1)\WINNT<br />[operating systems]<br />multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows XP Professional" /fastdetect <br />multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows XP Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200<br /><br />-------------------------------------------------------------------------------------------<br /><br />这里还要注意的是,timeout不要为0，否则直接启动默认的项。新行后面加上了参数 /debug /debugport=com1 /baudrate=115200 ，可以看到 debugport=com1 ，baudrate=115200 。参数的具体作用，可以参考 WinDbg 的帮助文件。<br /></span></p>
<p><br /><span style="font-size: 10pt">2.2 设置com1端口的速度<br />在 guest os 的设备管理器中把com1端口的速度也就是"每秒位数"项，设为和上面一样的115200。</span></p><br /><span style="font-size: 10pt"><strong>3 设置 WinDbg</strong><br /><br />我们需要告诉WinDbg通过pipe进行连接和连接的速度。可以在命令提示符（cmd.exe）下加参数<br />-b -k com:port=\\.\pipe\com_1,baud=11520,pipe 运行WinDbg（VMware Support 中没有提到 baud=11520 这个参数，其实这是个比较重要的参数）。更方便的方法是在桌面建立一个WinDbg的快捷方式，在该快捷方式的属性，"目标"框中，加上参数 -k com:port=\\.\pipe\com_1,baud=11520,pipe 。这样运行这个快捷方式启动的WinDbg就完成了设置。参数的具体作用，可以参考 WinDbg 的帮助文件。<br /></span>
<p><span style="font-size: 10pt"><strong>4 推荐的操作顺序</strong><br /><br />4.1 首先运行 VMware ，启动 Guest OS ，到系统启动选择，选择 "Microsoft Windows XP Professional - debug" 项，先不要按回车。<br /><br />4.2 通过刚才设置好的快捷方式运行WinDbg。<br /><br />4.3 在 Guest OS 中选择 "Microsoft Windows XP Professional - debug" 项，按回车。<br /><br />4.4 稍等片刻，就连接上了。如果很长时间没有连接上的话，可以按 WinDbg 菜单中的 "Debug"-&gt;"Kernel Connection"-&gt;"Resynchronize"。 </span><span style="font-size: 10pt"><span style="color: red">&lt;=== 如有用命令選項 此應不會發生<br /></span><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-315172020.GIF" width="642" height="488" /> </span></p>
<p><br /><span style="font-size: 10pt">4.5 最后按 WinDbg 菜单中的 "Debug"-&gt;"Break" ，你就可以向 WinDbg 下命令了。<br /><img border="0" alt="" src="http://www.7880.com/Upload/2005-06/CSDN_Dev_Image_2003-10-315172022.GIF" width="800" height="576" /> </span></p>
<p><br /><span style="font-size: 10pt"><strong>? 其他</strong><br />?.1 VMware Support 中还提到了可以通过修改虚拟机的配置文件来改变虚拟串口的速度，有兴趣的话可以参考 VMware Support 中的方法。<br />?.2 WinDbg 的菜单项 "View"-&gt;"Show Version" 可以看到一些相关信息。<br /><br />参考 <br />Driver Debugging with WinDbg and VMWare </span><a href="http://silverstr.ufies.org/lotr0/windbg-vmware.html" target="_blank"><span style="font-size: 10pt"><font color="#1d58d1">http://silverstr.ufies.org/lotr0/windbg-vmware.html<br /></font></span></a><span style="font-size: 10pt">VMware Support 相关部分 </span><a href="http://www.vmware.com/support/ws3/doc/ws32_devices3.html"><span style="font-size: 10pt"><font color="#1d58d1">http://www.vmware.com/support/ws3/doc/ws32_devices3.html</font></span></a><span style="font-size: 10pt"> </span></p>
<p><span style="font-size: 10pt"><br /></span></p>
<div class="mainbody">
<p><span style="font-size: 10pt">One of the first useful things you will want to do when in the bowels of ring 0 is attack the thing from a debugger point of view. In my case I like using Windows Debugger [windbg] (hey its free, fully functional and does remote debugging really well), and found it neccessary to find a way to have it work with VMWare. </span></p>
<p><span style="font-size: 10pt">The trick to get it to work in VMWare is to get the host OS to believe it is able to connect to a serial port. Through VMWare, to accomplish this, you need to create a named pipe. The following steps will guide you to configuring VMWare (in my case v3.2): </span></p>
<ol><li><span style="font-size: 10pt">Open up the Configuration Editor (<strong><font color="white">Settings-&gt;Configuration Editor</font></strong>) </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Click <strong><font color="white">Add</font></strong> to run the Hardware Wizard </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Select <strong><font color="white">Serial Port</font></strong>, and then click the <strong><font color="white">Next</font></strong> button </span>
<p><span style="font-size: 10pt"><img border="0" alt="" src="http://silverstr.ufies.org/lotr0/images/vmware-config.png" /> </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Select the <strong><font color="white">Use named pipe</font></strong> radio button </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Use the default pipe name. It SHOULD be <strong><font color="white">\\.\pipe\com_1</font></strong>. If it is not, change it to that. </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Select <strong><font color="white">This end is the Server</font></strong>. </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Select <strong><font color="white">The other end is an application</font></strong>. </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Click the <strong><font color="white">Advanced</font></strong> Button. </span>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Select the <strong><font color="white">Yield CPU on poll</font></strong> checkbox </span>
<p><span style="font-size: 10pt"><img border="0" alt="" src="http://silverstr.ufies.org/lotr0/images/vmware-config-advanced.png" /> </span></p>
<p><span style="font-size: 10pt">This is an important step as the Kernel in the target virtual machine uses the port in polled mode, not interrupt mode. </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt"></span></p></li><li><span style="font-size: 10pt">Click the <strong><font color="white">Finish</font></strong> button, and then click <strong><font color="white">Ok</font></strong> to close the Configuration Editor. </span>
<p><span style="font-size: 10pt">Once you have configured your VMWare session, you need to power it on. You will be able to confirm that the new virtual serial port is added by clicking on the <strong><font color="white">Devices-&gt;serial0</font></strong> menu item. You should note it is saying <strong>"Connecting"</strong>. This means its now ready for a remote connection. </span></p>
<p><span style="font-size: 10pt">Once the actual virtual machine is configured, you need to configure the target operating system installed in the virtual machine to support remote debugging. This is accomplished by editing the <strong>boot.ini</strong> found in the root of the C:\ drive. To do this, you need to add a <strong><font color="white">/debugport=some_com_port /baudrate=some_baud_rate</font></strong> to the end of an <strong>[operating systems]</strong> line. I would not recommend doing it to the one that is there. It would be better to copy the line and paste it with the ammendments, and then use the OS's menu selection to determine which mode you would like to boot into. This is what my boot.ini looks like for XP Pro as the operating system in the virtual machine: </span></p>
<p>&nbsp;</p>
<div class="bootbody"><pre><span style="font-size: 10pt">[boot loader]<br />        timeout=30<br />        default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS<br />        [operating systems]<br />        multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect<br />        multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - Debug" /fastdetect <strong>/debugport=com1 /baudrate=115200</strong><br /><br />        </span></pre></div>
<p><span style="font-size: 10pt">You will notice that the second option sets the debugport to com1, and sets the baudrate to 115200. I am told you can tweak this out to get even more speed out. But it seems fine for me at this speed, so I haven't mucked with it at all. If you do try this, drop me an </span><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#100;&#97;&#110;&#97;&#64;&#118;&#117;&#108;&#115;&#99;&#97;&#110;&#46;&#99;&#111;&#109;"><span style="font-size: 10pt"><font color="#1d58d1">email</font></span></a><span style="font-size: 10pt"> and let me know how it works out. </span></p>
<p><span style="font-size: 10pt">If you set up your boot.ini fine, save it and reboot. You should be prompted with something that looks like this: </span></p><span style="font-size: 10pt"><img border="0" alt="" src="http://silverstr.ufies.org/lotr0/images/xp-debug-menu.png" /><br /></span>
<p><span style="font-size: 10pt">At this point you have completed setting up the VMWare side of things. Now you need to set up the host to connect to it. This is actually rather easy. You just need to tell windbg at the command like to connect to the pipe, like this: </span></p><pre><span style="font-size: 10pt">windbg -k com:port=\\.\pipe\com_1,pipe<br />        </span></pre><span style="font-size: 10pt">If you are using WinDbg 6.x or newer, a better alternative is to use: </span><pre><span style="font-size: 10pt">windbg -b -k com:pipe,port=\\.\pipe\com_1,resets=0<br />        </span></pre>
<p><span style="font-size: 10pt">Thanks needs to go to </span><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#97;&#110;&#100;&#104;&#105;&#114;&#64;&#99;&#97;&#108;&#115;&#111;&#102;&#116;&#105;&#110;&#99;&#46;&#99;&#111;&#109;"><span style="font-size: 10pt"><font color="#1d58d1">Randhir Dugal</font></span></a><span style="font-size: 10pt"> for pointing out the new format for the latest Windbg version. </span></p>
<p><span style="font-size: 10pt">I am a rather anal type guy when it comes to security, so I actually made a shortcut on my desktop to WinDbg and added these command line arguments to the <strong>Target</strong> line. Originally this was so I could run WinDbg with differnet credentials as I do not run with administrator privileges on a day to day basis. I found that with XP's normal security settings for com ports, you can still work in a least privileged environment while doing the development WITHOUT having to use 'runas'. (You are logged into W2K/XP as a least priviledged environment aren't you? If not, you really should read my </span><a href="http://www.codeproject.com/useritems/runas.asp"><span style="font-size: 10pt"><font color="#1d58d1">article</font></span></a><span style="font-size: 10pt"> on how, and why this is important to do so.) </span></p>
<p><span style="font-size: 10pt">At this point fire up the debugger. With any luck you should see something that looks like this: </span></p><span style="font-size: 10pt"><img border="0" alt="" src="http://silverstr.ufies.org/lotr0/images/windbg.png" /><br /></span>
<p><span style="font-size: 10pt">If you are using a WinDbg version earlier than 6.x, you will find one issue with this approach. If you cannot seem to connect right away, close Windbg and restart it... it will then work. Seems flaky to me. But it works. And thats a Good Thing&#8482;. With the latest versions of WIndbg (6.x and newer) a new resets flag prevents this sort of hanging. </span></p>
<p><span style="font-size: 10pt">That is all there is to it. At this point, you can now go nuts with remote debugging. To make sure it works for ya just add some <strong>DbgPrint()</strong> messages to your ring 0 driver and watch them echo to the screen. Past that, I will leave it to your imagination how to use the debugger :) </span></p>
<p><span style="font-size: 10pt">Good luck! </span></p></li></ol></div></div><img src ="http://www.cppblog.com/tiany/aggbug/167024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2012-03-03 00:47 <a href="http://www.cppblog.com/tiany/archive/2012/03/03/167024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>清除3389登陆日志</title><link>http://www.cppblog.com/tiany/archive/2012/03/01/166902.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Thu, 01 Mar 2012 10:29:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2012/03/01/166902.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/166902.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2012/03/01/166902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/166902.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/166902.html</trackback:ping><description><![CDATA[<div class="post-content">
<div>
<p><strong>一:开始 - 程序 - 管理工具 - 计算机管理 - 系统工具 -事件查看器，然后清除日志。</strong></p>
<p>&nbsp;</p>
<p><strong>二: Windows2000的日志文件通常有应用程序日志，安全日志、系统日志、DNS服务器日志、FTP日志、WWW日志等等。 </strong></p>
<p>&nbsp;</p>
<p>日志文件默认位置：</p>
<p>&nbsp;</p>
<p>应用程序日志、安全日志、系统日志、DNS日志默认位置：%sys temroot%\system32\config，默认文件大小512KB，管理员都会改变这个默认大小。</p>
<p>&nbsp;</p>
<p>安全日志文件：%systemroot%\system32\config\SecEvent.EVT；</p>
<p>&nbsp;</p>
<p>系统日志文件：%systemroot%\system32\config\SysEvent.EVT；</p>
<p>&nbsp;</p>
<p>应用程序日志文件：%systemroot%\system32\config\AppEvent.EVT；</p>
<p>&nbsp;</p>
<p>Internet信息服务FTP日志默认位置：%systemroot%\system32\logfiles\msftpsvc1\，默认每天一个日志；</p>
<p>&nbsp;</p>
<p>Internet信息服务WWW日志默认位置：%systemroot%\system32\logfiles\w3svc1\，默认每天一个日志；</p>
<p>&nbsp;</p>
<p>Scheduler服务日志默认位置：%sys temroot%\schedlgu.txt；</p>
<p>&nbsp;</p>
<p>&nbsp;<span id="more-61"></span></p>
<p>以上日志在注册表里的键：</p>
<p>&nbsp;</p>
<p>应用程序日志，安全日志，系统日志，DNS服务器日志，它们这些LOG文件在注册表中的：</p>
<p>&nbsp;</p>
<p>HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog</p>
<p>&nbsp;</p>
<p>有的管理员很可能将这些日志重定位。其中EVENTLOG下面有很多的子表，里面可查到以上日志的定位目录。</p>
<p>&nbsp;</p>
<p>Schedluler服务日志在注册表中</p>
<p>&nbsp;</p>
<p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>FTP和WWW日志详解：</p>
<p>&nbsp;</p>
<p>FTP日志和WWW日志默认情况，每天生成一个日志文件，包含了该日的一切记录，文件名通常为ex（年份）（月份）（日期），例如ex001023，就是2000年10月23日产生的日志，用记事本就可直接打开，如下例：</p>
<p>&nbsp;</p>
<p>#Software: Microsoft Internet Information Services 5.0（微软IIS5.0）</p>
<p>#Version: 1.0 （版本1.0）</p>
<p>#Date: 20001023 0315 （服务启动时间日期）</p>
<p>#Fields: time cip csmethod csuristem scstatus</p>
<p>0315 127.0.0.1 [1]USER administator 331　（IP地址为127.0.0.1用户名为administator试图登录）</p>
<p>0318 127.0.0.1 [1]PASS &#8211; 530　（登录失败）</p>
<p>032:04 127.0.0.1 [1]USER nt 331　（IP地址为127.0.0.1用户名为nt的用户试图登录）</p>
<p>032:06 127.0.0.1 [1]PASS &#8211; 530　（登录失败）</p>
<p>032:09 127.0.0.1 [1]USER cyz 331　（IP地址为127.0.0.1用户名为cyz的用户试图登录）</p>
<p>0322 127.0.0.1 [1]PASS &#8211; 530　（登录失败）</p>
<p>0322 127.0.0.1 [1]USER administrator 331　（IP地址为127.0.0.1用户名为administrator试图登录）</p>
<p>0324 127.0.0.1 [1]PASS &#8211; 230　（登录成功）</p>
<p>0321 127.0.0.1 [1]MKD nt 550　（新建目录失败）</p>
<p>0325 127.0.0.1 [1]QUIT &#8211; 550　（退出FTP程序）</p>
<p>&nbsp;</p>
<p>从日志里就能看出IP地址为127.0.0.1的用户一直试图登录系统，换了四次用户名和密码才成功，管理员立即就可以得知管理员的入侵时间、IP地址以及探测的用户名，如上例入侵者最终是用administrator用户名进入的，那么就要考虑更换此用户名的密码，或者重命名administrator用户。</p>
<p>&nbsp;</p>
<p>WWW日志：</p>
<p>&nbsp;</p>
<p>WWW服务同FTP服务一样，产生的日志也是在%sys temroot%\sys tem32\LogFiles\W3SVC1目录下，默认是每天一个日志文件，下面是一个典型的WWW日志文件</p>
<p>&nbsp;</p>
<p>#Software: Microsoft Internet Information Services 5.0</p>
<p>#Version: 1.0</p>
<p>#Date: 20001023 03:091</p>
<p>#Fields: date time cip csusername sip sport csmethod csuristem csuriquery scstatus cs(UserAgent)</p>
<p>20001023 03:091 192.168.1.26 192.168.1.37 80 GET /iisstart.asp 200 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98;+DigExt)</p>
<p>20001023 03:094 192.168.1.26 192.168.1.37 80 GET /pagerror.gif 200 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98;+DigExt)</p>
<p>&nbsp;</p>
<p>通过分析第六行，可以看出2000年10月23日，IP地址为192.168.1.26的用户通过访问IP地址为192.168.1.37机器的80端口，查看了一个页面iisstart.asp,这位用户的浏览器为compatible;+MSIE+5.0;+Windows+98+DigExt，有经验的管理员就可通过安全日志、FTP日志和WWW日志来确定入侵者的IP地址以及入侵时间。</p>
<p>&nbsp;</p>
<p>既使你删掉FTP和WWW日志，但是还是会在系统日志和安全日志里记录下来，但是较好的是只显示了你的机器名，并没有你的IP。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>属性里记录了出现警告的原因，是因为有人试图用administator用户名登录，出现一个错误，来源是FTP服务。</p>
<p>&nbsp;</p>
<p>这里有两种图标：钥匙（表示成功）和锁（表示当用户在做什么时被系统停止）。接连四个锁图标，表示四次失败审核，事件类型是帐户登录和登录、注销失败，日期为2000年10月18日，时间为1002，这就需要重点观察。</p>
<p>&nbsp;</p>
<p>双点第一个失败审核事件的，即得到此事件的详细描述。</p>
<p>&nbsp;</p>
<p>经过分析我们可以得知有个CYZ的工作站，用administator用户名登录本机，但是因为用户名未知或密码错误（实际为密码错误）未能成功。另外还有DNS服务器日志，不太重要，就此略过（其实是我没有看过它）。</p>
<p>&nbsp;</p>
<p>知道了Windows2000日志的详细情况，下面就要学会怎样删除这些日志：</p>
<p>&nbsp;</p>
<p>通过上面，得知日志文件通常有某项服务在后台保护，除了系统日志、安全日志、应用程序日志等等，它们的服务是Windos2000的关键进程，而且与注册表文件在一块，当Windows2000启动后，启动服务来保护这些文件，所以很难删除，而FTP日志和WWW日志以及Scedlgu日志都是可以轻易地删除的。首先要取得Admnistrator密码或Administrators组成员之一，然后Telnet到远程主机，先来试着删除FTP日志：</p>
<p>&nbsp;</p>
<p>D:\SERVER&gt;del schedlgu.txt</p>
<p>D:\SERVER\SchedLgU.Txt</p>
<p>&nbsp;</p>
<p>进程无法访问文件，因为另一个程序正在使用此文件。说过了，后台有服务保护，先把服务停掉！</p>
<p>&nbsp;</p>
<p>D:\SERVER&gt;net stop "task scheduler"</p>
<p>&nbsp;</p>
<p>下面的服务依赖于 Task Scheduler 服务。停止 Task Scheduler 服务也会停止这些服务。</p>
<p>&nbsp;</p>
<p>Remote Storage Engine</p>
<p>&nbsp;</p>
<p>是否继续此操作? (Y/N) [N]: y</p>
<p>Remote Storage Engine 服务正在停止....</p>
<p>Remote Storage Engine 服务已成功停止。</p>
<p>&nbsp;</p>
<p>Task Scheduler 服务正在停止.</p>
<p>Task Scheduler 服务已成功停止。</p>
<p>&nbsp;</p>
<p>OK，它的服务停掉了，同时也停掉了与它有依赖关系的服务。再来试着删一下！</p>
<p>&nbsp;</p>
<p>D:\SERVER&gt;del schedlgu.txt</p>
<p>D:\SERVER&gt;</p>
<p>&nbsp;</p>
<p>没有反应？成功了！下一个是FTP日志和WWW日志，原理都是一样，先停掉相关服务，然后再删日志！</p>
<p>&nbsp;</p>
<p>D:\SERVER\system32\LogFiles\MSFTPSVC1&gt;del ex*.log</p>
<p>&nbsp;</p>
<p>D:\SERVER\system32\LogFiles\MSFTPSVC1&gt;</p>
<p>以上操作成功删除FTP日志！再来WWW日志！</p>
<p>D:\SERVER\system32\LogFiles\W3SVC1&gt;del ex*.log</p>
<p>&nbsp;</p>
<p>D:\SERVER\system32\LogFiles\W3SVC1&gt;</p>
<p>&nbsp;</p>
<p>OK！恭喜，现在简单的日志都已成功删除。下面就是很难的安全日志和系统日志了，守护这些日志的服务是Event Log，试着停掉它！</p>
<p>&nbsp;</p>
<p>D:\SERVER\system32\LogFiles\W3SVC1&gt;net stop eventlog</p>
<p>&nbsp;</p>
<p>这项服务无法接受请求的 "暂停" 或 "停止" 操作。没办法，它是关键服务。如果不用第三方工具，在命令行上根本没有删除安全日志和系统日志的可能！所以还是得用虽然简单但是速度慢得死机的办法：打开&#8220;控制面板&#8221;的&#8220;管理工具&#8221;中的&#8220;事件查看器&#8221;（98没有，知道用Win2k的好处了吧），在菜单的&#8220;操作&#8221;项有一个名为&#8220;连接到另一台计算机&#8221;的菜单，点击它，输入远程计算机的IP，然后等上数十分钟，接着选择远程计算机的安全性日志，右键选择它的属性：点击属性里的&#8220;清除日志&#8221;按钮，OK！安全日志清除完毕！同样的忍受痛苦去清除系统日志！ 目前在不借助第三工具的情况下，能很快，很顺利地清除FTP、WWW还有Schedlgu日志，就是系统日志和安全日志属于Windows2000的严密守护，只能用本地的事件查看器来打开它，因为在图形界面下，加之网速又慢，如果你银子多，时间闲，还是可以清除它的。综上所述，介绍了Windows2000的日志文件以及删除方法，但是你必须是Administrator，注意必须作为管理员或管理组的成员登录才能打开安全日志记录。该过程适用于 Windows 2000 Professional 计算机，也适用于作为独立服务器或成员服务器运行的 Windows 2000 Server 计算机。</p>
<p>&nbsp;</p>
<p>至此，Windows2000安全知识基础讲座完毕，还有几句话要讲，大家也看出来了，虽然FTP等等日志可以很快清除，但是系统日志和安全日志却不是那么快、那么顺利地能删除，如果遇到聪明的管理员，将日志文件转移到另一个地方，那更是难上加难，所以奉劝大家，千万不要拿国内的主机做试验，国内的法律很严呀！今天吃饭时，听说有两个人开玩笑，一个人把另外一个人的东西藏起来了，结果那个人一急，报案了，于是藏东西那个人被判四年刑！！法官说法律是不开玩笑的！！！所以大家一定要牢记这点！(不要说我老生常谈)</p></div></div><img src ="http://www.cppblog.com/tiany/aggbug/166902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2012-03-01 18:29 <a href="http://www.cppblog.com/tiany/archive/2012/03/01/166902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS2008+WDK+DDKWzard 搭建驱动开发环境</title><link>http://www.cppblog.com/tiany/archive/2012/03/01/166901.html</link><dc:creator>Tiany</dc:creator><author>Tiany</author><pubDate>Thu, 01 Mar 2012 10:25:00 GMT</pubDate><guid>http://www.cppblog.com/tiany/archive/2012/03/01/166901.html</guid><wfw:comment>http://www.cppblog.com/tiany/comments/166901.html</wfw:comment><comments>http://www.cppblog.com/tiany/archive/2012/03/01/166901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiany/comments/commentRss/166901.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiany/services/trackbacks/166901.html</trackback:ping><description><![CDATA[<div class="post-content">
<p><strong>一、WDK的介绍、下载、安装及配制</strong></p>
<p>1、关于WDK</p>
<p>Windows Driver Kit(<strong>驱动程序工具包</strong>): 是一种完全集成的驱动程序开发系统，它包含 Windows Driver Device Kit (DDK)，用于测试 Windows 驱动程序的可靠性和稳定性，包括：</p>
<ul><li><strong>Windows Driver Foundation (WDF)</strong>&nbsp;简化了 Windows 驱动程序的开发和支持。</li><li><strong>头文件重构</strong>&nbsp;（Windows Vista 和更高版本）通过提供更简单的目录结构、避免声明冲突以及对所有支持的 Windows 版本使用单一头文件集，降低头文件的复杂性。</li><li><strong>Installable File Systems (IFS) Kit</strong>将头、库、示例以及文档作为 WDK 的一部分分发。</li><li><strong>验证程序和静态分析工具</strong>, （如&nbsp;PRE<em>f</em>ast&nbsp;和&nbsp;静态驱动程序验证程序）帮助您在编译时查找 bug。</li></ul>
<p>2、下载WDK</p>
<p>曾经下载WDK好像还必须得http://connect.microsoft.com/注册后才能下载，而且下载后还有一句提示：</p>
<p>&#8220;提醒：您必须接受附带的许可条款才能使用此软件。不得分发下载软件包。&#8221;</p>
<p><span id="more-39"></span></p>
<p>所以当时下载的时候还要走一些不得不走的路。不过，今天好像发现WDK能直接下载了</p>
<p>下载地址：http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE-4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO</p>
<p>如果不能正常下载，具体操作请见如何下载WDK</p>
<p>3、安装WDK</p>
<ol><li>用虚拟光驱加载下载好的.ISO镜像文件，双击运行，出现下面亲切的画面&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb.png" width="244" height="174" />&nbsp;</li><li>接触，出现以下画面，在左侧的树形复选框中选择要安装的组件及工具，建议全部安装，选择好后点击&#8220;OK&#8221;~~后面的就简单了~&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_3.png" width="566" height="400" />&nbsp;</li><li>尔后，一路确定默认即可<img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_4.png" width="366" height="137" /></li></ol>
<p>&nbsp;</p>
<p><strong>二、DDKWzard的介绍、下载、安装及配制</strong></p>
<p>在VS2008IDE中没有提供驱动开发的项目选项，当然可以用普通工程，然后手动在ＶＳ中配制相应的编辑连接以及调试选项，但是如此只来，每次都要重复些复杂的步骤。在http://ddkwizard.assarbad.net/网站上发现了一个很好用的辅助工具DDKWizard，能够方便地对开发环境进行配置，真是适合想我这样懒人啊，工具的作者也自称是因为懒惰才开发此工具，看来&#8220;懒惰是推动科技发展的动力&#8221;一点不假 。</p>
<ul><li>DDKwzard安装需要三个文件：DDKWzard主程序：安装VS2008的项目模板ddkwizard_setup.exe</li><li>DDKBUILD.CMD：应该是用VS2008调用WDK编辑编译器的一系列脚本dkbuild_cmd.zip</li><li>DDKBUILD.BAT ：估计也是是用VS2008调用WDK编辑编译器的一系列脚本ddkbuild_bat.zip</li></ul>
<ol><li>安装ddkwizard_setup，默认安装，一路Next点过即可，将DDKBUILD.CMD与DDKBUILD.BAT考到WDK的安装目录，或者其它目录也行，只要在后续的设置就行。如：我将其放在wdk的目录下，如图&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_5.png" width="405" height="210" />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;</li><li>设置环境变量&nbsp;<br />添加相应的环境变量，如要开发XP系统下的驱动则添加WXPBASE，变量值为WDK的根目录，如图&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_6.png" width="306" height="337" />如果为其它系统开发驱动则填写相应的环境变量&nbsp;<br />NT 4.0 &#8212;&#8212;&#8212;&#8211;NT4BASE 
<p>&nbsp;</p>
<p>windows2000&#8212;-W2KBASE</p>
<p>windowsXP&#8212;&#8212;-WXPBASE</p>
<p>windows2003&#8212;-WNETBASE</p>
<p>win7/2008 R2&#8212;-W7BASE</p></li><li>打开VS 2008，菜单&#8220;工具&#8221;-&gt;&#8220;选项&#8221;-&gt;左侧&#8220;项目和解决方案&#8221;-&gt;&#8220;VC++目录&#8221;-&gt;右侧&#8220;可执行文件&#8221;下拉列表-&gt;添加一项D:/WINDDK(根据你的实际情况，就是第1步中DDKBUILD.CMD与DDKBUILD.BAT所在的路径)。&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_7.png" width="408" height="225" />&nbsp;<br />&nbsp;</li><li>然后就可以在我们的VS2008中新建项目了，如下图，在Visual C++选项卡中多了DDK Project的项目类型，选择相应的模板添加我们的项目，点击确定&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_8.png" width="541" height="362" /></li><li>确定后出现DDKWzard的项目创建页面，在&#8220;Choose the DDKBUILD you want to use&#8221;中选择&#8220;ddkbuild.cmd&#8221;或者&#8220;ddkbuild.bat&#8221;，在其下面选择我们要为Who（2000，xp&#8230;&#8230;）开发的驱动。&nbsp;<br />最后finish&nbsp;<br /><img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_9.png" width="542" height="435" /></li><li>在解决方案中便是由DDKWzard为我们自动生成的一个简单的驱动程序框架。&nbsp;<br />&nbsp;<img title="image" border="0" alt="image" src="http://202.206.196.103/2010/rsy/spltx/img/VS2008WDKDDKWzard_9F4E/image_thumb_10.png" width="239" height="328" />&nbsp;</li><li>最后点击F6生成解决方案，成功生成后在项目的objchk_win7_x86/i386文件夹下会生成几个文件&nbsp;<br />driver1.obj &#8212;编译生成的2进制文件&nbsp;<br />driver1.pdb&#8212;用于调试时使用的符号文件&nbsp;<br />vc90.pdb&#8212;&#8211;用于调试时使用的符号文件&nbsp;<br /><strong>driver1.sys&#8212;就是我们拭目以待的驱动程序文件&nbsp;<br /></strong></li></ol></div> <img src ="http://www.cppblog.com/tiany/aggbug/166901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiany/" target="_blank">Tiany</a> 2012-03-01 18:25 <a href="http://www.cppblog.com/tiany/archive/2012/03/01/166901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>