<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>ROC的笔记本</title>
		<link>http://vod.bpxx.com/</link>
		<description>记录工作、学习、生活......</description>
		<copyright>Powered by SaBlog-X. Copyright (C) 2003-2009.</copyright>
		<generator>SaBlog-X Version Plus 2.0 Build 20090308</generator>
		<lastBuildDate>Wed, 10 Mar 2010 08:44:49 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=250</guid>
			<title>全自动PXE启动PE服务器端，新增图形界面</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <div>&nbsp;&nbsp; 全自动PXE启动PE服务器端。</div>
<div>&nbsp;&nbsp;注意：附件中的 AutoPXE_GUI.exe 为最新程序，请下载后覆盖rar中的同名程序。<br />
&nbsp;<br />
&nbsp;&nbsp;2月18日更新：<br />
&nbsp;&nbsp;1、更多错误提示。<br />
&nbsp;&nbsp;2、修正不能通用的问题。<br />
&nbsp;</div>
<div>&nbsp;&nbsp; 2月16日更新：</div>
<div>&nbsp; 1、自动搜索可用网卡，即已连接网线的。</div>
<div>&nbsp; 2、优化程序结构。</div>
<div>&nbsp; 3、增加更多日志信息。</div>
<div><br />
&nbsp;&nbsp;&nbsp;&nbsp;使用步骤：</div>
<div>&nbsp;&nbsp; &nbsp;1、解压本文件，运行 AutoPXE.exe。</div>
<div>&nbsp;&nbsp; &nbsp;2、程序自动启动并为指定的网卡增加IP：10.0.0.1，同时</div>
<div>启动DHCP服务器。</div>
<div>&nbsp;&nbsp; &nbsp;3、关闭本地防火墙或开启TFTP端口。</div>
<div>&nbsp;&nbsp; &nbsp;4、客户端设置为从网络启动。</div>
<div>&nbsp;&nbsp; &nbsp;5、退出时程序会恢复网卡的原IP地址。</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;附加说明：</div>
<div>&nbsp;&nbsp; &nbsp;1、WINPE.iso 为PE文件，您可以自行打开修改。</div>
<div>&nbsp;&nbsp; &nbsp;2、因程序必须依据不同的网卡生成一些文件，所以程序</div>
<div>必须在可写盘运行。</div>
<div>&nbsp;&nbsp; &nbsp;3、程序未经严格测试，如有错误，请留言。</div>
<p>&nbsp;</p><br /><br /><b>图片附件:</b><br /><a href="http://vod.bpxx.com/attachment.php?id=199" target="_blank"><img src="http://vod.bpxx.com/attachments//date_201002/307668356d023801aea4c4a9f0b87aa7.jpg" border="0" alt="大小: 38.91 K&#13;尺寸: 405 x 422&#13;浏览: 5 次&#13;点击打开新窗口浏览全图" width="405" height="422" /></a><br /><br /><b>附件: </b><a href="http://vod.bpxx.com/attachment.php?id=192" target="_blank">pxe_pe.rar</a> (46.07 M, 下载次数:2529)<br /><br /><b>附件: </b><a href="http://vod.bpxx.com/attachment.php?id=202" target="_blank">autopxe.exe</a> (693.39 K, 下载次数:343)]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=250</link>
			<category domain="http://vod.bpxx.com/?cid=1">原创软件</category>
			<pubDate>2010-02-18 22:33</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=248</guid>
			<title>IP-MAC扫描器</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 本软件利用ARP请求原理及多线程扫描，可快速扫描所有IP设备，可将结果存档，用来高效统计局域网在线用户／离线，当网络主机MAC地址发生变化时还会有提示，还有网络唤醒功能可以远程开机!</p><br /><br /><b>附件: </b><a href="http://vod.bpxx.com/attachment.php?id=177" target="_blank">ipmac.rar</a> (37.79 K, 下载次数:10)]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=248</link>
			<category domain="http://vod.bpxx.com/?cid=8">佳软推荐</category>
			<pubDate>2009-12-31 20:58</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=247</guid>
			<title>[原创]网络眼算法分析</title>
			<author>roczyl</author>
			<description>文章需要输入密码才能浏览.</description>
			<link>http://vod.bpxx.com/?action=show&amp;id=247</link>
			<category domain="http://vod.bpxx.com/?cid=10">初学破解</category>
			<pubDate>2009-12-31 20:55</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=246</guid>
			<title>[原创]Raize Video Converter爆破</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>先查壳，UPX v0.89.6 - v1.02 / v1.05 - v1.22，ESP定律简单脱壳。</p>
<p>查找字符串，发现：Registered Version，双击，来到：</p>
<p>004ECD09&nbsp;&nbsp;&nbsp; E8 D29CF9FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.004869E0<br />
004ECD0E&nbsp;&nbsp;&nbsp; 8B45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,dword ptr ss:[ebp-4]<br />
004ECD11&nbsp;&nbsp;&nbsp; E8 E29BF9FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.004868F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 关键CALL<br />
004ECD16&nbsp;&nbsp;&nbsp; 3D 00020000&nbsp;&nbsp;&nbsp;&nbsp; cmp eax,200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 关键比较，爆破点<br />
004ECD1B&nbsp;&nbsp;&nbsp; 75 3F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jnz short unpack.004ECD5C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 跳到未注册处，爆破点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
004ECD1D&nbsp;&nbsp;&nbsp; 33D2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor edx,edx<br />
004ECD1F&nbsp;&nbsp;&nbsp; 8B83 1C030000&nbsp;&nbsp; mov eax,dword ptr ds:[ebx+31C]<br />
004ECD25&nbsp;&nbsp;&nbsp; E8 4A97F6FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00456474<br />
004ECD2A&nbsp;&nbsp;&nbsp; 33D2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor edx,edx<br />
004ECD2C&nbsp;&nbsp;&nbsp; 8B83 18030000&nbsp;&nbsp; mov eax,dword ptr ds:[ebx+318]<br />
004ECD32&nbsp;&nbsp;&nbsp; E8 3D97F6FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00456474<br />
004ECD37&nbsp;&nbsp;&nbsp; BA C4CD4E00&nbsp;&nbsp;&nbsp;&nbsp; mov edx,unpack.004ECDC4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Registered Version<br />
004ECD3C&nbsp;&nbsp;&nbsp; 8B83 0C030000&nbsp;&nbsp; mov eax,dword ptr ds:[ebx+30C]<br />
004ECD42&nbsp;&nbsp;&nbsp; E8 3D98F6FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00456584<br />
004ECD47&nbsp;&nbsp;&nbsp; 8B83 0C030000&nbsp;&nbsp; mov eax,dword ptr ds:[ebx+30C]<br />
004ECD4D&nbsp;&nbsp;&nbsp; 8B40 68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,dword ptr ds:[eax+68]<br />
004ECD50&nbsp;&nbsp;&nbsp; BA 080000FF&nbsp;&nbsp;&nbsp;&nbsp; mov edx,FF000008<br />
004ECD55&nbsp;&nbsp;&nbsp; E8 1AC8F3FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00429574<br />
004ECD5A&nbsp;&nbsp;&nbsp; EB 3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jmp short unpack.004ECD99<br />
004ECD5C&nbsp;&nbsp;&nbsp; B2 01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dl,1<br />
004ECD5E&nbsp;&nbsp;&nbsp; 8B83 1C030000&nbsp;&nbsp; mov eax,dword ptr ds:[ebx+31C]<br />
004ECD64&nbsp;&nbsp;&nbsp; E8 0B97F6FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00456474<br />
004ECD69&nbsp;&nbsp;&nbsp; B2 01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dl,1<br />
004ECD6B&nbsp;&nbsp;&nbsp; 8B83 18030000&nbsp;&nbsp; mov eax,dword ptr ds:[ebx+318]<br />
004ECD71&nbsp;&nbsp;&nbsp; E8 FE96F6FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00456474<br />
004ECD76&nbsp;&nbsp;&nbsp; BA E0CD4E00&nbsp;&nbsp;&nbsp;&nbsp; mov edx,unpack.004ECDE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Unregistered Version</p>
<p>跟进 004ECD11&nbsp;&nbsp;&nbsp; E8 E29BF9FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.004868F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 关键CALL<br />
找到<br />
00486970&nbsp;&nbsp;&nbsp; E8 67E2F7FF&nbsp;&nbsp;&nbsp;&nbsp; call unpack.00404BDC<br />
00486975&nbsp;&nbsp;&nbsp; 75 07&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jnz short unpack.0048697E<br />
00486977&nbsp;&nbsp;&nbsp; BF 00020000&nbsp;&nbsp;&nbsp;&nbsp; mov edi,200</p>
<p>将00486975这一行的jnz给NOP掉。<br />
修改后保存为 unpack2.exe，启动，成功注册了。</p>
<p>算法貌似比较麻烦，好像不是明码比较的。一位位切割比较的？以后有空慢慢搞吧。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=246</link>
			<category domain="http://vod.bpxx.com/?cid=10">初学破解</category>
			<pubDate>2009-12-31 20:53</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=245</guid>
			<title>[原创]半仙算命2009算法分析</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>先声明，算命这东西，娱乐而已，千万别当真。<br />
先查壳，aspack，ESP法，脱掉。<br />
OD载入unpack.exe，<br />
查找字符串，有&ldquo;注册成功!&rdquo;字样，双击，来到0055C031<br />
向上看，</p>
<p>0055BEF5&nbsp;&nbsp; &gt; \8D95 8CFEFFFF lea edx,dword ptr ss:[ebp-174]<br />
0055BEFB&nbsp;&nbsp; .&nbsp; 8B45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,dword ptr ss:[ebp-4]<br />
0055BEFE&nbsp;&nbsp; .&nbsp; 8B80 00030000 mov eax,dword ptr ds:[eax+300]<br />
0055BF04&nbsp;&nbsp; .&nbsp; E8 0FC2EEFF&nbsp;&nbsp; call unpack.00448118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 获取注册码位数到EAX<br />
0055BF09&nbsp;&nbsp; .&nbsp; 8B85 8CFEFFFF mov eax,dword ptr ss:[ebp-174]<br />
0055BF0F&nbsp;&nbsp; .&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push eax<br />
0055BF10&nbsp;&nbsp; .&nbsp; 8D95 84FEFFFF lea edx,dword ptr ss:[ebp-17C]<br />
0055BF16&nbsp;&nbsp; .&nbsp; 8B45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,dword ptr ss:[ebp-4]<br />
0055BF19&nbsp;&nbsp; .&nbsp; 8B80 F8020000 mov eax,dword ptr ds:[eax+2F8]<br />
0055BF1F&nbsp;&nbsp; .&nbsp; E8 F4C1EEFF&nbsp;&nbsp; call unpack.00448118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 获取序列号位数到EAX<br />
0055BF24&nbsp;&nbsp; .&nbsp; 8B85 84FEFFFF mov eax,dword ptr ss:[ebp-17C]<br />
0055BF2A&nbsp;&nbsp; .&nbsp; E8 B1D9EAFF&nbsp;&nbsp; call unpack.004098E0<br />
0055BF2F&nbsp;&nbsp; .&nbsp; 69C0 B1040000 imul eax,eax,4B1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 假序列号乘4B1<br />
0055BF35&nbsp;&nbsp; .&nbsp; 8D95 88FEFFFF lea edx,dword ptr ss:[ebp-178]<br />
0055BF3B&nbsp;&nbsp; .&nbsp; E8 8CFDFFFF&nbsp;&nbsp; call unpack.0055BCCC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 关键CALL<br />
0055BF40&nbsp;&nbsp; .&nbsp; 8B95 88FEFFFF mov edx,dword ptr ss:[ebp-178]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 真注册码到EDX<br />
0055BF46&nbsp;&nbsp; .&nbsp; 58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pop eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 假注册码到EAX<br />
0055BF47&nbsp;&nbsp; .&nbsp; E8 A490EAFF&nbsp;&nbsp; call unpack.00404FF0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 比较<br />
0055BF4C&nbsp;&nbsp; .&nbsp; 0F85 F3000000 jnz unpack.0055C045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 跳就失败，爆破点</p>
<p>跟进0055BCCC处的关键CALL，如下：<br />
0055BCCC&nbsp; /$&nbsp; 55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ebp<br />
0055BCCD&nbsp; |.&nbsp; 8BEC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov ebp,esp<br />
0055BCCF&nbsp; |.&nbsp; 33C9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor ecx,ecx<br />
0055BCD1&nbsp; |.&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ecx<br />
0055BCD2&nbsp; |.&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ecx<br />
0055BCD3&nbsp; |.&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ecx<br />
0055BCD4&nbsp; |.&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ecx<br />
0055BCD5&nbsp; |.&nbsp; 53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ebx<br />
0055BCD6&nbsp; |.&nbsp; 56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push esi<br />
0055BCD7&nbsp; |.&nbsp; 8BF2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov esi,edx<br />
0055BCD9&nbsp; |.&nbsp; 8BD8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov ebx,eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 序列号*4B1的值转EBX，设为变量a<br />
0055BCDB&nbsp; |.&nbsp; 33C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor eax,eax<br />
0055BCDD&nbsp; |.&nbsp; 55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push ebp<br />
0055BCDE&nbsp; |.&nbsp; 68 9CBD5500&nbsp;&nbsp; push unpack.0055BD9C<br />
0055BCE3&nbsp; |.&nbsp; 64:FF30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push dword ptr fs:[eax]<br />
0055BCE6&nbsp; |.&nbsp; 64:8920&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dword ptr fs:[eax],esp<br />
0055BCE9&nbsp; |.&nbsp; 81F3 F1250B00 xor ebx,0B25F1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a与0B25F1异或<br />
0055BCEF&nbsp; |.&nbsp; 8BC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,ebx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a送EAX<br />
0055BCF1&nbsp; |.&nbsp; 33D2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor edx,edx<br />
0055BCF3&nbsp; |.&nbsp; 52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push edx<br />
0055BCF4&nbsp; |.&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push eax<br />
0055BCF5&nbsp; |.&nbsp; 8D45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,[local.1]<br />
0055BCF8&nbsp; |.&nbsp; E8 AFDBEAFF&nbsp;&nbsp; call unpack.004098AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a转成10进制数<br />
0055BCFD&nbsp; |.&nbsp; 8B45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,[local.1]<br />
0055BD00&nbsp; |.&nbsp; 0FB600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movzx eax,byte ptr ds:[eax]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a第一位送EAX<br />
0055BD03&nbsp; |.&nbsp; 8B55 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov edx,[local.1]<br />
0055BD06&nbsp; |.&nbsp; 0FB652 01&nbsp;&nbsp;&nbsp;&nbsp; movzx edx,byte ptr ds:[edx+1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a第二位送EDX<br />
0055BD0A&nbsp; |.&nbsp; 03C2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add eax,edx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 第一位和第二位的ascii码相加<br />
0055BD0C&nbsp; |.&nbsp; B9 05000000&nbsp;&nbsp; mov ecx,5<br />
0055BD11&nbsp; |.&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cdq<br />
0055BD12&nbsp; |.&nbsp; F7F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; idiv ecx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a除以5<br />
0055BD14&nbsp; |.&nbsp; 80C2 34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add dl,34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 余数加上34，存为S2<br />
0055BD17&nbsp; |.&nbsp; 8855 F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov byte ptr ss:[ebp-8],dl<br />
0055BD1A&nbsp; |.&nbsp; 8B45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,[local.1]<br />
0055BD1D&nbsp; |.&nbsp; 0FB640 02&nbsp;&nbsp;&nbsp;&nbsp; movzx eax,byte ptr ds:[eax+2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a第3位送EAX<br />
0055BD21&nbsp; |.&nbsp; 8B55 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov edx,[local.1]<br />
0055BD24&nbsp; |.&nbsp; 0FB652 03&nbsp;&nbsp;&nbsp;&nbsp; movzx edx,byte ptr ds:[edx+3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; a第4位送EDX<br />
0055BD28&nbsp; |.&nbsp; 03C2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add eax,edx<br />
0055BD2A&nbsp; |.&nbsp; B9 05000000&nbsp;&nbsp; mov ecx,5<br />
0055BD2F&nbsp; |.&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cdq<br />
0055BD30&nbsp; |.&nbsp; F7F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; idiv ecx<br />
0055BD32&nbsp; |.&nbsp; 8BDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov ebx,edx<br />
0055BD34&nbsp; |.&nbsp; 80C3 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add bl,33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 加33<br />
0055BD37&nbsp; |.&nbsp; 885D F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov byte ptr ss:[ebp-7],bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 存为S3<br />
0055BD3A&nbsp; |.&nbsp; 8D45 F4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,[local.3]<br />
0055BD3D&nbsp; |.&nbsp; 8A55 F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dl,byte ptr ss:[ebp-8]<br />
0055BD40&nbsp; |.&nbsp; E8 8F90EAFF&nbsp;&nbsp; call unpack.00404DD4<br />
0055BD45&nbsp; |.&nbsp; 8B45 F4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,[local.3]<br />
0055BD48&nbsp; |.&nbsp; 8D55 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea edx,[local.1]<br />
0055BD4B&nbsp; |.&nbsp; B9 1B000000&nbsp;&nbsp; mov ecx,1B<br />
0055BD50&nbsp; |.&nbsp; E8 3794EAFF&nbsp;&nbsp; call unpack.0040518C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 将a连接S2<br />
0055BD55&nbsp; |.&nbsp; 8D45 F0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,[local.4]<br />
0055BD58&nbsp; |.&nbsp; 8BD3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov edx,ebx<br />
0055BD5A&nbsp; |.&nbsp; E8 7590EAFF&nbsp;&nbsp; call unpack.00404DD4<br />
0055BD5F&nbsp; |.&nbsp; 8B45 F0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,[local.4]<br />
0055BD62&nbsp; |.&nbsp; 8D55 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea edx,[local.1]<br />
0055BD65&nbsp; |.&nbsp; B9 19000000&nbsp;&nbsp; mov ecx,19<br />
0055BD6A&nbsp; |.&nbsp; E8 1D94EAFF&nbsp;&nbsp; call unpack.0040518C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 将a连接S3<br />
0055BD6F&nbsp; |.&nbsp; 8BC6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov eax,esi<br />
0055BD71&nbsp; |.&nbsp; 8B55 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov edx,[local.1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp; 真注册码送EDX<br />
0055BD74&nbsp; |.&nbsp; E8 CF8EEAFF&nbsp;&nbsp; call unpack.00404C48<br />
0055BD79&nbsp; |.&nbsp; 33C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xor eax,eax<br />
0055BD7B&nbsp; |.&nbsp; 5A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pop edx<br />
0055BD7C&nbsp; |.&nbsp; 59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pop ecx<br />
0055BD7D&nbsp; |.&nbsp; 59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pop ecx<br />
0055BD7E&nbsp; |.&nbsp; 64:8910&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov dword ptr fs:[eax],edx<br />
0055BD81&nbsp; |.&nbsp; 68 A3BD5500&nbsp;&nbsp; push unpack.0055BDA3<br />
0055BD86&nbsp; |&gt;&nbsp; 8D45 F0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,[local.4]<br />
0055BD89&nbsp; |.&nbsp; BA 02000000&nbsp;&nbsp; mov edx,2<br />
0055BD8E&nbsp; |.&nbsp; E8 858EEAFF&nbsp;&nbsp; call unpack.00404C18<br />
0055BD93&nbsp; |.&nbsp; 8D45 FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,[local.1]<br />
0055BD96&nbsp; |.&nbsp; E8 598EEAFF&nbsp;&nbsp; call unpack.00404BF4<br />
0055BD9B&nbsp; \.&nbsp; C3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retn</p>
<p><br />
一组正确的注册码：<br />
序列号：88888<br />
注册码：10641927364</p>
<p><br />
总结一下算法：<br />
将输入的序列号(A*4B1) XOR B25F1，再算出十进制B。取B的1、2位ASCII码相加除以5取余数加34，为B1。取B的3、4位ASCII码相加除以5取余数加33，为B2，连接B、B1、B2，即为注册码。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=245</link>
			<category domain="http://vod.bpxx.com/?cid=10">初学破解</category>
			<pubDate>2009-12-31 20:52</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=244</guid>
			<title>OD常用断点</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 用到下面的这些断点，可以省下很多的事情，也许有的朋友会说这些断点是怎么来的呢这些断点都是前人在破解中发现的一些相当于捷径吧，也许有人会说这些断点怎么用呢，怎么去判断用哪个断点呢，打个比方吧，我们在破解程序的时候处输入假的注册码，点确定，他如果弹出个窗口说注册码不正确，那我们就可这是个消息框的，我们就可以下消息框的断点MessageBoxA，然后运行程序，alt+F9返回，就可以了。</p>
<p>下面是一些常用断点(OD中)</p>
<p>拦截窗口：<br />
CreateWindow 创建窗口<br />
CreateWindowEx(A) 创建窗口<br />
ShowWindow 显示窗口<br />
UpdateWindow 更新窗口<br />
GetWindowText(A) 获取窗口文本</p>
<p>拦截消息框：<br />
MessageBox(A) 创建消息框<br />
MessageBoxExA 创建消息框<br />
MessageBoxIndirect(A) 创建定制消息框<br />
IsDialogMessageW</p>
<p>拦截警告声：<br />
MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)</p>
<p>拦截对话框：<br />
DialogBox 创建模态对话框<br />
DialogBoxParam(A) 创建模态对话框<br />
DialogBoxIndirect 创建模态对话框<br />
DialogBoxIndirectParam(A) 创建模态对话框<br />
CreateDialog 创建非模态对话框<br />
CreateDialogParam(A) 创建非模态对话框<br />
CreateDialogIndirect 创建非模态对话框<br />
CreateDialogIndirectParam(A) 创建非模态对话框<br />
GetDlgItemText(A) 获取对话框文本 作用是得指定输入框输入字符串<br />
GetDlgItemInt 获取对话框整数值</p>
<p>拦截剪贴板：<br />
GetClipboardData 获取剪贴板数据</p>
<p>拦截注册表：<br />
RegOpenKey(A) 打开子健<br />
RegOpenKeyEx 打开子健<br />
RegQueryValue(A) 查找子健<br />
RegQueryValueEx 查找子健<br />
RegSetValue(A) 设置子健<br />
RegSetValueEx(A) 设置子健</p>
<p>功能限制拦截断点：<br />
EnableMenuItem 禁止或允许菜单项<br />
EnableWindow 禁止或允许窗口</p>
<p>拦截时间：<br />
GetLocalTime 获取本地时间<br />
GetSystemTime 获取系统时间<br />
GetFileTime 获取文件时间<br />
GetTickCount 获得自系统成功启动以来所经历的毫秒数<br />
GetCurrentTime 获取当前时间（16位）<br />
SetTimer 创建定时器<br />
TimerProc 定时器超时回调函数<br />
GetDlgItemInt 得指定输入框整数值<br />
GetDlgItemText 得指定输入框输入字符串<br />
GetDlgItemTextA 得指定输入框输入字符串</p>
<p>拦截文件：<br />
CreateFileA 创建或打开文件 (32位)<br />
OpenFile 打开文件 (32位)<br />
ReadFile 读文件 (32位)<br />
WriteFile 写文件 (32位)<br />
GetModuleFileNameA<br />
GetFileSize<br />
Setfilepointer<br />
fileopen<br />
FindFirstFileA<br />
ReadFile</p>
<p>拦截驱动器：<br />
GetDriveTypeA 获取磁盘驱动器类型<br />
GetLogicalDrives 获取逻辑驱动器符号<br />
GetLogicalDriveStringsA 获取当前所有逻辑驱动器的根驱动器路径</p>
<p>★★VB程序专用断点★★</p>
<p>文件长度：RtcFileLen<br />
__vbaFreeStr 对付VB程序重启验证<br />
__vbaStrCmp 比较字符串是否相等<br />
__vbaStrComp 比较字符串是否相等<br />
__vbaVarTstNe 比较变量是否不相等<br />
__vbaVarTstEq 比较变量是否相等<br />
__vbaStrCopy 复制字符串<br />
__vbaStrMove 移动字符串<br />
MultiByteToWideChar ANSI字符串转换成Unicode字符串<br />
WideCharToMultiByte Unicode字符串转换成ANSI字符串</p>
<p>=============== ================</p>
<p>密码常用中断<br />
Hmemcpy (win9x专用)<br />
GetDlgItemTextA<br />
GetDlgItemInt<br />
vb:<br />
getvolumeinformationa 　</p>
<p>vbastrcomp (trw)<br />
Bpx __vbaStrComp (记得是两个 '_')<br />
MSVBVM60!_vbastrcomp|sofice<br />
MSVBVM50! |　</p>
<p>VBAI4STR　</p>
<p>Ctrl+D<br />
bpx msvbvm60!__vbastrcomp do &quot;d *(esp+0c)&quot;(softice)<br />
按几次F5出册码出来了。<br />
bpx regqueryvalueexa do &quot;d esp－&gt;8&quot;(trw)　</p>
<p>vbaVarTstEq 判断是否注册的函数<br />
(0042932F 66898580FEFFFF mov word ptr [ebp+FFFFFE80], ax<br />
改为0042932F 66898580FEFFFF mov word ptr [ebp+FFFFFE80], bx)</p>
<p>时间常用中断<br />
GetSystemTime<br />
GetLocalTime<br />
GetTickCount<br />
vb:<br />
rtcGetPresentDate //取得当前日期　</p>
<p>杀窗常用中断<br />
Lockmytask (win9x专用)<br />
ExitProcess 退出进程<br />
DestroyWindow<br />
mouse_event (鼠标中断)<br />
postquitmessage (Cracking足彩xp,很有用^_^)<br />
vb:<br />
_rtcMsgBox　</p>
<p>ini文件内容常用中断<br />
GetPrivateProfileStringA<br />
GetPrivateProfileProfileInt　</p>
<p>key文件:<br />
getprivateprofileint<br />
ReadFile<br />
CreateFileA　</p>
<p>注册表常用中断<br />
RegQueryvalueA<br />
RegQueryvalueExA　</p>
<p>狗加密中断<br />
BPIO -h 278 R<br />
BPIO -h 378 R 　</p>
<p>其它常用函数断点<br />
CreateFileA (读狗驱动程序),<br />
DeviceIOControl,<br />
FreeEnvironmentStringsA (对付HASP非常有效).<br />
Prestochangoselector (16-bit HASP's), '7242' 查找字符串 (对付圣天诺).具体含义参考下面的范例。　</p>
<p>光盘破解中断<br />
16:<br />
getvolumeinformation<br />
getdrivetype<br />
int 2fh (dos)<br />
32:<br />
GetDriveTypeA<br />
GetFullPathNameA<br />
GetWindowsDirectoryA　</p>
<p>读磁盘中断<br />
GETLASTERROR 返回扩充出错代码 　</p>
<p>限制中断<br />
EnableMenuItem 允许、禁止或变灰指定的菜单条目<br />
EnableWindow 允许或禁止鼠标和键盘控制指定窗口和条目（禁止时菜单变灰） 　</p>
<p>不知道软盘中断是什么了？还有其它特殊中断，不知道其他朋友可否说一下了？<br />
如ockmytask and mouse_event，这些就不是api32函数？<br />
win9x 与 win2k进行破解，以上中断有部分已经不能用了？<br />
不知道在win2k上，以上常用中断函数是什么了？<br />
也就是问密码、时间、窗口、ini、key、注册表、加密狗、光盘、软盘、限制等！<br />
了解常用的中断，对破解分析可以做到事半功倍！<br />
请大家说一下！还有如何破解了某个软件时，一重启就打回原形？<br />
不知道下什么中断了？可以分为三种情况：<br />
1.比较可能在注册表中<br />
2.比较在特殊文件(*.key *.ini *.dat等)<br />
3.比较在程序中，没有任何错误提示或者反译也找不到明显字符(这个就是我想问的)　</p>
<p>还有一个是最难的，就是去掉水印！<br />
也可以三种情况：<br />
A.水印是位图文件(bitblt,creatBITMAP等位图函数)<br />
B.水印是明显字符(反译分析)<br />
C.水印不是明显字符(如：This a demo!它只是显示在另一个制作文件上,可是*.htm *.exe等)<br />
C.才是最难搞，也是很多人想知道的！包括我在内。不知道高手们有何提示了？　</p>
<p>广告条：<br />
可以分两种情况:<br />
A.从创建窗口进手,可以用到movewindow或者其它窗口函数!<br />
B.从位图进手,也可以用到bitblt或者其它位图函数!<br />
最后可以借助一些现有工具(如:api27,vwindset,freespy之类的工具)　</p>
<p>那要看是在哪作的标记，通常是在注册表中留下信息！<br />
在softice中就要用bpx regqueryvalueexa do &quot;d esp-&gt;8&quot;来中断看看，<br />
在trw中要用bpx regqueryvalueexa do &quot;d*(esp+8)&quot;来中断看看。<br />
还有的是在本目录下留下注册信息，常见的有.dat .ini .dll等等，<br />
我是用bpx readfile来中断的，还有的是在windows目录下留下注册信息。<br />
你可以借助专用的工具帮助你查看，入filemon等！ 　</p>
<p>vb:　</p>
<p>1、__vbaVarTstNe //比较两个变量是否不相等<br />
2、rtcR8ValFromBstr //把字符串转换成浮点数<br />
3、rtcMsgBox 显示一信息对话框<br />
4、rtcBeep //让扬声器叫唤<br />
5、rtcGetPresentDate //取得当前日期 　</p>
<p>针对字串:<br />
__vbaStrComp<br />
__vbaStrCmp<br />
__vbaStrCompVar<br />
__vbaStrLike<br />
__vbaStrTextComp<br />
__vbaStrTextLike<br />
针对变量:<br />
__vbaVarCompEq<br />
__vbaVarCompLe<br />
__vbaVarCompLt<br />
__vbaVarCompGe<br />
__vbaVarCompGt<br />
__vbaVarCompNe</p>
<p>VB的指针:<br />
THROW 　</p>
<p>VB DLL还调用了oleauto32.dll中的部分函数。oleauto32.dll是个通用的proxy/stub DLL，其每个函数的原型在&lt;oleauto.h&gt;中定义，并在MSDN中有详细描述。这也有助于理解VB DLL中的函数的作用。 　</p>
<p>举例： 　</p>
<p>LEA EAX, [EBP-58]<br />
PUSH EAX<br />
CALL [MSVBVM60!__vbaI4Var] 　</p>
<p>执行call之前敲dd eax+8，得到的值为3；<br />
执行完call之后，eax = 3<br />
从而可知__vbaI4Var的作用是将一个VARIANT转换为I4（即一个长整数）。　</p>
<p>__vbaVarTstNe似乎是用来进行自校验的，正常情况下返回值为0。<br />
已知适用的软件有：网络三国智能机器人、音乐贺卡厂。当这两个软件被脱壳后都回出错，网络三国智能机器人会产生非法*作，而音乐贺卡厂会告诉你是非法拷贝，通过修改__vbaVarTstNe的返回值都可让它们正常运行。<br />
所以当您遇到一个VB软件，脱壳后无法正常运行，而又找不出其它问题时，可试试拦截这个函数，说不定会有用哦。8-）　</p>
<p>API不太知道,也许可以通过BIOS在98平台上读写扇区,不过在2000/NT下可以通过内黑ATAPI,HAL写扇区<br />
machoman[CCG]<br />
bpx WRITE_PORT_BUFFER_USHORT<br />
NT/2000下这个断点,当edx=1f0h,时,可以看见EDI地址内数据为扇区位置数据,必须先 在winice.dat 中装入hal.sys 详细内容看ATAPI手册 　</p>
<p>补充篇:<br />
关于对VB程序和时间限制程序的断点<br />
CrackerABC<br />
先给出修改能正确反编译VB程序的W32DASM的地址：<br />
======================<br />
offsets 0x16B6C-0x16B6D 　</p>
<p>修改机器码为： 98 F4<br />
====================== 　</p>
<p>VB程序的跟踪断点： 　</p>
<p>============<br />
MultiByteToWideChar,<br />
rtcR8ValFromBstr,<br />
WideCharToMultiByte,<br />
__vbaStrCmp<br />
__vbaStrComp<br />
__vbaStrCopy<br />
__vbaStrMove<br />
__vbaVarTstNe<br />
rtcBeep<br />
rtcGetPresentDate (时间API)<br />
rtcMsgBox<br />
========= 　</p>
<p>时间限制断点： 　</p>
<p>================<br />
CompareFileTime<br />
GetLocalTime<br />
GetSystemTime<br />
GetTimeZoneInformation<br />
msvcrt.diffTime()<br />
msvcrt.Time()<br />
================ 　</p>
<p>一般处理</p>
<p>bpx hmemcpy<br />
bpx MessageBox<br />
bpx MessageBoxExA<br />
bpx MessageBeep<br />
bpx SendMessage　</p>
<p>bpx GetDlgItemText<br />
bpx GetDlgItemInt<br />
bpx GetWindowText<br />
bpx GetWindowWord<br />
bpx GetWindowInt<br />
bpx DialogBoxParamA<br />
bpx CreateWindow<br />
bpx CreateWindowEx<br />
bpx ShowWindow<br />
bpx UpdateWindow　</p>
<p>bmsg xxxx wm_move<br />
bmsg xxxx wm_gettext<br />
bmsg xxxx wm_command<br />
bmsg xxxx wm_activate 　</p>
<p>时间相关<br />
bpint 21 if ah==2A (DOS)<br />
bpx GetLocalTime<br />
bpx GetFileTime<br />
bpx GetSystemtime 　</p>
<p>CD-ROM 或 磁盘相关<br />
bpint 13 if ah==2 (DOS)<br />
bpint 13 if ah==3 (DOS)<br />
bpint 13 if ah==4 (DOS)<br />
bpx GetFileAttributesA<br />
bpx GetFileSize<br />
bpx GetDriveType<br />
bpx GetLastError<br />
bpx ReadFile<br />
bpio -h (Your CD-ROM Port Address) R 　</p>
<p>软件狗相关<br />
bpio -h 278 R<br />
bpio -h 378 R 　</p>
<p>键盘输入相关<br />
bpint 16 if ah==0 (DOS)<br />
bpint 21 if ah==0xA (DOS) 　</p>
<p>文件访问(自校验）相关<br />
bpint 21 if ah==3dh (DOS)<br />
bpint 31 if ah==3fh (DOS)<br />
bpint 21 if ah==3dh (DOS)<br />
bpx ReadFile<br />
bpx WriteFile<br />
bpx CreateFile<br />
bpx GetFileSize<br />
bpx SetFilePointer<br />
bpx GetSystemDirectory 　</p>
<p>INI 初始化文件相关<br />
bpx GetPrivateProfileString<br />
bpx GetPrivateProfileInt<br />
bpx WritePrivateProfileString<br />
bpx WritePrivateProfileInt 　</p>
<p>注册表相关<br />
bpx RegCreateKey<br />
bpx RegDeleteKey<br />
bpx RegQueryvalue<br />
bpx RegCloseKey<br />
bpx RegOpenKey 　</p>
<p>注册标志相关<br />
bpx cs:eip if EAX==0 　</p>
<p>内存标准相关<br />
bpmb cs:eip rw if 0x30:0x45AA==0 　</p>
<p>显示相关<br />
bpx 0x30:0x45AA do &quot;d 0x30:0x44BB&quot;<br />
bpx CS:0x66CC do &quot;? EAX&quot;</p>
<p>查找窗口<br />
FindWindowA</p>
<p>SetFilePointer</p>
<p>bpx hmemcpy ;破解万能断点，拦截内存拷贝动作(注意：Win9x专用断点)<br />
bpx Lockmytask ;当你用其它断点都无效时可以试一下，这个断点拦截按键的动作(Win9x专用)</p>
<p>实在找不到断点可以试下面的方法：</p>
<p>bmsg handle wm_gettext ;拦截注册码（handle为对应窗口的句柄）<br />
bmsg handle wm_command ;拦截OK按钮（handle为对应窗口的句柄）</p>
<p>拦截窗口：</p>
<p>bpx CreateWindow ;创建窗口<br />
bpx CreateWindowEx(A/W) ;创建窗口<br />
bpx ShowWindow ;显示窗口<br />
bpx UpdateWindow ;更新窗口<br />
bpx GetWindowText(A/W) ;获取窗口文本</p>
<p>拦截消息框：</p>
<p>bpx MessageBox(A/W) ;创建消息框<br />
bpx MessageBoxExA(W) ;创建消息框<br />
bpx MessageBoxIndirect(A/W) ;创建定制消息框</p>
<p>拦截警告声：</p>
<p>bpx MessageBeep ;发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)</p>
<p>拦截对话框：</p>
<p>bpx DialogBox ;创建模态对话框<br />
bpx DialogBoxParam(A/W) ;创建模态对话框<br />
bpx DialogBoxIndirect ;创建模态对话框<br />
bpx DialogBoxIndirectParam(A/W) ;创建模态对话框<br />
bpx CreateDialog ;创建非模态对话框<br />
bpx CreateDialogParam(A/W) ;创建非模态对话框<br />
bpx CreateDialogIndirect ;创建非模态对话框<br />
bpx CreateDialogIndirectParam(A/W) ;创建非模态对话框<br />
bpx GetDlgItemText(A/W) ;获取对话框文本<br />
bpx GetDlgItemInt ;获取对话框整数值</p>
<p>拦截剪贴板：</p>
<p>bpx GetClipboardData ;获取剪贴板数据</p>
<p>拦截注册表：</p>
<p>bpx RegOpenKey(A/W) ;打开子健 ( 例：bpx RegOpenKey(A) if *(esp-&gt;8)=='****' )<br />
bpx RegOpenKeyExA(W) ;打开子健 ( 例：bpx RegOpenKeyEx if *(esp-&gt;8)=='****' )<br />
bpx RegQueryValue(A/W) ;查找子健 ( 例：bpx RegQueryValue(A) if *(esp-&gt;8)=='****' )<br />
bpx RegQueryValueEx(A/W) ;查找子健 ( 例：bpx RegQueryValueEx if *(esp-&gt;8)=='****' )<br />
bpx RegSetValue(A/W) ;设置子健 ( 例：bpx RegSetValue(A) if *(esp-&gt;8)=='****' )<br />
bpx RegSetValueEx(A/W) ;设置子健 ( 例：bpx RegSetValueEx(A) if *(esp-&gt;8)=='****' )</p>
<p>注意:'****'为指定子键名的前4个字符，如子键为'Regcode'，则'****'= 'Regc'</p>
<p>功能限制拦截断点：</p>
<p>bpx EnableMenuItem ;禁止或允许菜单项<br />
bpx EnableWindow ;禁止或允许窗口<br />
bmsg hMenu wm_command ;拦截菜单按键事件，其中hMenu为菜单句柄<br />
bpx K32Thk1632Prolog ;配合bmsg hMenu wm_command使用，可以通过这个断点进入菜单处理程序<br />
应用示例：<br />
CALL [KERNEL32!K32Thk1632Prolog]<br />
CALL [......] &lt;-- 由此跟踪进入菜单处理程序<br />
CALL [KERNEL32!K32Thk1632Epilog]</p>
<p>拦截时间：</p>
<p>bpx GetLocalTime ;获取本地时间<br />
bpx GetSystemTime ;获取系统时间<br />
bpx GetFileTime ;获取文件时间<br />
bpx GetTickCount ;获得自系统成功启动以来所经历的毫秒数<br />
bpx GetCurrentTime ;获取当前时间（16位）<br />
bpx SetTimer ;创建定时器<br />
bpx TimerProc ;定时器超时回调函数</p>
<p>拦截文件：</p>
<p>bpx CreateFileA(W) ;创建或打开文件 (32位)<br />
bpx OpenFile ;打开文件 (32位)<br />
bpx ReadFile ;读文件 (32位)<br />
bpx WriteFile ;写文件 (32位)<br />
bpx _lcreat ;创建或打开文件 (16位)<br />
bpx _lopen ;打开文件 (16位)<br />
bpx _lread ;读文件 (16位)<br />
bpx _lwrite ;写文件 (16位)<br />
bpx _hread ;读文件 (16位)<br />
bpx _hwrite ;写文件 (16位)</p>
<p>拦截驱动器：</p>
<p>bpx GetDrivetype(A/W) ;获取磁盘驱动器类型<br />
bpx GetLogicalDrives ;获取逻辑驱动器符号<br />
bpx GetLogicalDriveStringsA(W) ;获取当前所有逻辑驱动器的根驱动器路径</p>
<p>拦截狗：</p>
<p>bpio -h 378(或278、3BC) R ;378、278、3BC是并行打印端口<br />
bpio -h 3F8(或2F8、3E8、2E8) R ;3F8、2F8、3E8、2E8是串行端口</p>
<p>VB程序专用断点：</p>
<p>bpx msvbvm60!rtcMsgBox<br />
bpx msvbvm60!__vbaStrCmp<br />
bpx msvbvm60!__vbaStrComp<br />
bpx msvbvm60!__vbaStrCompVar<br />
bpx msvbvm60!__vbaStrTextCmp<br />
bpx msvbvm60!__vbaFileOpen<br />
bpx msvbvm60!__vbaInputFile<br />
bpx msvbvm60!__vbaFileSeek<br />
bpx msvbvm60!__vbaWriteFile<br />
bpx msvbvm60!__vbaFileClose<br />
bpx msvbvm60!rtcFileAttributes<br />
bpx msvbvm60!rtcFileDateTime<br />
bpx msvbvm60!rtcFileLen<br />
bpx msvbvm60!rtcFileLength<br />
bpx msvbvm60!__vbaVarInt<br />
bpx msvbvm60!__vbaVarCmpGe<br />
bpx msvbvm60!__vbaVarCmpGt<br />
bpx msvbvm60!__vbaVarCmpLe<br />
bpx msvbvm60!__vbaVarCmpLt<br />
bpx msvbvm60!__vbaVarCmpNe<br />
bpx msvbvm60!__vbaVarTextCmpEq<br />
bpx msvbvm60!__vbaVarTextCmpGe<br />
bpx msvbvm60!__vbaVarTextCmpGt<br />
bpx msvbvm60!__vbaVarTextCmpLe<br />
bpx msvbvm60!__vbaVarTextCmpLt<br />
bpx msvbvm60!__vbaVarTextCmpNe<br />
bpx msvbvm60!__vbaVarTextTstEq<br />
bpx msvbvm60!__vbaVarTextTstGe<br />
bpx msvbvm60!__vbaVarTextTstGt<br />
bpx msvbvm60!__vbaVarTextTstLe<br />
bpx msvbvm60!__vbaVarTextTstLt<br />
bpx msvbvm60!__vbaVarTextTstNe<br />
bpx msvbvm60!__vbaVarTstEq<br />
bpx msvbvm60!__vbaVarTstGe<br />
bpx msvbvm60!__vbaVarTstGt<br />
bpx msvbvm60!__vbaVarTstLe<br />
bpx msvbvm60!__vbaVarTstLt<br />
bpx msvbvm60!__vbaVarTstNe</p>
<p>注意：VB程序仍然可以使用普通API函数，只要函数&ldquo;最终&rdquo;CALL了这个函数<br />
上面的断点对应VB6程序，如果是VB5程序则将msvbvm60改成msvbvm50即可</p>
<p>bpx hmemcpy 破解万能断点，拦截内存拷贝动作 (注意：Win9x专用断点，XP无效)<br />
bpx Lockmytask 当你用其它断点都无效时可以试一下，这个断点拦截按键的动作</p>
<p>实在找不到断点可以试下面的方法：<br />
bmsg handle wm_gettext 拦截注册码（handle为对应窗口的句柄）<br />
bmsg handle wm_command 拦截OK按钮（handle为对应窗口的句柄）</p>
<p>拦截窗口：</p>
<p>bpx CreateWindow 创建窗口<br />
bpx CreateWindowEx(A/W) 创建窗口<br />
bpx ShowWindow 显示窗口<br />
bpx UpdateWindow 更新窗口<br />
bpx GetWindowText(A/W) 获取窗口文本</p>
<p>拦截消息框：</p>
<p>bpx MessageBox(A) 创建消息框<br />
bpx MessageBoxExA 创建消息框<br />
bpx MessageBoxIndirect(A) 创建定制消息框</p>
<p>拦截警告声：</p>
<p>bpx MessageBeep 发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)</p>
<p>拦截对话框：</p>
<p>bpx DialogBox 创建模态对话框<br />
bpx DialogBoxParam(A/W) 创建模态对话框<br />
bpx DialogBoxIndirect 创建模态对话框<br />
bpx DialogBoxIndirectParam(A/W) 创建模态对话框<br />
bpx CreateDialog 创建非模态对话框<br />
bpx CreateDialogParam(A) 创建非模态对话框<br />
bpx CreateDialogIndirect 创建非模态对话框<br />
bpx CreateDialogIndirectParam(A/W) 创建非模态对话框<br />
bpx GetDlgItemText(A/W) 获取对话框文本<br />
bpx GetDlgItemInt 获取对话框整数值</p>
<p>拦截剪贴板：</p>
<p>bpx GetClipboardData 获取剪贴板数据</p>
<p>拦截注册表：</p>
<p>bpx RegOpenKey(A) 打开子健 ( 例：bpx RegOpenKey(A) if *(esp+8)=='****' )<br />
bpx RegOpenKeyEx 打开子健 ( 例：bpx RegOpenKeyEx if *(esp+8)=='****' )<br />
bpx RegQueryValue(A) 查找子健 ( 例：bpx RegQueryValue(A) if *(esp+8)=='****' )<br />
bpx RegQueryValueEx 查找子健 ( 例：bpx RegQueryValueEx if *(esp+8)=='****' )<br />
bpx RegSetValue(A) 设置子健 ( 例：bpx RegSetValue(A) if *(esp+8)=='****' )<br />
bpx RegSetValueEx(A) 设置子健 ( 例：bpx RegSetValueEx(A) if *(esp+8)=='****' )<br />
注意:&ldquo;****&rdquo;为指定子键名的前4个字符，如子键为&ldquo;Regcode&rdquo;，则&ldquo;****&rdquo;= &ldquo;Regc&rdquo;</p>
<p>==================</p>
<p>功能限制拦截断点：</p>
<p>bpx EnableMenuItem 禁止或允许菜单项<br />
bpx EnableWindow 禁止或允许窗口<br />
bmsg hMenu wm_command 拦截菜单按键事件，其中hMenu为菜单句柄<br />
bpx K32Thk1632Prolog 配合bmsg hMenu wm_command使用，可以通过这个断点进入菜单处理程序</p>
<p>应用示例：</p>
<p>CALL [KERNEL32!K32Thk1632Prolog]<br />
CALL [......] &lt;-- 由此跟踪进入菜单处理程序<br />
CALL [KERNEL32!K32Thk1632Epilog]</p>
<p>======================</p>
<p>拦截时间：</p>
<p>bpx GetLocalTime 获取本地时间<br />
bpx GetSystemTime 获取系统时间<br />
bpx GetFileTime 获取文件时间<br />
bpx GetTickCount 获得自系统成功启动以来所经历的毫秒数<br />
bpx GetCurrentTime 获取当前时间（16位）<br />
bpx SetTimer 创建定时器<br />
bpx TimerProc 定时器超时回调函数</p>
<p>拦截文件：</p>
<p>bpx CreateFileA 创建或打开文件 (32位)<br />
bpx OpenFile 打开文件 (32位)<br />
bpx ReadFile 读文件 (32位)<br />
bpx WriteFile 写文件 (32位)<br />
bpx _lcreat 创建或打开文件 (16位)<br />
bpx _lopen 打开文件 (16位)<br />
bpx _lread 读文件 (16位)<br />
bpx _lwrite 写文件 (16位)<br />
bpx _hread 读文件 (16位)<br />
bpx _hwrite 写文件 (16位)</p>
<p>拦截驱动器：</p>
<p>bpx GetDrivetype(A/W) 获取磁盘驱动器类型<br />
bpx GetLogicalDrives 获取逻辑驱动器符号<br />
bpx GetLogicalDriveStringsA(W) 获取当前所有逻辑驱动器的根驱动器路径</p>
<p>拦截狗：</p>
<p>bpio -h 378(或278、3BC) R 378、278、3BC是并行打印端口<br />
bpio -h 3F8(或2F8、3E8、2E8) R 3F8、2F8、3E8、2E8是串行端口</p>
<p>+++++++++++VB程序专用断点：++++++++++</p>
<p>bp__vbaFreeStr 偶发现了VB杀手断点.不管是重起验证.还是有错误提示的VB..下这个断点通杀</p>
<p>bpx msvbvm50!__vbaStrCmp 比较字符串是否相等<br />
bpx msvbvm50!__vbaStrComp 比较字符串是否相等<br />
bpx msvbvm50!__vbaVarTstNe 比较变量是否不相等<br />
bpx msvbvm50!__vbaVarTstEq 比较变量是否相等<br />
bpx msvbvm50!__vbaStrCopy 复制字符串<br />
bpx msvbvm50!__vbaStrMove 移动字符串<br />
bpx MultiByteToWideChar ANSI字符串转换成Unicode字符串<br />
bpx WideCharToMultiByte Unicode字符串转换成ANSI字符串<br />
上面的断点对应VB5程序，如果是VB6程序则将msvbvm50改成msvbvm60即可</p>
<p>VB程序的破解</p>
<p>VB程序使很多朋友感到头痛，主要是VB程序反编译时产生大量的垃圾代码，而且也找不到有<br />
用的信息，在动态调试过程中，垃圾代码太多，往往迷失于冗余的代码中，找不到方向。　　　记住VB常用的</p>
<p>一些函数：<br />
MultiByteToWideChar 将ANSI字符串转换成UNICODE字符<br />
WideCHatToMultiByte　　将UNICODE字符转换成ANSI字符<br />
rtcT8ValFromBstr　　　 把字符转换成浮点数　　<br />
vbaStrCmp　　　　　　　 比较字符串（常用断点）<br />
vbaStrComp　　　　　　 字符串比较（常用断点）<br />
vbaStrCopy　　　　　　 复制字符串<br />
StrConv　　　　　　　　转换字符串<br />
vbaStrMove　　　　　　 移动字符串<br />
__vbaVarCat 连接字符串<br />
rtcMidCharVar 在字符串中取字符或者字符串!<br />
__vbaLenBstr 取字符串的长度<br />
vbaVarTstNe　　　　　　变量比较<br />
vbaVarTstEq　　　　　　变量比较<br />
rtcMsgBox　　　　　　　显示对话框<br />
VarBstrCmp　　　　　　 比较字符串<br />
VarCyCmp　　　　　　　 比较字符串<br />
　　<br />
甲壳虫会员必看 点击浏览 <br />
UID42012 帖子264 精华0 积分847 交易币0&nbsp; 虫虫币102&nbsp; 阅读权限40 在线时间79 小时 最后登录2009-12-21 查看详细资料<br />
&nbsp;TOP <br />
&nbsp;</p>
<p><br />
meishenm <br />
团长</p>
<p>&nbsp;</p>
<p>帖子264 积分847 虫虫币102&nbsp; 参与度262&nbsp; 贡献值0&nbsp; 阅读权限40 在线时间79 小时 发短消息 加为好友 当前离线&nbsp; 2# 大 中 小 发表于 2009-12-12 10:24&nbsp; 只看该作者 用OD载入脱壳后的程序，在命令行输入：bpx hmemcpy，然后回车，会弹出程序运行调用的所有的函数，在每个</p>
<p>函数上设置好断点！说明：我破VB程序喜欢用这个断点设置方法，通过一步步跟踪，基本可以把握程序保护的</p>
<p>思路，所以我破VB程序基本用这个断点，当然你可以用其它的断点，只要能找到关键，任何断点都是用意义的</p>
<p>。</p>
<p>关于VB的程序，注册没有提示的二个办法：<br />
第一（提示错误）：用GetVBRes来替换里面的提示串，一般是以&lsquo;111111&rsquo;，&lsquo;222222&rsquo;之类的替换<br />
因为：VB，用的字来存放提示还有加了点东东，我们用的工具一般是字节分析。换成&lsquo;22222&rsquo;之类的就是字节</p>
<p>了，用静态分析，就有你该的串了。GetVBRes（网上很多，自己下吧）</p>
<p>第二（没有提示）：用vbde这个工具（不知道，有没有用过DEDE，是一样思路），主要是找出破解的按钮窗口</p>
<p>的位置，来进行跟踪。</p>
<p>先给出修改能正确反编译VB程序的W32DASM的地址：<br />
======================<br />
offsets 0x16B6C-0x16B6D</p>
<p>修改机器码为： 98 F4<br />
======================</p>
<p>VB程序的跟踪断点：</p>
<p>============<br />
MultiByteToWideChar,<br />
rtcR8ValFromBstr,<br />
WideCharToMultiByte,<br />
__vbaStrCmp<br />
__vbaStrComp<br />
__vbaStrCopy<br />
__vbaStrMove<br />
__vbaVarTstNe<br />
rtcBeep<br />
rtcGetPresentDate (时间API)<br />
rtcMsgBox<br />
=========</p>
<p>时间限制断点：</p>
<p>================<br />
CompareFileTime<br />
GetLocalTime<br />
GetSystemTime<br />
GetTimeZoneInformation<br />
msvcrt.diffTime()<br />
msvcrt.Time()<br />
================</p>
<p>VB断点查找方法</p>
<p>1，VB6.0编写，OD载入程序调出注册窗口，alt+e调出可执行模块窗口找到X:\WINDOWS\system32\MSVBVM60.DLL<br />
双击，在ctrl+n调出窗口找到，名称XXXXXXE区段=ENGINE 导出__vbaVarMove双击来到下面地址(可以直接在命</p>
<p>令行 __vbaVarMove)<br />
回到程序注册窗口点注册被拦断在刚才下断的地址，断后在ctrl+F9，F8回<br />
2，OD载入程序，命令行下断点。<br />
rtcMsgBox<br />
堆栈友好提示<br />
确定注册失败按钮返回。接着向上找出点注册按钮执行的代码第一句，可以吗？当然行，根据我们知道程序员</p>
<p>写一个事件执行的代码是如这种，<br />
各种语言都差不多。<br />
3，OD载入程序，命令行下断点。<br />
rtcMsgBox<br />
任意填入伪注册码 9999999999999999999<br />
确定后中断<br />
堆栈友好提示<br />
确定注册失败按钮返回。<br />
W32Dasm反汇编程序，Shiht+F12<br />
4，VB中的messagebox是一个消息框,汇编中用rtcMsgBox下断点.用olldbg载入程序,Alt+e,在可执行文件模块中</p>
<p>找到Msvbvm60.dll,双击它,<br />
在代码窗口点右键-搜索-当前模块中的名称中的rtcMsgBox函数,双击它,在6A362F29 55 PUSH EBP这一句双击下</p>
<p>断点,关掉多余的窗口,只留下<br />
cpu调试主窗口,F9运行程序,点?号按钮,随便输入987654321后,回车后立即中断,然后Ctrt+f9执行到返回地址,</p>
<p>因为这是msvbvm60的领空,<br />
我们要回到程序领空.秘密记事本弹出message错误提示信息,点确定,向上看 ,再按F8就回到<br />
5，为Microsoft Visual Basic 6.0。先用SmartCheck找到程序比较注册码点，<br />
6，用vb常用比较断点<br />
vbastrcmp<br />
vbastrcomp<br />
vbavartsteq<br />
在od中设断点找注册码<br />
7，用Od载入程序，运行，填入上面的注册码和顺序号。在Od中下断点,Alt+E,双击Msvbvm60运行库，右键－搜</p>
<p>索当前模块中的名称，找到Vbastrcmp，双击下断点。</p>
<p>--------------------------</p>
<p>注意：VB程序仍然可以使用普通API函数，只要函数&ldquo;最终&rdquo;CALL了这个函数<br />
上面的断点对应VB6程序，如果是VB5程序则将msvbvm60改成msvbvm50即可</p>
<p>★注意：上面所列函数末尾有带&ldquo;A&rdquo;的，有带&ldquo;W&rdquo;的，有不带后缀的；一般说来，如果函数同时可以有后缀</p>
<p>也可以没有后缀（形如：MessageBox(A/W)）， 则不带后缀的表示16位的函数（MessageBox），带后缀的</p>
<p>（MessageBoxA、MessageBoxW）表示32位的函数；通常优先使用带后缀（A或W）的断点，带A后缀的一般用于</p>
<p>WIN9X系统， 而带W后缀的一般用于NT系统；如果函数没有任何后缀，则表示这是个通用的跨平台的API函数。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=244</link>
			<category domain="http://vod.bpxx.com/?cid=10">初学破解</category>
			<pubDate>2009-12-30 15:20</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=243</guid>
			<title>贴一个软件的注册码</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 注册码：7878787-bek]LEA-7878787<br />
&nbsp;&nbsp;&nbsp; 是什么软件呢？我知道，你不知道。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=243</link>
			<category domain="http://vod.bpxx.com/?cid=10">初学破解</category>
			<pubDate>2009-12-21 08:43</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=242</guid>
			<title>8088 汇编速查手册</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>8088 汇编速查手册 <br />
&nbsp;<br />
　　一、数据传输指令 <br />
　　二、算术运算指令 <br />
　　三、逻辑运算指令 <br />
　　四、串指令 <br />
　　五、程序转移指令 <br />
　　六、伪指令</p>
<p>8088 汇编速查手册</p>
<p>一、数据传输指令 <br />
─────────────────────────────────────── <br />
　　它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. <br />
　　1. 通用数据传送指令. <br />
　　　　MOV 传送字或字节. <br />
　　　　MOVSX　 先符号扩展,再传送. <br />
　　　　MOVZX　 先零扩展,再传送. <br />
　　　　PUSH　　把字压入堆栈. <br />
　　　　POP　　 把字弹出堆栈. <br />
　　　　PUSHA　 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. <br />
　　　　POPA　　把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. <br />
　　　　PUSHAD　把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. <br />
　　　　POPAD　 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. <br />
　　　　BSWAP　 交换32位寄存器里字节的顺序 <br />
　　　　XCHG　　交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) <br />
　　　　CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) <br />
　　　　XADD　　先交换再累加.( 结果在第一个操作数里 ) <br />
　　　　XLAT　　字节查表转换. <br />
　　　　　　　　── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 <br />
　　　　　　　　0-FFH); 返回 AL 为查表结果. ( [BX+AL]-&gt;AL )</p>
<p>　　2. 输入输出端口传送指令. <br />
　　　　IN　　　I/O端口输入. ( 语法: IN 累加器, ) <br />
　　　　OUT　　 I/O端口输出. ( 语法: OUT ,累加器 ) <br />
　　　　输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535. <br />
　　　　 <br />
　　3. 目的地址传送指令. <br />
　　　　LEA　　装入有效地址. <br />
　　　　例: LEA DX,string　;把偏移地址存到DX. <br />
　　　　 <br />
　　　　LDS　　传送目标指针,把指针内容装入DS. <br />
　　　　例: LDS SI,string　;把段地址:偏移地址存到DS:SI. <br />
　　　　 <br />
　　　　LES　　传送目标指针,把指针内容装入ES. <br />
　　　　例: LES DI,string　;把段地址:偏移地址存到ES:DI. <br />
　　　　 <br />
　　　　LFS　　传送目标指针,把指针内容装入FS. <br />
　　　　例: LFS DI,string　;把段地址:偏移地址存到FS:DI. <br />
　　　　 <br />
　　　　LGS　　传送目标指针,把指针内容装入GS. <br />
　　　　例: LGS DI,string　;把段地址:偏移地址存到GS:DI. <br />
　　　　 <br />
　　　　LSS　　传送目标指针,把指针内容装入SS. <br />
　　　　例: LSS DI,string　;把段地址:偏移地址存到SS:DI. <br />
　　　　 <br />
　　4. 标志传送指令. <br />
　　　　LAHF　　标志寄存器传送,把标志装入AH. <br />
　　　　SAHF　　标志寄存器传送,把AH内容装入标志寄存器. <br />
　　　　PUSHF　 标志入栈. <br />
　　　　POPF　　标志出栈. <br />
　　　　PUSHD　 32位标志入栈. <br />
　　　　POPD　　32位标志出栈.</p>
<p>二、算术运算指令 <br />
─────────────────────────────────────── <br />
　　　　ADD　　 加法. <br />
　　　　ADC　　 带进位加法. <br />
　　　　INC　　 加 1. <br />
　　　　AAA　　 加法的ASCII码调整. <br />
　　　　DAA　　 加法的十进制调整. <br />
　　　　SUB　　 减法. <br />
　　　　SBB　　 带借位减法. <br />
　　　　DEC　　 减 1. <br />
　　　　NEC　　 求反(以 0 减之). <br />
　　　　CMP　　 比较.(两操作数作减法,仅修改标志位,不回送结果). <br />
　　　　AAS　　 减法的ASCII码调整. <br />
　　　　DAS　　 减法的十进制调整. <br />
　　　　MUL　　 无符号乘法. <br />
　　　　IMUL　　整数乘法. <br />
　　　　以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算). <br />
　　　　 <br />
　　　　AAM　　 乘法的ASCII码调整. <br />
　　　　DIV　　 无符号除法. <br />
　　　　IDIV　　整数除法. <br />
　　　　以上两条,结果回送: <br />
　　　　商回送AL,余数回送AH, (字节运算); 或商回送AX,余数回送DX, (字运算). <br />
　　　　 <br />
　　　　AAD　　 除法的ASCII码调整. <br />
　　　　CBW　　 字节转换为字. (把AL中字节的符号扩展到AH中去) <br />
　　　　CWD　　 字转换为双字. (把AX中的字的符号扩展到DX中去) <br />
　　　　CWDE　　字转换为双字. (把AX中的字符号扩展到EAX中去) <br />
　　　　CDQ　　 双字扩展.　　 (把EAX中的字的符号扩展到EDX中去)</p>
<p>三、逻辑运算指令 <br />
─────────────────────────────────────── <br />
　　　　AND　　与运算. <br />
　　　　OR　　 或运算. <br />
　　　　XOR　　异或运算. <br />
　　　　NOT　　取反. <br />
　　　　TEST　 测试.(两操作数作与运算,仅修改标志位,不回送结果). <br />
　　　　SHL　　逻辑左移. <br />
　　　　SAL　　算术左移.(=SHL) <br />
　　　　SHR　　逻辑右移. <br />
　　　　SAR　　算术右移.(=SHR) <br />
　　　　ROL　　循环左移. <br />
　　　　ROR　　循环右移. <br />
　　　　RCL　　通过进位的循环左移. <br />
　　　　RCR　　通过进位的循环右移. <br />
　　　　以上八种移位指令,其移位次数可达255次. <br />
　　　　移位一次时, 可直接用操作码.　如 SHL AX,1. <br />
　　　　移位&gt;1次时, 则由寄存器CL给出移位次数. <br />
　　　　如　　　MOV CL,04 <br />
　　　　　　　　SHL AX,CL</p>
<p>四、串指令 <br />
─────────────────────────────────────── <br />
　　　　DS:SI　 源串段寄存器　:源串变址. <br />
　　　　ES:DI　 目标串段寄存器:目标串变址. <br />
　　　　CX　　　重复次数计数器. <br />
　　　　 <br />
　　　　AL/AX　 扫描值. <br />
　　　　D标志　 0表示重复操作中SI和DI应自动增量; 1表示应自动减量. <br />
　　　　Z标志　 用来控制扫描或比较操作的结束. <br />
　　　　 <br />
　　　　MOVS　　串传送. <br />
　　　　( MOVSB　传送字符. MOVSW　传送字.　MOVSD　传送双字. ) <br />
　　　　 <br />
　　　　CMPS　　串比较. <br />
　　　　( CMPSB　比较字符. CMPSW　比较字. ) <br />
　　　　 <br />
　　　　SCAS　　串扫描. <br />
　　　　把AL或AX的内容与目标串作比较,比较结果反映在标志位. <br />
　　　　 <br />
　　　　LODS　　装入串. <br />
　　　　把源串中的元素(字或字节)逐一装入AL或AX中. <br />
　　　　( LODSB　传送字符.　　LODSW　传送字.　　LODSD　传送双字. ) <br />
　　　　 <br />
　　　　STOS　　保存串. <br />
　　　　是LODS的逆过程. <br />
　　　　 <br />
　　　　REP　　　　　　 当CX/ECX&lt;&gt;0时重复. <br />
　　　　REPE/REPZ　　　 当ZF=1或比较结果相等,且CX/ECX&lt;&gt;0时重复. <br />
　　　　REPNE/REPNZ　　 当ZF=0或比较结果不相等,且CX/ECX&lt;&gt;0时重复. <br />
　　　　REPC　　　　　　当CF=1且CX/ECX&lt;&gt;0时重复. <br />
　　　　REPNC　　　　　 当CF=0且CX/ECX&lt;&gt;0时重复.</p>
<p>五、程序转移指令 <br />
─────────────────────────────────────── <br />
　　　1&gt;无条件转移指令 (长转移) <br />
　　　　JMP　　　　　　 无条件转移指令 <br />
　　　　CALL　　　　　　过程调用 <br />
　　　　RET/RETF　　　　过程返回. <br />
　　　　 <br />
　　　2&gt;条件转移指令 (短转移,-128到+127的距离内) <br />
　　　 ( 当且仅当(SF XOR OF)=1时,OP1　　 <br />
　　　　JA/JNBE　　　　 不小于或不等于时转移. <br />
　　　　JAE/JNB　　　　 大于或等于转移. <br />
　　　　JB/JNAE　　　　 小于转移. <br />
　　　　JBE/JNA　　　　 小于或等于转移. <br />
　　　　以上四条,测试无符号整数运算的结果(标志C和Z). <br />
　　　　 <br />
　　　　JG/JNLE 大于转移. <br />
　　　　JGE/JNL 大于或等于转移. <br />
　　　　JL/JNGE 小于转移. <br />
　　　　JLE/JNG 小于或等于转移. <br />
　　　　以上四条,测试带符号整数运算的结果(标志S,O和Z). <br />
　　　　 <br />
　　　　JE/JZ　　　　　 等于转移. <br />
　　　　JNE/JNZ　　　　 不等于时转移. <br />
　　　　JC　　　　　　　有进位时转移. <br />
　　　　JNC　　　　　　 无进位时转移. <br />
　　　　JNO　　　　　　 不溢出时转移. <br />
　　　　JNP/JPO　　　　 奇偶性为奇数时转移. <br />
　　　　JNS　　　　　　 符号位为 &quot;0&quot; 时转移. <br />
　　　　JO　　　　　　　溢出转移. <br />
　　　　JP/JPE　　　　　奇偶性为偶数时转移. <br />
　　　　JS　　　　　　　符号位为 &quot;1&quot; 时转移. <br />
　　　　 <br />
　　3&gt;循环控制指令(短转移) <br />
　　　　LOOP　　　　　　CX不为零时循环. <br />
　　　　LOOPE/LOOPZ　　 CX不为零且标志Z=1时循环. <br />
　　　　LOOPNE/LOOPNZ　 CX不为零且标志Z=0时循环. <br />
　　　　JCXZ　　　　　　CX为零时转移. <br />
　　　　JECXZ　　　　　 ECX为零时转移. <br />
　　　　 <br />
　　4&gt;中断指令 <br />
　　　　INT　　　　　　 中断指令 <br />
　　　　INTO　　　　　　溢出中断 <br />
　　　　IRET　　　　　　中断返回 <br />
　　　　 <br />
　　5&gt;处理器控制指令 <br />
　　　　HLT　　　　　　 处理器暂停, 直到出现中断或复位信号才继续. <br />
　　　　WAIT　　　　　　当芯片引线TEST为高电平时使CPU进入等待状态. <br />
　　　　ESC　　　　　　 转换到外处理器. <br />
　　　　LOCK　　　　　　封锁总线. <br />
　　　　NOP　　　　　　 空操作. <br />
　　　　STC　　　　　　 置进位标志位. <br />
　　　　CLC　　　　　　 清进位标志位. <br />
　　　　CMC　　　　　　 进位标志取反. <br />
　　　　STD　　　　　　 置方向标志位. <br />
　　　　CLD　　　　　　 清方向标志位. <br />
　　　　STI　　　　　　 置中断允许位. <br />
　　　　CLI　　　　　　 清中断允许位.</p>
<p>六、伪指令 <br />
─────────────────────────────────────── <br />
　　　　DW　　　　　　　定义字(2字节). <br />
　　　　PROC　　　　　　定义过程. <br />
　　　　ENDP　　　　　　过程结束. <br />
　　　　SEGMENT　　　　 定义段. <br />
　　　　ASSUME　　　　　建立段寄存器寻址. <br />
　　　　ENDS　　　　　　段结束. <br />
　　　　END　　　　　　 程序结束.　&nbsp;</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=242</link>
			<category domain="http://vod.bpxx.com/?cid=10">初学破解</category>
			<pubDate>2009-12-19 18:49</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=241</guid>
			<title>[转]D-link DES1228交换机Vlan配置</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; Dlink des 1228这款交换机是处于智能和非智能交换机之间的一款二层交换机，出厂固件为1.00.07是不支持vlan的，但是刷新到最新版本1.10.12就可以支持vlan了。<br />
&nbsp;&nbsp;&nbsp; 升级到最新本版后可以在configuration里面看到IEEE 802.1Q VLAN，点击进入IEEE 802.1Q Asymmetric VLAN Configuration。<br />
&nbsp;&nbsp;&nbsp; 1、首先要启用Asymmetric VLAN （不对称Vlan），很简单，点一下enabled就可以了；<br />
&nbsp;&nbsp;&nbsp;&nbsp;<div class="attach"><a href="http://vod.bpxx.com/attachment.php?id=174" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200912/thumb_a1a5f1a4ef63f992342560959e712943.jpg" border="0" alt="&#13;&#13;大小: 104.76 K&#13;尺寸: 500 x 357&#13;浏览: 24 次&#13;点击打开新窗口浏览全图" width="500" height="357" /></a></div><br />
&nbsp;&nbsp;&nbsp; 2、里面的default（默认）vlan1不要理会它，放着不动就可以了；<br />
&nbsp;&nbsp;&nbsp; 3、新建一个vlan，vlan号随便，这款交换机支持256个vlan，对于小单位足够用了。选择要接入这个vlan的端口，还有上联端口（上网用），以及内部的DNS、mail等服务器接口，不然就上不了网，或者登陆不了内部的mail服务器。上面的图显示就是27，28端口为上联口（我们单位有两个出口光纤），20，21为内部DNS服务器接口；<br />
&nbsp;&nbsp;&nbsp; 4、各个VLAN中所选择的接口都选择untag；<br />
&nbsp;&nbsp;&nbsp;&nbsp;<div class="attach"><a href="http://vod.bpxx.com/attachment.php?id=175" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200912/thumb_af2584069f39f108766241a7a739d98e.jpg" border="0" alt="&#13;&#13;大小: 51.03 K&#13;尺寸: 500 x 148&#13;浏览: 9 次&#13;点击打开新窗口浏览全图" width="500" height="148" /></a></div><br />
&nbsp;&nbsp;&nbsp; 5、端口选择好后要设置PVID，遵循一下原则：所有公共端口（就是上联接口、内部大家都要访问的接口，譬如上面说道的DNS服务器）都写1，所有接入Vlan的接口写对应的Vlan号，这里一定要设置正确，尤其是公共端口，错了就上不了网。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<div class="attach"><a href="http://vod.bpxx.com/attachment.php?id=176" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200912/thumb_0159e7cc99e77b24374644ed4362ad78.jpg" border="0" alt="&#13;&#13;大小: 29.12 K&#13;尺寸: 500 x 76&#13;浏览: 6 次&#13;点击打开新窗口浏览全图" width="500" height="76" /></a></div><br />
&nbsp;&nbsp;&nbsp; 好了，测试一下，看看不同vlan之间还能不能ping通，不同？！要的就是不通，不然怎么叫Vlan，哈哈。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=241</link>
			<category domain="http://vod.bpxx.com/?cid=7">服务器管理及网站制作</category>
			<pubDate>2009-12-19 18:46</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=240</guid>
			<title>为新版智能铃声系统征集新功能！</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 最近单位工作非常忙，因此智能铃声系统的新版一直没有能开始。如果有用户看我的博客，麻烦留言提一些建议或意见。<br />
&nbsp;&nbsp;&nbsp; 本次更新准备全面重写程序，设想的一些功能如下：<br />
&nbsp;&nbsp;&nbsp; 1、设置文件采用XML，方便以后扩展。<br />
&nbsp;&nbsp;&nbsp; 2、修改播放核心，支持更多音频格式。<br />
&nbsp;&nbsp;&nbsp; 3、增加在线升级功能。<br />
&nbsp;&nbsp;&nbsp; 4、当日音乐列表前有选择框，不选择则不播放，代替原来的暂停播放功能。<br />
&nbsp;&nbsp;&nbsp; 5、远程控制功能升级，支持远程控制更多功能。<br />
&nbsp;&nbsp;&nbsp; 6、快捷键自定义。<br />
&nbsp;&nbsp;&nbsp; 7、优化功放控制功能，支持多分区。<br />
&nbsp;&nbsp;&nbsp; &hellip;&hellip;</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=240</link>
			<category domain="http://vod.bpxx.com/?cid=1">原创软件</category>
			<pubDate>2009-12-10 19:14</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=239</guid>
			<title>在Delphi中注册系统级热键</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>unit Unit1;<br />
interface<br />
uses<br />
&nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;</p>
<p>type<br />
&nbsp;TForm1 = class(TForm)<br />
&nbsp; procedure FormCreate(Sender: TObject);<br />
&nbsp; procedure FormDestroy(Sender: TObject);<br />
private<br />
&nbsp; procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;<br />
&nbsp; { Private declarations }<br />
public<br />
&nbsp; { Public declarations }<br />
end;</p>
<p>var<br />
&nbsp;Form1: TForm1;</p>
<p>implementation<br />
{$R *.dfm}</p>
<p>var<br />
&nbsp;HotKeyId: array[0..12] of Integer; //热键数组, 这里准备定义 13 个热键</p>
<p>procedure TForm1.FormCreate(Sender: TObject);<br />
var<br />
&nbsp;i: Integer;<br />
begin<br />
//注册热键<br />
for i := Low(HotKeyId) to High(HotKeyId) do<br />
&nbsp;HotKeyId[i] := GlobalAddAtom(PChar(IntToStr(i))); //热键命名可随意<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[0],0,VK_F2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //F2<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[1],0,VK_UP);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Up<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[2],0,VK_DOWN);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Down<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[3],0,VK_LEFT);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Left<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[4],0,VK_RIGHT);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Right<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[5],0,VK_PRIOR);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //PageUp<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[6],0,VK_NEXT);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //PageDown<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[7],0,VK_OEM_PLUS);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //+<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[8],0,VK_OEM_MINUS);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //-<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[9],0,$31);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //1<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[10],0,$41);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //a<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[11],0,VK_RETURN);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Enter<br />
&nbsp;RegisterHotKey(Handle,HotKeyId[12],MOD_CONTROL,VK_RETURN); //Ctrl+Enter<br />
end;</p>
<p>//热键<br />
procedure TForm1.WMHotKey(var Msg: TWMHotKey);<br />
begin<br />
&nbsp;if Msg.HotKey = HotKeyId[0] then ShowMessage('F2');<br />
&nbsp;if (Msg.HotKey=HotKeyId[1]) then ShowMessage('Up');<br />
&nbsp;if (Msg.HotKey=HotKeyId[2]) then ShowMessage('Down');<br />
&nbsp;if (Msg.HotKey=HotKeyId[3]) then ShowMessage('Left');<br />
&nbsp;if (Msg.HotKey=HotKeyId[4]) then ShowMessage('Right');<br />
&nbsp;if Msg.HotKey = HotKeyId[5] then ShowMessage('PageUp');<br />
&nbsp;if Msg.HotKey = HotKeyId[6] then ShowMessage('PageDown');<br />
&nbsp;if Msg.HotKey = HotKeyId[7] then ShowMessage('+');<br />
&nbsp;if Msg.HotKey = HotKeyId[8] then ShowMessage('-');<br />
&nbsp;if Msg.HotKey = HotKeyId[9] then ShowMessage('1');<br />
&nbsp;if Msg.HotKey = HotKeyId[10] then ShowMessage('a');<br />
&nbsp;if Msg.HotKey = HotKeyId[11] then ShowMessage('Enter');<br />
&nbsp;if Msg.HotKey = HotKeyId[12] then ShowMessage('Ctrl+Enter');<br />
end;<br />
&nbsp;<br />
procedure TForm1.FormDestroy(Sender: TObject);<br />
var<br />
&nbsp;i: Integer;<br />
begin<br />
//注销热键<br />
for i := Low(HotKeyId) to High(HotKeyId) do<br />
begin<br />
&nbsp;&nbsp; UnRegisterHotKey(handle,HotKeyId[i]);<br />
&nbsp;&nbsp; GlobalDeleteAtom(HotKeyId[i]);<br />
end;<br />
end;</p>
<p>end.</p>
<p>//附：<br />
//HotKeyId := GlobalAddAtom('MyHotKey') - $C000; 注: HotKeyId合法取的范围是0x0000到0xBFFF之间<br />
//GlobalAddAtom得到值 在0xC000到0xFFFF的间所以减掉0xC000来满足要求 <br />
//RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8); <br />
<b style="color: black; background-color: #a0ffff">//热键</b>辅助按键包括Mod_Ctrl ,Mod_Alt,Mod_Sht,对于Windows兼容键盘还支持Windows 键即其键面上有Windows标志那个键其值为Mod_win <br />
//上面 代码注册了个<b style="color: black; background-color: #a0ffff">热键</b>:ALT+F8当然如果你希望象TAKEIT那样只用F8, 就这么写: <br />
//RegisterHotKey(Handle, hotkeyid, 0, VK_F8); <br />
//注:handle是个特殊变量它表示当前窗口句柄</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=239</link>
			<category domain="http://vod.bpxx.com/?cid=4">Delphi</category>
			<pubDate>2009-11-18 21:08</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=238</guid>
			<title>[科学课件]食物的消化</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 最近制作的小学科学课件《食物的消化》。</p><br /><br /><b>图片附件(缩略图):</b><br /><a href="http://vod.bpxx.com/attachment.php?id=171" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200911/thumb_c2c8b816d0555ee70b3ce4b6b4ab1009.jpg" border="0" alt="大小: 33.98 K&#13;尺寸: 500 x 386&#13;浏览: 10 次&#13;点击打开新窗口浏览全图" width="500" height="386" /></a><br /><br /><b>图片附件(缩略图):</b><br /><a href="http://vod.bpxx.com/attachment.php?id=172" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200911/thumb_c38f82cad04181e8123dd20b6048fd9f.jpg" border="0" alt="大小: 36.54 K&#13;尺寸: 500 x 384&#13;浏览: 5 次&#13;点击打开新窗口浏览全图" width="500" height="384" /></a><br /><br /><b>图片附件(缩略图):</b><br /><a href="http://vod.bpxx.com/attachment.php?id=173" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200911/thumb_5794beed37710dadd8b0fd8719a6efc7.jpg" border="0" alt="大小: 29.89 K&#13;尺寸: 500 x 381&#13;浏览: 10 次&#13;点击打开新窗口浏览全图" width="500" height="381" /></a>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=238</link>
			<category domain="http://vod.bpxx.com/?cid=2">原创课件</category>
			<pubDate>2009-11-17 22:03</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=237</guid>
			<title>奥巴马与中国青年对话：最好的使者是年轻人</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 摘要：美国总统奥巴马16日在上海科技馆发表演讲。在演讲中，奥巴马表示，最好的大使、最好的使者就是年轻人，这是我们合作的下一步，惠及两国和全世界。<br />
　　在回答学生问题时，奥巴马表示，美国可以在快轨方面向中国学习；在回答是否支持改善两岸关系的问题时，奥巴马表示我的政府全面支持一个中国的政策；在回答是否准备参加世博会的问题时，奥巴马表示他将非常乐于参加上海世博会。<br />
<br />
　　奥巴马在上海与中国青年对话：最好的使者是年轻人<br />
<br />
　　在回答如何看待获得诺贝尔和平奖时表示，得到和平奖最惊奇的就是自己，认为获得这个荣誉有点不配。在回答是否支持改善两岸关系的问题时，奥巴马表示美国非常希望继续看到两岸不断地改善关系。<br />
<br />
　　在回答互联网开放的问题时，奥巴马表示信息越是能够自由的流通，社会就变得越强，因为这样子，世界各地的公民能让自己的政府负责。<br />
<br />
　　[奥巴马]好吧，我现在请我的洪大使，现在有一个网民通过我们使馆网站提了一个问题。<br />
<br />
　　[洪博培]第一，有这么多互联网使用者的国家，有6000万写博客的人，你知道防火墙的事情吗？第二，我们是不是应该自由的使用TWITTER？<br />
<br />
　　[奥巴马]首先让我说，我从来没有使用过TWITTER.我注意到一些年轻人，他们一直很忙，有各种各样的电子器材，很笨重。但是我还是非常相信技术的作用，非常重视开放性。在信息流动方面，我认为越是能够自由的信息流通，社会就变得越强，因为这样子，世界各地的公民能让自己的政府负责，有一个问责制度，他们自己会思考，这样会有新的想法，鼓励创造性。所以我一直是坚定的支持互联网开放的使用，我是非常支持不审查内容，在美国我过去谈过，这是我们的一个传统，我也认识到不同的国家有不同的传统，但是我可以告诉各位，在美国，我们有没有受限制的使用互联网的机会，这是我们力量的来源，也应该受到鼓励的。<br />
<br />
　　但是我也应该很诚实的告诉各位，作为美国总统，有的时候我还是希望信息不是那么自由的流通，因为这样我就不需要听到人们在批评我，我认为很自然的。<br />
<br />
　　在人处于一个实力地位的时候就会想到，你为什么这样说我，你这样说是很不负责的。可是真实的情况是这样，因为在美国信息是自由的，因为在美国有很多人批评我说各种各样的事情，但我还是认为，这样才会使得我们的民族制度变得更强，使我变成一个更好的领导人，因为它迫使我听到一些我不愿意听到的意见，也迫使我审查我正在做的事情，每天都要审查，要看我是不是真的为美国人民做我能做的最好的事情。所以我认为互联网现在已经变成一个更强的工具，可以让公民来参与。<br />
<br />
　　实际上，我这次胜选，当了总统的一个原因之一我们能够动员很多年轻人，通过互联网来动员。刚开始的时候，没有人会想到我会赢，因为我们不是得到最富裕的支持者、政治上最有权利的人支持我们，可是人们通过互联网看到我们竞选，他们开始感到很兴奋，他们就组织起来成立一些竞选的活动、事件和集会，结果就产生了这些从下往上的一种行动，使我们很成功。<br />
<br />
　　这不仅在政府和政治，在企业界一样。像Google这种公司，不到20年前，它只是两个年龄跟你们差不多一样的人创业，本来是科学的实验，后来因为互联网，他们能够创造一个产业，这个产业使得全世界各地的商业发生一场革命。<br />
<br />
　　所以要不是有很自由的开放性，就像互联网所提供的开放性，那Google不会存在，所以我很支持一个做法，就是不要限制互联网的使用、接触或者像TWITTER这种信息技术，越开放越能够沟通，使全世界联系在一起。像我的两个女儿玛丽亚和娜塔莎，一个是11岁，一个是8岁，在她们的房间可以上网，通过互联网可以达到世界任何地方，可以学到她们想学的内容，这是她们巨大的力量，她们拥有这种力量，也有利于促进相互理解。<br />
<br />
　　就像我刚才所说的，技术也有负面，恐怖分子也可以通过互联网做一些以前他们做不到的事情，有一些极端分子也可以动员。当然开放性肯定要付出某种代价，这是不能否认的。可是我想好的远远多于坏的，所以还是保持开放是好的，这是我很高兴互联网也作为这个论坛的一部分。最后两个问题。<br />
<br />
　　&ldquo;美国总统奥巴马在上海与中国青年对话&rdquo;演讲全文<br />
<br />
　　你好。诸位下午好。我感到很荣幸能够有机会到上海跟你们交谈，我要感谢复旦大学的杨校长，感谢他的款待和热情的欢迎。我还想感谢我们出色的大使洪博培，他是我们两国间深厚的纽带。我不知道他刚才说什么，但是希望他说得很好。<br />
<br />
　　我今天准备这样，先做一个开场白，我真正希望做的是回答在座的问题，不但回答在座的学生问题，同时还可以从网上得到一些问题，由在座的一些学生和洪博培大使代为提问。很抱歉，我的中文远不如你们的英文，所以我期待和你们的对话。这是我首次访问中国，我看到你们博大的国家，感到很兴奋。在上海这里，我们看到了瞩目的增长，高耸的塔楼，繁忙的街道，还有企业家的精神。这些都是中国步入21世纪的迹象，让我感到赞叹。同时我也急切的要看到向我们展现中国古老的古迹，明天和后天我要到北京去看雄伟壮丽的故宫和令人叹为观止的长城，这个国度既有丰富的历史，又有对未来憧憬的信念。<br />
<br />
　　而我们两国的关系也是如此，上海在美中关系的历史中是个具有意义的重大城市，在30年前，《上海公报》打开了我们两国政府和两国人民接触交往的新的篇章。<br />
<br />
　　不过美国与这个国家的纽带可以追溯更久远的过去，追溯到美国独立的初期，乔治？华盛顿组织了皇后号的下水仪式，这个船成功前往大清王朝，华盛顿希望看到这艘船前往各地，与中国结成新的纽带。希望中国开辟新的地平线，建立新的伙伴关系。在其后的两个世纪中，历史洪流使我们两国关系向许多不同的方向发展，而即使在最动荡的方向中，我们的两国人民打造深的，甚至有戏剧性的纽带，比如美国人永远不会忘记，在二战期间，美国飞行员在中国上空被击落后，当地人民对他们的款待，中国公民冒着失去一切的危险罩着他们。<br />
<br />
　　而参加二战的老兵仍然欢迎故地重游的美国老兵，他们在那里参战。40年前，我们两国间开启了又一种联系，两国关系开始解冻，通过乒乓球的比赛解冻关系。我们两国之间有着分歧，但是我们也有着共同的人性及有着共同的好奇，就像一位乒乓球运动员一样，那时的国家就是一样，但是这个小小的开头带来了《上海公报》的问世，最终还带来了美中在1979年建交。在其后的30年我们又取得了长足的进展，1979年美中贸易只有50亿美元，现在已经超过了4000亿美元。<br />
<br />
　　贸易在许多方面影响人民的生活，比如美国电脑中许多部件，还有穿的衣服都是从中国进口的，我们向中国出口中国工业要使用的机器，这种贸易可以在太平洋两岸创造更多的就业机会，让我们的人民过上质量更高的生活。<br />
<br />
　　在需求趋于平衡的过程中，这种贸易可以是更广阔的贸易。如今我们有着积极合作和全面的关系，为我们在当前重大的全球问题上建立伙伴关系打开了大门，这些问题包括经济复苏、洁净能源的开发、制止核武器扩散以及应对气候变化。还有在亚洲及全球各地促进和平和稳定，所有这些问题我明天与胡主席会谈时都会谈到。1979年的时候，我们两国人民的联系十分有限，如今当年乒乓球运动员的好奇可以在许多领域建立的联系中都可以看到，在美国数量最多的留学生都来自中国。而在美国的学生中，学中文的人数增加了50%.我们两国有近200个友好城市，美中科学家在许多新的研究领域和发现领域进行合作，而我们两国人民都热爱篮球，姚明就是个例子。不过，此行中我不能观看上海鲨鱼队的比赛，有点遗憾。<br />
<br />
　　那么我们两国之间的这种关系给我们带来了积极的变化，这并不是偶然的，中国使得亿万人民脱贫，而这种成就是人类历史上史无前例的。而中国在全球问题中也发挥更大的作用，美国也目睹了我们经济的成长。中国有句古言，温故而知新。当然，我们过去30年中也遇到了挫折和挑战，我们的关系并不是没有困难的，没有分歧的。但是我们必须一定是对手这种想法不应该是一成不变的。由于我们两国的合作，美中两国都变得更加繁荣、更加安全。我们基于相互的利益、相互的尊重就能有成就。<br />
<br />
　　不过，这种接触的成功要取决于我们要彼此了解，要能够进行开诚布公的对话，彼此进行了解。就像当年美国乒乓球运动员所说的，我们作为人有着共同的向往，但是我们两国又不同。我认为我们两国每个国家都应该勾画出自己要走的路，中国是一个文明古国，它有着博大精深的文化。相对而言，美国是一个年轻的国家，它的文化受到来自许多不同国家移民的影响，而指导我们民主制度文件的影响，我有一个非常简单的向往，代表了一些核心的原则，就是所有的人生来平等，都有着基本的权利，而政府应当反映人们的意志，贸易应该是开放的，信息流通应当是自由的，而法律要保证这个公平。<br />
<br />
　　当然，我们的国家历史也不是没有过困难的地方，从很多方面来讲，很多年以来，我们是通过斗争来促进这些原则或者是所有的人民能够享受到，为了缔造一个更完美的联合，我们也打过一个很痛苦的内战，把一部分我们被奴役的人口释放出来，经过一段时间才能使妇女有投票权，劳工有组织权，包括来自各地的移民能够全部被接受。即使他们被解放以后，非洲裔美国人也和美国人经过一些分开的、不平等的条件，经过一段时间才争取到全面的平等权利，所有这些是不容易的。但是我们对这些核心原则的信念我们取得的进展，在最黑暗的风暴当中是作为我们的指南针。<br />
<br />
　　这是为什么林肯在内战期间站起来说过，任何一个国家以自由、以所有人类平等的原则能够长久的存在，也就是为什么金博士在林肯纪念馆的前台站起来，说我们国家要必须真正的实现我们的信念。也就是为什么来自中国或者肯尼亚的移民能够到我们的家，也是为什么一个不到50年前以前在某些地方连投票都遇到困难的人，现在就能够做到那个国家的总统。<br />
<br />
　　这就是为什么美国永远为了全世界各地的核心原则说话，我们不寻求把任何政治体制强制给任何国家，但是我们也不认为我们所支持的这些原则是我们国家所独有的，这些表达自由、宗教崇拜自由、接触信息的机会、政治的参与，我们认为这些是普世的权利，应该是所有人民能够享受到，包括少数民族和宗教的族群，不管是在中国、美国和任何国家，对于普遍权利的尊敬，作为美国对其他国家的开放态度的指导原则，我们对其他文化的尊重，我们对国际法的承诺和对未来的信念的原则。<br />
<br />
　　所有这些都是你们知道关于美国的一些情况，我们有很多要从中国学习。我们看看这个伟大城市的各地，也看看这个房间，我就相信我们两国有很重要的共同点，也就是对未来的信念，不管是美国还是中国，对现在的成就不能感到自满。虽然中国是一个古老的国家，你们也是充满信心展望未来，致力于下一代能够比这一代做的更好，除了你们不断增长的经济之外，我们很配合中国在科学和研究方面所投入的力量，包括建设的基础设施和使用的技术，中国是世界上使用互联网技术最多的国家，这就是我们很高兴互联网是今天活动的一部分，这个国家也拥有最大的机动电话网络，对新的投资保持继续增长，和应对气候变化方面有新的投资，我也希望两国加强这方面的合作。<br />
<br />
　　但是更重要是看到年轻人你们的才能、你们的献身精神、你们的梦想在21世纪实现方面会发挥很大的作用。我说过很多次，我认为世界是互相连接的，我们所做的工作，我们所建立的繁荣，我们所保护的环境，我们所追求的安全，所有这些都是共同的，而且是互相连接的，所以21世纪的实力不在零和游戏，一个国家成功不应该以另外一个国家的牺牲作为代价。这就是我们为什么不寻求遏制中国的崛起。相反，我们欢迎中国作为一个国际社会的强的、繁荣的、成功的成员。<br />
<br />
　　再回到刚才的谚语，我们应该考虑过去。在大的国家合作的时候，就比互相碰撞会取得更多得好处，这就是人类在历史上不断吸取的教训。我认为我们合作应该是超越政府间的合作，应该是以人民为基础，我们所研究的内容，我们所从事的生意，我们送获得的知识，我们所进行的体育比赛，所有这些桥梁必须是年轻人共同合作建立起来，这就是我为什么非常高兴我们要大大的宣布我们到中国学习的留学生人数，要增加到10万人。这样交流就会表现出我们是愿意致力于加强两国人民的联系，而且我是绝对有信心。对美国来说，最好的大使、最好的使者就是年轻人，他们和你们一样，很有才能，充满活力，对未来的历史还是很乐观的，这是我们合作的下一步，惠及两国和全世界。<br />
<br />
　　今天可以吸收的一个最重要的内容就是我们不断地向前推进。非常感谢。现在欢迎各位提问题。<br />
<br />
　　（以上文字根据文字直播整理）</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=237</link>
			<category domain="http://vod.bpxx.com/?cid=6">杂七杂八</category>
			<pubDate>2009-11-17 15:37</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=236</guid>
			<title>Excel 自动批量打印代码</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>Sub my_print()</p>
<p>Dim pagestart, pageend As Integer<br />
Dim pagecell As String<br />
On Error GoTo errdeal<br />
pagecell = &quot;k3&quot;<br />
pagestart = Int(InputBox(&quot;请输入需打印的起始序号,如1&quot;, , &quot;1&quot;))<br />
pageend = Int(InputBox(&quot;请输入需打印的结束序号,如50&quot;, , &quot;1&quot;))<br />
&nbsp;&nbsp;&nbsp; <br />
For i = pagestart To pageend Step 1<br />
&nbsp;&nbsp;&nbsp; Range(pagecell).Select<br />
&nbsp;&nbsp;&nbsp; ActiveCell.FormulaR1C1 = i<br />
&nbsp;&nbsp;&nbsp;&nbsp; ActiveSheet.Calculate<br />
&nbsp;&nbsp;&nbsp; ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True<br />
Next i</p>
<p>Exit Sub<br />
errdeal:<br />
End<br />
End Sub</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=236</link>
			<category domain="http://vod.bpxx.com/?cid=11">办公技巧</category>
			<pubDate>2009-11-17 15:01</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=235</guid>
			<title>几个网络专用术语的解释</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <ul>
    <li><a href="http://www.dlink.cc/51_5_zh.html">什么是802.1x协议？</a><br />
    IEEE 802.1x协议起源于802.11， 其主要目的是为了解决无线局域网用户的接入认证问题。802.1x 协议又称为基于端口的访问控制协议，可提供对802.11无线局域网和对有线以太网络的验证的网络访问权限。802.1x协议仅仅关注端口的打开与关闭，对于合法用户接入时，打开端口；对于非法用户接入或没有用户接入时，则端口处于关闭状态。IEEE 802.1x协议的体系结构主要包括三部分实体：客户端Supplicant System、认证系统Authenticator System、认证服务器Authentication Server System.（1）客户端：一般为一个用户终端系统，该终端系统通常要安装一个客户端软件，用户通过启动这个客户端软件发起IEEE 802.1x协议的认证过程。（2）认证系统：通常为支持IEEE 802.1x协议的网络设备。该设备对应于不同用户的端口有两个逻辑端口：受控（controlled Port）端口和非受控端口（uncontrolled Port）。第一个逻辑接入点（非受控端口），允许验证者和 LAN 上其它计算机之间交换数据，而无需考虑计算机的身份验证状态如何。非受控端口始终处于双向连通状态（开放状态），主要用来传递EAPOL协议帧，可保证客户端始终可以发出或接受认证。第二个逻辑接入点（受控端口），允许经验证的 LAN 用户和验证者之间交换数据。受控端口平时处于关闭状态，只有在客户端认证通过时才打开，用于传递数据和提供服务。受控端口可配置为双向受控、仅输入受控两种方式，以适应不同的应用程序。如果用户未通过认证，则受控端口处于未认证（关闭）状态，则用户无法访问认证系统提供的服务。（3）认证服务器：通常为RADIUS服务器，该服务器可以存储有关用户的信息，比如用户名和口令、用户所属的VLAN、优先级、用户的访问控制列表等。当用户通过认证后，认证服务器会把用户的相关信息传递给认证系统，由认证系统构建动态的访问控制列表，用户的后续数据流就将接接受上述参数的监管。 ...</li>
    <li><a href="http://www.dlink.cc/51_6_zh.html">什么是Radius？</a><br />
    Radius是Remote Authentication Dial In User Service的缩写，意思是远程用户拨号认证服务。Radius原本设计用于对拨号用户进行身份验证和计费，这些功能经常被电信部门所使用，我们拨号上网后收到的账单就是Radius服务器统计出来的。Radius使用一段时间后，大家发现Radius协议功能强大，使用方便且易于扩充，因此经过改进后，Radius现已成为国际通用的认证计费协议，广泛使用在普通电话上网、ADSL上网、小区宽带上网、IP电话等多种场合。有了Radius这样一个专业的认证服务器，VPN就轻松多了。VPN服务器只需成为Radius客户端，然后把VPN用户发来的身份验证凭据转发到Radius服务器，自己就可以坐等结果通知了。这样一来VPN服务器可以从身份验证工作中解脱出来，专心干好自己的本职工作。而Radius服务器也可以发挥自己的专业优势，让用户身份验证能够使用智能卡，双因子验证等高级技术。 ...</li>
    <li><a href="http://www.dlink.cc/51_11_zh.html">什么是VLAN？</a><br />
    什么是VLAN？VLAN（Virtual Local Area Network）即虚拟局域网，是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的新兴技术。IEEE于1999年颁布了用以标准化VLAN实现方案的802.1Q协议标准草案。VLAN技术允许网络管理者将一个物理的LAN逻辑地划分成不同的广播域（或称虚拟LAN，即VLAN），每一个VLAN都包含一组有着相同需求的计算机工作站，与物理上形成的LAN有着相同的属性。但由于它是逻辑地而不是物理地划分，所以同一个VLAN内的各个工作站无须被放置在同一个物理空间里，即这些工作站不一定属于同一个物理LAN网段。一个VLAN内部的广播和单播流量都不会转发到其他VLAN中，即使是两台计算机有着同样的网段，但是它们却没有相同的VLAN号，它们各自的广播流也不会相互转发,从而有助于控制流量、减少设备投资、简化网络管理、提高网络的安全性。 VLAN是为解决以太网的广播问题和安全性而提出的，它在以太网帧的基础上增加了VLAN头，用VLAN ID把用户划分为更小的工作组，限制不同工作组间的用户二层互访，每个工作组就是一个虚拟局域网。虚拟局域网的好处是可以限制广播范围，并能够形成虚拟工作组，动态管理网络。 既然VLAN隔离了广播风暴，同时也隔离了各个不同的VLAN之间的通讯，所以不同的VLAN之间的通讯是需要有路由来完成的。VLAN的优点1. 限制广播域。广播域被限制在一个VLAN内，节省了带宽，提高了网络处理能力。2. 增强局域网的安全性。不同VLAN内的报文在传输时是相互隔离的，即一个VLAN内的用户不能和其它VLAN内的用户直接通信，如果不同VLAN要进行通信，则需要通过路由器或三层交换机等三层设备。3. 灵活构建虚拟工作组。用VLAN可以划分不同的用户到不同的工作组，同一工作组的用户也不必局限于某一固定的物理范围，网络构建和维护更方便灵活。VLAN是在数据链路层的，划分子网是在网络层的，所以不同子网之间的VLAN即使是同名也不可以相互通信。VLAN的划分1.根据端口来划分VLAN许多VLAN厂商都利用交换机的端口来划分VLAN成员。被设定的端口都在同一个广播域中。例如，一个交换机的1，2，3，4，5端口被定义为虚拟网AAA，同一交换机的6，7，8端口组成虚拟网BBB。这样做允许各端口之间的通讯，并允许共享型网络的升级。但是，这种划分模式将虚拟网限制在了一台交换机上。 第二代端口VLAN技术允许跨越多个交换机的多个不同端口划分VLAN，不同交换机上的若干个端口可以组成同一个虚拟网。 以交换机端口来划分网络成员，其配置过程简单明了。因此，从目前来看，这种根据端口来划分VLAN的方式仍然是最常用的一种方式。2.根据MAC地址划分VLAN这种划分VLAN的方法是根据每个主机的MAC地址来划分，即对每个MAC地址的主机都配置它属于哪个组。这种划分VLAN方法的最大优点就是当用户物理位置移动时，即从一个交换机换到其他的交换机时，VLAN不用重新配置，所以，可以认为这种根据MAC地址的划分方法是基于用户的VLAN，这种方法的缺点是初始化时，所有的用户都必须进行配置，如果有几百个甚至上千个用户的话，配置是非常累的。而且这种划分的方法也导致了交换机执行效率的降低，因为在每一个交换机的端口都可能存在很多个VLAN组的成员，这样就无法限制广播包了。另外，对于使用笔记本电脑的用户来说，他们的网卡可能经常更换，这样，VLAN就必须不停地配置。 3.根据网络层划分VLAN这种划分VLAN的方法是根据每个主机的网络层地址或协议类型(如果支持多协议)划分的，虽然这种划分方法是根据网络地址，比如IP地址，但它不是路由，与网络层的路由毫无关系。 这种方法的优点是用户的物理位置改变了，不需要重新配置所属的VLAN，而且可以根据协议类型来划分VLAN，这对网络管理者来说很重要，还有，这种方法不需要附加的帧标签来识别VLAN，这样可以减少网络的通信量。 这种方法的缺点是效率低，因为检查每一个数据包的网络层地址是需要消耗处理时间的(相对于前面两种方法)，一般的交换机芯片都可以自动检查网络上数据包的以太网帧头，但要让芯片能检查IP帧头，需要更高的技术，同时也更费时。当然，这与各个厂商的实现方法有关。4.根据IP组播划分VLANIP 组播实际上也是一种VLAN的定义，即认为一个组播组就是一个VLAN，这种划分的方法将VLAN扩大到了广域网，因此这种方法具有更大的灵活性，而且也很容易通过路由器进行扩展，当然这种方法不适合局域网，主要是效率不高。5.基于规则的VLAN也称为基于策略的VLAN。这是最灵活的VLAN划分方法，具有自动配置的能力，能够把相关的用户连成一体，在逻辑划分上称为&ldquo;关系网络&rdquo;。网络管理员只需在网管软件中确定划分VLAN的规则（或属性），那么当一个站点加入网络中时，将会被&ldquo;感知&rdquo;，并被自己地包含进正确的VLAN中。同时，对站点的移动和改变也可自动识别和跟踪。采用这种方法，整个网络可以非常方便地通过路由器扩展网络规模。有的产品还支持一个端口上的主机分别属于不同的VLAN，这在交换机与共享式Hub共存的环境中显得尤为重要。自动配置VLAN时，交换机中软件自动检查进入交换机端口的广播信息的IP源地址，然后软件自动将这个端口分配给一个由IP子网映射成的VLAN。* 以上划分VLAN的方式中，基于端口的VLAN端口方式建立在物理层上；MAC方式建立在数据链路层上；网络层和IP广播方式建立在第三层上。 ...</li>
    <li><a href="http://www.dlink.cc/51_14_zh.html">什么是广播风暴？</a><br />
    通常广播风暴发生在 使用HUB的局域网中。一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点就是广播；由于网络拓扑的设计和连接问题，或其他原因导致广播在网段内大量复制，传播数据帧，导致网络性能下降，甚至网络瘫痪。这就是广播风暴。 其实广播风暴多是出现在以hub连接的容易产生环形连接的局域网中，如果用路由器和交换机的话，由于路由器和交换机是树形连接设计的，可以有效的防止广播风暴的产生。 但是在主干网上，路由器的主要作用是路由选择。主干网上的路由器，必须知道到达所有下层网络的路径。这需要维护庞大的路由表，并对连接状态的变化作出尽可能迅速的反应。路由器的故障将会导致严重的信息传输问题。在园区网内部，路由器的主要作用是分隔子网。随着网络规模的不断扩大，局域网演变成以高速主干和路由器连接的多个子网所组成的园区网。在其中各个子网在逻辑上独立，而路由器就是唯一能够分隔它们的设备，它负责子网间的报文转发和广播隔离，在边界上的路由器则负责与上层网络的连接。 ...</li>
    <li><a href="http://www.dlink.cc/51_15_zh.html">什么是端口聚合（TRUNK）？</a><br />
    端口聚合，又名TRUNK，就是通过配置软件的设置，将多物理连接当作一个单一的逻辑连接来处理，它允许两个交换器之间通过多个端口并行连接同时传输数据以提供更高的带宽、更大的吞吐量和可恢复性的技术。&nbsp;一般来说，两个普通交换器连接的最大带宽取决于媒介的连接速度（100BAST-TX双绞线为200M），而使用TRUNK技术可以将4个200M的端口捆绑后成为一个高达800M的连接。这一技术的优点是以较低的成本通过捆绑多端口提高带宽，而其增加的开销只是连接用的普通五类网线和多占用的端口，它可以有效地提高子网的上行速度，从而消除网络访问中的瓶颈。另外Trunk还具有自动带宽平衡，即容错功能：即使Trunk只有一个连接存在时，仍然会工作，这无形中增加了系统的可靠性。TRUNK功能比较适合于以下方面具体应用：1、TRUNK功能用于与服务器相联，给服务器提供独享的高带宽。2、TRUNK功能用于交换机之间的级联，通过牺牲端口数来给交换机之间的数据交换提供捆绑的高带宽，提高网络速度，突破网络瓶颈，进而大幅提高网络性能。3、Trunk可以提供负载均衡能力以及系统容错。由于Trunk实时平衡各个交换机端口和服务器接口的流量，一旦某个端口出现故障，它会自动把故障端口从Trunk组中撤消，进而重新分配各个Trunk端口的流量，从而实现系统容错。 ...</li>
    <li><a href="http://www.dlink.cc/51_17_zh.html">什么是端口镜像？</a><br />
    端口镜像（Port mirroring），也叫做端口扫描或端口监控功能，是在很多管理型交换机中的一个功能，其被用在一个网络交换机上来发送所有分组的拷贝，在一个交换机端口查看来监控在另一个交换机端口的网络连接。这通常被需要监控网络运输的网络设备应用，例如，一个侵入探测设备。一个网络管理员使用端口镜像作为一个诊断工具或调试特征，特别是当挡开一个攻击时。端口镜像通常有以下几种别名：●Port Mirroring 通常指允许把一个端口的流量复制到另外一个端口，同时这个端口不能再传输数据。●Monitoring Port 监控端口●Spanning Port 通常指允许把所有端口的流量复制到另外一个端口，同时这个端口不能再传输数据。●SPAN port 在 Cisco 产品中，SPAN 通常指 Switch Port ANalyzer。某些交换机的 SPAN 端口不支持传输数据。●Link Mode port这样，这些流量就可以被一个特殊的设备监控。它对发现和修理故障有很大的帮助。 ...</li>
    <li><a href="http://www.dlink.cc/51_21_zh.html">什么是虚拟堆叠？</a><br />
    虚拟堆叠是指交换机堆叠时，并不使用专门的堆叠端口和堆叠电缆，而仅使用交换机现有的Fast Ethernet端口或Giga Ethernet端口进行堆叠。这种堆叠方式实际上是一种变相的级联。不过虚拟堆叠的多台交换机在网络中可以作为一个逻辑设备进行管理，从而使网络管理变得很简单。从性能上来看，真正意义上的堆叠要优于虚拟堆叠，不过由于虚拟堆叠采用标准的Fast Ethernet或Giga Ethernet作为堆叠总线，具有易于实现、成本较低、堆叠不再局限在一个机柜之内等优点。另外，虚拟堆叠的堆叠端口还可以作为普通端口使用，有利于保护用户的投资。并且虚拟堆叠也能够提高网络传输速度。一种实现堆叠虚拟局域网的方法及系统包括步骤：a：根据相关的流特征对入端口的数据报文进行分类处理；b：根据上述分类结果对不同的流指定相应的cvid、Tpid。该系统包括：流处理单元、cvid分配单元和配置数据管理单元；所述流处理单元又包括流分类器和svid分配单元。通过本发明方法，可以对untag数据报文添加两层vlan tag，对带有vlan tag的数据报文添加cvid，实现了在不对等的网络层次上利用Q－in－Q隧道进行跨域的数据通讯。 ...</li>
    <li><a href="http://www.dlink.cc/51_22_zh.html">什么是SNMP协议？</a><br />
    SNMP的意思是简单网络管理协议（Simple Network Management Protocol）SNMP是专门设计用于在 IP 网络管理网络节点（服务器、工作站、路由器、交换机及HUBS等）的一种标准协议，它是一种应用层协议。SNMP使网络管理员能够管理网络效能，发现并解决网络问题以及规划网络增长。通过SNMP接收随机消息（及事件报告）网络管理系统获知网络出现问题。SNMP管理的网络有三个主要组成部分：管理的设备、代理和网络管理系统。管理设备是一个网络节点，包含ANMP代理并处在管理网络之中。被管理的设备用于收集并储存管理信息。通过SNMP，NMS能得到这些信息。被管理设备，有时称为网络单元，可能指路由器、访问服务器，交换机和网桥、HUBS、主机或打印机。SNMP代理是被管理设备上的一个网络管理软件模块SNMP代理拥有本地的相关管理信息，并将它们转换成与SNMP兼容的格式。NMS运行应用程序以实现监控被管理设备。此外，NMS还为网络管理提供了大量的处理程序及必须的储存资源。任何受管理的网络至少需要一个或多个NMS。目前SNMP有3种：SNMPV1、SNMPV2、SNMPV3。第1版和第2版没有太大差距，但SNMPV2是增强版本，包含了其它协议操作。与前两种相比SNMPV3则包含更多安全和远程配置。为了解决不同SNMP版本间的不兼容问题，RFC3584种定义了三者共存策略。SNMP还包括一组由 RMON、RMON2、MTB、MTB2、OCDS 及OCDS定义的扩展协议。 ...</li>
</ul>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=235</link>
			<category domain="http://vod.bpxx.com/?cid=7">服务器管理及网站制作</category>
			<pubDate>2009-11-13 12:23</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=234</guid>
			<title>PHPdisk 3.5 修改手记</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 将自己对PHPdisk 3.5 的修改记录下来，备忘。<br />
&nbsp;&nbsp;&nbsp; 1、modules\upload.inc.php，第55行，$rs = $db-&gt;fetch_one_array(&quot;select file_store_path,file_real_name from {$tpf}files where file_md5='$file_md5' and $timestamp-file_time&lt;=86400 order by file_id limit 1&quot;);，删除其中的&ldquo;and $timestamp-file_time&lt;=86400 &rdquo;，<strong>&ldquo;采用先进的文件内容分析机制，只要是相同的文件，就算文件名不一样，在服务器中只会存在一份（个人版中只对同一天的文件进行检测，商业版则对整个网盘系统的文件进行检测）&rdquo;</strong>，修改后可获得与商业版同样的效果。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=234</link>
			<category domain="http://vod.bpxx.com/?cid=7">服务器管理及网站制作</category>
			<pubDate>2009-11-11 13:42</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=233</guid>
			<title>[转]TweenLite 参数说明 中文翻译</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>ACTIONSCRIPT 语言版本: 3.0 (AS2 版也有提供)<br />
<br />
更新 及 更多文档请访问: <a href="http://www.tweenlite.com/" target="_blank" rel="external">http://www.TweenLite.com</a> (这里的链接指向 AS3 版)<br />
<br />
描述:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;缓动。 我们都在做。我们很多人都知道除了 Adobe's Tween 类之外，还有很多更好的动画引擎，（比如 Tweener）. 每种引擎都有它们各自的优缺点。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近几年，为了得到一个更紧凑的，跑得更快，效率更高的引擎，我创建了 TweenLite （我无法接受其它的一些引擎带来的文件尺寸上的负担）.它很快就融入到我的所有工作中。我告诉其它人，让大家能够从中获益，最终，我将它发布了出来。在过去的几年中，TweenLite越来越受欢迎，超乎了我的想像.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基于此，我又添加了一些新的功能，并且尽量保持这个文件的尺寸，让它小于3K。 TweenFilterLite 扩充了 TweenLite 并且加入了滤镜缓动，包含了 ColorMatrixFilter 的一些效果，比如饱和、对比、增亮、色调，甚至是着色，但文件的尺寸始终没有超过3K。与 TweenLite 的做法相似，提供有AS2版和AS3版的类包下载。<br />
&nbsp;&nbsp;&nbsp; TweenMax 比 TweenFilterLite 增加了更多的特性，包含 bezier 缓动，暂停/恢复，顺序执行等等。(见 www.TweenMax.com)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我猜你会想&ldquo;如果这个是&lsquo;轻量级的&rsquo;，那么它一定会丢掉很多特性，让我用的时候会有点担心&rdquo;。这种想法是对的，在这里缺少一些其它缓动引擎所包含的特效，但是我可以肯定的说，在过去几年我的工程（很多获奖的 flash 程序以及500强企业的项目中）中，我几乎一直都在用它，而它从没有让我失望过。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我还真没发现过我还需要其它的功能。你可以对任何的属性（包括 DisplayObject 对象的音量和颜色）使用缓动函数，内置的延迟时间，回调函数，以及传递参数给这些回调函数，甚至根据数组进行缓动，统统只在一行代码中完成。如果你需要更多的特效，你可以装上TweenFilterLite 或者 TweenMax来用用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我也从来没有发现比这个更快的引擎。不同引擎执行效率的比较，请访问 <a href="http://blog.greensock.com/tweeing-speed-test/" target="_blank" rel="external">http://blog.greensock.com/tweeing-speed-test/.</a><br />
<br />
TweenLite参数说明:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1) $ target : Object - 作为目标的对象， MovieClip或者其它对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2) $ duration : Number - 动画的时间长度（单位：秒）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3) $ vars : Object &ndash; 对象，通过属性值，来存贮各种属性参数用于缓动。（如果你使用 TweenLite.from() 方法，这里的参数表示缓动的初始值）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该对象所具有的属性：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alpha: alpha&nbsp;&nbsp;目标对象应该完成 (或开始，当使用 TweenLite.from()时)的透明度级别.如果 target.alpha 是1，当缓动被执行的时候，你指定参数为 0.5，它将把透明度从 1 缓动到 0.5.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x: 改变 MovieClip的 x 位置,把这个值设置成你希望的 MovieClip 的结束位置(如果你使用的是 TweenLite.from()这个值表示开始位置). <br />
　　　　　　　　　　　( y scaleX scaleY rotation　等属性不再重复说明）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;特别的属性 (**可选的**):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay : Number - 延迟缓动 (以秒为单位).<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ease : Function - 缓动函数. 例如，fl.motion.easing.Elastic.easeOut 函数。默认的是 Regular.easeOut函数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; easeParams : Array - 用来存贮缓动公式所需要的额外数据. 当使用 Elastic 公式并且希望控制一些额外的参数，比如放大系数和缓动时间。大多数的缓动公式是不需要参数的，因此，你不需要给其它的缓动公式传递参数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autoAlpha : Number - 用它来代替 alpha 属性，可以获得一些副加的效果，比如当 alpha 值缓动到 0时，自动将 visible 属性改为 false。当缓动开始前，autoAlpha 大于 0时，它将会把 visible 属性变成 true 。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;visible : Boolean - 在缓动结束时，想要指定 DisplayObject 的 visible 属性，请使用这个参数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; volume : Number - 对 soundTransform （MovieClip/SoundChannel/NetStream 等）对象中的volume属性（音量大小）进行缓动 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tint : Number - 改变 DisplayObject 的颜色，设置一个16进制颜色值之后，当缓动结束时，目标对象将被变成这个颜色，（如果使用的是TweenLite.from()，这个值将表示目标对象开始缓动时的颜色)。举个例子，颜色值可以设定为： 0xFF0000。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeTint : Boolean - 要移除 DisplayObject 颜色，将这个参数设成 true 。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame : Number - 将 MovieClip 缓动到指帧频。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onStart : Function - 在缓动开始时想要执行某个函数，就将函数的引用（通常是函数名）放到这里。如果缓动是带延迟的，那么在缓动开始前该函数不会被执行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onStartParams : Array - 为缓动开始时要执行的函数传递参数。(可选的)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onUpdate : Function - 缓动过程中，每次更新时调用这里指定的函数(缓动开始后，每一帧被触发一次),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onUpdateParams : Array - 给 onUpdate 参数指定的函数传递参数 (可选的)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onComplete : Function - 缓动结束时执行的函数。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onCompleteParams : Array - 给 onComplete 参数指定的函数传递参数 (可选的)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;persist : Boolean - 值为 true 时，TweenLite 实例将不会自动被系统的垃圾收集器给收走。但是当新的缓动出现时，它还是会被重写（overwritten）默认值为 false.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderOnStart : Boolean - 如果你使用带有延迟缓动的 TweenFilterLite.from() ，并且阻止缓动的渲染（rendering ）效果，直到缓动真正开始，将这个值设为 true.默认情况下该值为 false ，这会让渲染效果立即被执行，甚至是在延迟的时间还没到之前。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overwrite : int - 当前的缓动被创建以后，通过这个参数可以限制作用于同一个对象的其它缓动，可选的参数值有：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 0 (没有): 没有缓动被重写。这种模式下，运行速度是最快的，但是需要注意避免创建一些控制相同属性的缓动，否则这些缓动效果间将出现冲突。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 1 (全部): (这是默认值，除非 OverwriteManager.init() 被调用过)对于同一对象的所有缓动在创建时将会被完全的覆盖掉。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 1, {x:100, y:200});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 1, {x:300, delay:2}); //后创建的缓动将会覆盖掉先前创建的缓动，（可以起到这样的作用：缓动进行到一半时被中断，执行新的缓动 译者注）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 2 (自动): (当 OverwriteManager.init() 被执行后,会根据具体的属性值进行选择)只覆盖对同一属性的缓动。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 1, {x:100, y:200});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 1, {x:300}); //only&nbsp;&nbsp;&quot;x&quot; 属性的缓动将被覆盖<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 3 (同时发生): 缓动开始时，覆盖全部的缓动。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 1, {x:100, y:200});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 1, {x:300, delay:2}); //不会覆盖先前的缓动，因为每二个缓动开始时，第一个缓动已经结束了。<br />
<br />
举例: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将实例名为 &quot;clip_mc&quot; 的 MovieClip 透明度降到 50% (0.5) ，并将它 x 轴位置移动到 120 ，将音量将到 0，缓动总共用时 1.5 秒，代码如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import gs.TweenLite;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(clip_mc, 1.5, {alpha:0.5, x:120, volume:0});<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果希望使用更高级的缓动函数在 5 内，将 alpha 变到 0.5，将 x 移动 到 120 ，使用 &quot;easeOutBack&quot; 弹性函数，缓动整体延迟 2 秒发生，并且在缓动结束时，执行 &quot;onFinishTween&quot; 函数，并且为这个函数传递几个参数，(一个数值 5 以及对 clip_mc 的引用)，代码如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import gs.TweenLite;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import fl.motion.easing.Back;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(clip_mc, 5, {alpha:0.5, x:120, ease:Back.easeOut, delay:2, onComplete: onFinishTween, onCompleteParams:[5, clip_mc]});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function onFinishTween(argument1:Number, argument2:MovieClip):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trace(&quot;The tween has finished! argument1 = &quot; + argument1 + &quot;, and argument2 = &quot; + argument2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你的舞台上的 MovieClip 已经停在了它的结束位置，你只想让它花上5秒种回到这个位置，(只需要改变 y 属性，比当前位置高 100 像素的位置，让它从那里下落), 代码如下（这次使用的是 TweenLite.from 译者注):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import gs.TweenLite;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import fl.motion.easing.Elastic;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.from(clip_mc, 5, {y:&quot;-100&quot;, ease:Elastic.easeOut});<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
<br />
<br />
说明:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- TweenLite类会让你的 Flash 文件增加 3kb大小。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 给参数值加上引号，表示对指定的属性进行相应操作。比如，使用 TweenLite.to(mc, 2, {x:&quot;-20&quot;}); 它将 mc.x 向左移动 20 像素，与此相同效果的代码是：TweenLite.to(mc, 2, {x:mc.x - 20});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 你可以用别的缓动函数替换 TweenLite 默认的缓动函数: Regular.easeOut.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 必须使用 Flash Player 9 或之后版本的播放器 (ActionScript 3.0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 可以对任何 MovieClip 使用 &quot;volume&quot; 缓动,就比如：TweenLite.to(myClip_mc, 1.5, {volume:0});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 可以将 MovieClip 设定成某种颜色，使用 &quot;tint&quot; 参数,比如: TweenLite.to(myClip_mc, 1.5, {tint:0xFF0000});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 想要对数组内容进行缓动，将数值放到一个叫 endArray 的数组中即可，例如:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var myArray:Array = [1,2,3,4];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(myArray, 1.5, {endArray:[10,20,30,40]});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 可以在任何时候终止缓动，使用 TweenLite.killTweensOf(myClip_mc); 函数。如果想强制终止缓动，可以传递一个 true 做为第二个参数，比如 <br />
TweenLite.killTweensOf(myClip_mc, true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 取掉延迟回调函数，用 TweenLite.killDelayedCallsTo(myFunction_func);这项功能可以用来控制回调函数的优先级。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- 使用 TweenLite.from() 方法，可以使用对象从别的位置回到当前的位置。例如，你可以将对象在舞台上摆放整齐（缓动结束时的位置），然后利用 <br />
缓动，让它们跑到那个位置上去，你可以将缓动的初始位置值 x 或 y 或 alpha (或者其它你需要的属性)当做参数传递给这个方法函数。<br />
<br />
TweenLite 下载链接：<br />
<a href="http://www.greensock.com/ActionS" target="_blank" rel="external">http://www.greensock.com/ActionS</a> ... S3/TweenLiteAS3.zip<br />
下载下来的类包中，有一个 TweenLiteAS3_Sample_1.swf ，初学者可以用它来观察各种缓动的效果，并且直接得到相关的执行代码。算是一个可视化设计的工具，不要错过。<br />
下载到类包以后，解压缩到一个目录比如：d:\AS3Class ，在flash9 的首选参数－&gt;ActionScript-&gt;ActionScript3.0设置中添加类目录，d:\AS3Class\TweenLiteAS3 即可正确引用到相关的类。<br />
<br />
<br />
应用举例：<br />
import gs.TweenLite;<br />
import gs.easing.*;<br />
<br />
stage.addEventListener(MouseEvent.CLICK, onCK);<br />
function onCK(evt) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TweenLite.to(mc, 0.5, {x:mouseX, y:mouseY, rotation:360});<br />
}<br />
在舞台上点击，会让mc 元件旋转并跑动到鼠标位置。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=233</link>
			<category domain="http://vod.bpxx.com/?cid=15">Flash</category>
			<pubDate>2009-11-10 22:36</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=232</guid>
			<title>Windows Vista/2008/7 硬盘安装辅助工具</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 本工具通过添加引导菜单的方式来启动保存到硬盘指定位置中的安装程序。运行高效、安全、稳定，引导成功率高！不会给您的系统带来任何垃圾文件，不含任何广告内容。</p>
<p>&nbsp;&nbsp;&nbsp; 若想要卸载该引导菜单项，只需再次运行此程序即可。</p>
<p>&nbsp;&nbsp;&nbsp; 执行安装前，请先确认您已经将 Windows Vista/2008/7 安装光盘中的 bootmgr 文件和 boot、sources 文件夹按照原结构复制到本地硬盘的任意分区（但不能是 Windows 安装的目标分区）根目录下。<br />
<br />
2009.05.01 更新：（Win6Ins.exe 版本：v1.2.0.62）<br />
1.修复了不能识别 Windows 2000/PE 系统并且会在该环境下错误运行的问题。<br />
2.改进了启动文件属性设置方面的小问题。<br />
3.添加了关于卸载的文字提示，以免一些用户不知道如何卸载启动菜单项。<br />
4.改进了操作便捷性，使用户在后悔安装的时候不必重新启动程序而直接取消安装操作。<br />
5.程序运行界面的部分微小调整。</p><br /><br /><b>附件: </b><a href="http://vod.bpxx.com/attachment.php?id=170" target="_blank">win6ins_v1.2.0.62.exe</a> (750.54 K, 下载次数:18)]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=232</link>
			<category domain="http://vod.bpxx.com/?cid=8">佳软推荐</category>
			<pubDate>2009-11-10 22:16</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=231</guid>
			<title>[语文课件]黄山奇松</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 最近制作的课件《黄山奇松》，比较简单，但是风格不错，自己挺满意。<br />
&nbsp;&nbsp;&nbsp; 加了网站的水印，大家将就一下看看。</p><br /><br /><b>图片附件(缩略图):</b><br /><a href="http://vod.bpxx.com/attachment.php?id=167" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200911/thumb_27360871e4e594d9a7a6cd71bebd2b1a.jpg" border="0" alt="大小: 35.69 K&#13;尺寸: 500 x 382&#13;浏览: 6 次&#13;点击打开新窗口浏览全图" width="500" height="382" /></a><br /><br /><b>图片附件(缩略图):</b><br /><a href="http://vod.bpxx.com/attachment.php?id=168" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200911/thumb_4240ea29ac4cf65bf9e57f7fc02733d3.jpg" border="0" alt="大小: 68.61 K&#13;尺寸: 500 x 382&#13;浏览: 3 次&#13;点击打开新窗口浏览全图" width="500" height="382" /></a><br /><br /><b>图片附件(缩略图):</b><br /><a href="http://vod.bpxx.com/attachment.php?id=169" target="_blank"><img src="http://vod.bpxx.com/attachments/date_200911/thumb_5ea58885680fec671c34aae64171f803.jpg" border="0" alt="大小: 40.11 K&#13;尺寸: 500 x 382&#13;浏览: 1 次&#13;点击打开新窗口浏览全图" width="500" height="382" /></a>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=231</link>
			<category domain="http://vod.bpxx.com/?cid=2">原创课件</category>
			<pubDate>2009-11-09 20:49</pubDate>
		</item>
		<item>
			<guid>http://vod.bpxx.com/?action=show&amp;id=230</guid>
			<title>对flash中的flv组件播放的flv文件进行平滑处理</title>
			<author>roczyl</author>
			<description><![CDATA[ROC的笔记本 ( http://vod.bpxx.com/ ) : <p>&nbsp;&nbsp;&nbsp; 如何对flash中的flv组件播放的flv文件进行平滑处理呢？<br />
&nbsp;&nbsp;&nbsp;&nbsp;终于找到了flash8下的可用方案，在时间线上加：<br />
&nbsp;&nbsp;&nbsp; FLVPlayback[&quot;_vp&quot;][0]._video.smoothing = true;<br />
&nbsp;&nbsp;&nbsp; 其中，&ldquo;FLVPlayback&rdquo;为FLV组件的实例名。</p>]]></description>
			<link>http://vod.bpxx.com/?action=show&amp;id=230</link>
			<category domain="http://vod.bpxx.com/?cid=15">Flash</category>
			<pubDate>2009-11-09 20:41</pubDate>
		</item>
	</channel>
</rss>
