<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[Anti-Virus Engine research]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[反病毒引擎研究]]></description>
<link>http://hi.baidu.com/avengine</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[反病毒的乌托邦]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/dee7532caa22eee68b139958.html]]></link>
        <description><![CDATA[
		
		<p align="center">反病毒的乌托邦<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;&nbsp;&nbsp;  ―――梦幻引擎</p>
<p>关键字：传统反病毒引擎 云查杀引擎 蚂蚁引擎 梦幻引擎</p>
<p>传统反病毒引擎目前发展的瓶颈在于特征码增长无法适应病毒增长，无论是反映速度、匹配速度、升级速度都捉襟见肘。</p>
<p>按照我的理解，反病毒引擎发展史可划分为几个阶段，80年代末－90年代末是第一阶段，主要是DOS平台下的反病毒引擎；90年代末－2004年是第二阶段，这是在windows平台下以特征码匹配为基础的传统反病毒引擎的辉煌时期；04年之后到现在，是反病毒引擎多元化发展的时期，这是时期的重要特点就是病毒数量每年的增长基本是前几年的总和。</p>
<p>任何一个技术都有其自身生命周期，特别在软件领域，基本&ldquo;各领风骚十几年&rdquo;。传统的引擎也是如此，而目前对于互联网发展滞后，具体表现在：<br>
1. 病毒太多，处理不彻底。<br>
2. 病毒生命周期变短，导致传统反病毒引擎特征码大部分是&ldquo;垃圾&rdquo;或者&ldquo;死特征&rdquo;。<br>
3. 病毒相应速度滞后。<br>
4. 反病毒软件运行速度下降。</p>
<p>自07年以来，&ldquo;云&rdquo;查毒概念产生了，各大反病毒厂商开始研发&ldquo;云&rdquo;查杀引擎，于传统引擎不同，它的特点如下：<br>
1. 区别于传统引擎的本质在于特征码的匹配，不在客户端，而是集中在服务器端。<br>
2. 特征码趋于简单化。<br>
3. 反映速度块，由于在服务器端，几乎在判断第一个病毒的同时，可以判断其他计算机上的病毒。<br>
4. 缺点很明显，怕断网。<br>
5. 查杀速度不见得优于传统引擎，特征码质量也不见得优于传统引擎，量多了质下降了。</p>
<p>如果说引擎是活的化，那么完全可以分散开来，迅雷可以均衡互助下载，我们为什么不能？但绝不是&ldquo;蚂蚁引擎&rdquo;，那只能是相当与&ldquo;病毒蚂蚁&rdquo;，搞不好会造成更糟的结果。</p>
<p>我所说想象的反病毒大同世界，或者说是梦幻引擎如下：<br>
1. 有大脑，即服务器端；有蚂蚁云，即客户端，由服务器端统一号令，不是各自乱窜，而是统一调配。<br>
2. 传统反病毒引擎拆分，运算特征码部分（包含解压、脱壳等等）划分客户端，匹配特征码部分划分服务器端，但要保留客户端一定数量的流行病毒特征。<br>
3. 反病毒引擎可以以实体存在，但更简单快捷的方式是访问反病毒网页，直接杀毒，类似google有网页word，那么我们完全可以网页反病毒，仅有一点就是需要上网，但绝不是象&ldquo;在线杀毒&rdquo;那样下载病毒库，而是直接匹配杀毒。</p>
<p>是的，这是个活生生的&ldquo;反病毒生物体&rdquo;，客户端是&ldquo;抗体&rdquo;，通过互联网这个&ldquo;血管&rdquo;联系起来，由服务器的&ldquo;大脑&rdquo;统一指挥。<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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2009-10-9 凌晨 似醒非醒态</p> <a href="http://hi.baidu.com/avengine/blog/item/dee7532caa22eee68b139958.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/dee7532caa22eee68b139958.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-09  02:22</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/dee7532caa22eee68b139958.html</guid>
</item>

<item>
        <title><![CDATA[vs2005调试64位汇编源码]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/aba0a0c2b25d0f120ef477e5.html]]></link>
        <description><![CDATA[
		
		<p>关键字：vs2005 调试 32位 64位 汇编 源码 _asm</p>
<p>vs2005调试32位汇编时，依然象vc6一样支持_asm关键字，但是64位不支持。我们可以用另外一种方法，把汇编写成一个asm文件，和cpp一块调试而不是直接嵌入_asm。这种方法微软的实例已经给出：</p>
<p>vs2005调试32位汇编源码</p>
<p><a href="https://sites.google.com/site/aiwulu/avengine/C%26ASM_32_20090828_blog.rar?attredirects=0">https://sites.google.com/site/aiwulu/avengine/C%26ASM_32_20090828_blog.rar?attredirects=0</a></p>
<p>vs2005调试64位汇编源码（略有修改）</p>
<p><u><font color="#0000ff"><a href="https://sites.google.com/site/aiwulu/avengine/C&amp;ASM_64_20090828_blog.rar?attredirects=0">https://sites.google.com/site/aiwulu/avengine/C&amp;ASM_64_20090828_blog.rar?attredirects=0</a></font></u></p>
<p>这种方法的本质是利用了链接程序，cpp用cl调试，asm用ml调试，然后用link链接。事实上，我们可以直接在vs2005工程中加入一个obj直接调试，你有没有什么启发？</p> <a href="http://hi.baidu.com/avengine/blog/item/aba0a0c2b25d0f120ef477e5.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/aba0a0c2b25d0f120ef477e5.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-28  16:02</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/aba0a0c2b25d0f120ef477e5.html</guid>
</item>

<item>
        <title><![CDATA[64位反汇编源码]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/0d0bbc0e07d489ee36d12212.html]]></link>
        <description><![CDATA[
		
		<p>关键字：16位 32位 64位 反汇编 源码 bochs</p>
<p>大约在03年时看到bochs有反汇编的源码，支持x86系列16位和32位。bochs的早期，反汇编的原理和其指令系统一致，都是利用的指令类型，即这张表：</p>
<p><a href="https://sites.google.com/site/aiwulu/avengine/80386Programmer%27sReferenceManual--AppendixA.rar?attredirects=0">https://sites.google.com/site/aiwulu/avengine/80386Programmer%27sReferenceManual--AppendixA.rar?attredirects=0</a></p>
<p>新版本更新后，反汇编改为了查表的方式，并且支持了64位。</p>
<p>反汇编用的最多的是读取指令的长度，这个可以用在hook，脱壳等程序中；还有一个是根据这些静态指令判断花指令等，但最根本的还是反汇编源码。</p>
<p>Bochs的源码有个特点就是与时俱进，并且代码模块整齐，基本不调用函数。修改也很容易，如果只想读取指令长度，可以注释里面的生成反汇编字符串部分，加快速度。</p>
<p>源码：</p>
<p><a href="https://sites.google.com/site/aiwulu/avengine/Disasm_64_20090828_blog.rar?attredirects=0">https://sites.google.com/site/aiwulu/avengine/Disasm_64_20090828_blog.rar?attredirects=0</a></p>
<p> </p>
<p> </p> <a href="http://hi.baidu.com/avengine/blog/item/0d0bbc0e07d489ee36d12212.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/0d0bbc0e07d489ee36d12212.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-28  15:49</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/0d0bbc0e07d489ee36d12212.html</guid>
</item>

<item>
        <title><![CDATA[LDump 一个小工具]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/bcdb72c675195a1c9c163d56.html]]></link>
        <description><![CDATA[
		
		<p>关键词：vc debug release 区别 判断 编译选项 PE 节对齐 工具</p>
<p>新国图二期不错，环境好，MM多，还能免费上网下论文，实在是美不胜收。阳光透过天窗洒在身上，感觉自然不必说，这程序的一部分就是在那儿写的，好坏不论，单是这过程也是享受啊。</p>
<p>下载地址：</p>
<p><a href="http://sites.google.com/site/aiwulu/avengine/Ldump_V1.1.rar?attredirects=0">http://sites.google.com/site/aiwulu/avengine/Ldump_V1.1.rar?attredirects=0</a></p>
<p>程序说明：</p>
<p>LDump 是一个对PE文件操作的工具，主要功能如下：</p>
<p>1.识别部分PE文件是的编译选项，区分判断debug,release版本。历来vc编译的程序调试发行版本不好区分，一般采取IDA反编译源码比较识别，我把一些共同的特征提取出来做了这个功能，或许会有所帮助。另外，我还区分了编译器版本（vc6.0 vs2001 vs2003 vs2005 vs2008）、调试版本(debug release)、入口类型(main wmain WinMain wWinMain DllMain)、单线程多线程(Single-Thread Multi-Thread)、连接库(libc libcd libcmt libcmtd msvcrt msvcrtd)的信息。其实这些都是联系在一起的，编译器首先根据代码的入口方式、编译选项编译obj，然后再选择用那个库链接生成pe。说个题外话，刘涛涛的&ldquo;扭曲变换加密&rdquo;就是在这个链接库上做的文章，先把lib展开，一个一个变形后重新压成新的lib，然后链接代码就可以了，主代码的obj也需要变换，当然我们不希望看到病毒也这么做。说这么多是因为这些都是反病毒引擎的基础之一，需要深入理解。<br>
2.显示对齐后的节表。<br>
3.生成虚拟地址和物理地址相同的新文件，免去分析文件时地址转换的繁琐。</p>
<p><br>
示例：</p>
<p>命令：ldump localui.dll<br>
File Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  PE VS2001 Release DllMain Multi-T libcmt.lib</p>
<p>命令：LDump test.exe<br>
#&nbsp;&nbsp;  Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VirtSize&nbsp;&nbsp;&nbsp;  RVA&nbsp;&nbsp;&nbsp;&nbsp;  PhysSize Phys off Flags<br>
-- --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -------- -------- -------- -------- --------<br>
00 UPX0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  0000E000 00001000 00002E00 00000400 E0000080 [ERUW]<br>
01 UPX1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  00003000 0000F000 00002E00 00000400 E0000040 [EIRW*]<br>
02 UPX2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  00001000 00012000 00000200 00003200 C0000040 [IRW]</p>
<p>命令：LDump /l test.exe 后生成test.exe_文件，节表如下<br>
#&nbsp;&nbsp;  Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VirtSize&nbsp;&nbsp;&nbsp;  RVA&nbsp;&nbsp;&nbsp;&nbsp;  PhysSize Phys off Flags<br>
-- --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  -------- -------- -------- -------- --------<br>
00 UPX0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  0000E000 00001000 0000E000 00001000 E0000080 [ERUW]<br>
01 UPX1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  00003000 0000F000 00003000 0000F000 E0000040 [EIRW*]<br>
02 UPX2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  00001000 00012000 00001000 00012000 C0000040 [IRW]</p> <a href="http://hi.baidu.com/avengine/blog/item/bcdb72c675195a1c9c163d56.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B2%A1%B6%BE%B7%D6%CE%F6">病毒分析</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/bcdb72c675195a1c9c163d56.html#comment">查看评论</a>]]></description>
        <pubDate>2009-01-07  21:07</pubDate>
        <category><![CDATA[病毒分析]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/bcdb72c675195a1c9c163d56.html</guid>
</item>

<item>
        <title><![CDATA[沙盒、启发、虚拟机，一个都不能少]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/bc669c2290c93bf4d6cae267.html]]></link>
        <description><![CDATA[
		
		<p>沙盒：sandbox风靡以来的新技术，所谓的主动防御不过是其中一个子集而已，曾被刘旭大哥炒的满天飞。</p>
<p>启发：很久很久以前的思想，最早是kv300中的广谱和avp的ca。</p>
<p>虚拟机：从92年avp实现emul,至97年刘涛涛的tr，到目前泛滥的程度。</p>
<p>新的杀毒技术是什么？是综合的技术而不是单纯的技术，或者说这个技术到头来只是个技术，你充其量也就是个能工巧匠而已，要想从雕刻匠变为齐白石，那就抛弃这些所谓的技术吧。<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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  2008.6.4</p> <a href="http://hi.baidu.com/avengine/blog/item/bc669c2290c93bf4d6cae267.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/bc669c2290c93bf4d6cae267.html#comment">查看评论</a>]]></description>
        <pubDate>2008-11-24  11:26</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/bc669c2290c93bf4d6cae267.html</guid>
</item>

<item>
        <title><![CDATA[驱动类型病毒的删除方法]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/bbe9a544d34b9081b2b7dcd3.html]]></link>
        <description><![CDATA[
		
		<span style="mso-bidi-font-size: 10.5pt"><span style="mso-bidi-font-size: 10.5pt"><span style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"><font face="宋体">&nbsp;&nbsp;&nbsp;  这类病毒一般是&ldquo;system\drivers\&rdquo;下的一个sys文件，改&ldquo;RunOnce&rdquo;项，启动的早，退出的晚，杀起来颇费精神。他们多驻留内存，在关机时回写，即使杀了他的&ldquo;本体&rdquo;，也杀不了他的&ldquo;灵魂&rdquo;，故列举以下方法：</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"><font face="宋体">&nbsp;&nbsp;&nbsp;  写个程序，遍历内存找到他，修改他，特别是那些重要函数，例如CreateFile，修改其调用入口填0xc3。此法很容易出问题，弄不好要蓝屏（如果直接暴力清0肯定是蓝屏），不过病毒也会检测修正函数入口，反正是&ldquo;一矛一盾&rdquo;没完没了。<br>
&nbsp;&nbsp;&nbsp;  用WINPE启动光盘，直接找到该文件删除。这种方法绝对彻底，能在另一个世界里找到安宁，不过需要启动盘，一时半会儿找不着也是惘然。<br>
&nbsp;&nbsp;&nbsp;  最简单的方法莫过于直接断电（或按复位键），不给病毒回写机会，之前删除病毒体即可。此法甚毒，但要注意保存数据。<br>
&nbsp;&nbsp;&nbsp;  上述方法前提是确认sys的确是病毒，否则后果不堪设想，最好备份文件以便恢复。</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"><font face="宋体">另附WinPE之U盘制作过程：<br>
1.用usboot做hdd启动盘，不是所有的u盘都能成功，和u盘质量有关。<br>
2.下载USB-HDD-WinPE释放到u盘根目录，注意里面有隐含文件，如果copy务必拷全。<br>
3.bios设置usbhdd启动，启动winpe。（如安装XP从u盘考到d盘或其他盘，拔下u盘(这点很关键，此后默认安装为c盘)，运行setup安装。）<br>
4.存在安全隐患，最好bios设置密码从硬盘启动，防止用此法盗取数据(直接卸硬盘除外)。</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"><font face="宋体">此文承网络巡警鼎立相助，特此感谢！</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt" align="left"> </p>
</span></span></span></span> <a href="http://hi.baidu.com/avengine/blog/item/bbe9a544d34b9081b2b7dcd3.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B2%A1%B6%BE%B7%D6%CE%F6">病毒分析</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/bbe9a544d34b9081b2b7dcd3.html#comment">查看评论</a>]]></description>
        <pubDate>2007-11-28  14:05</pubDate>
        <category><![CDATA[病毒分析]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/bbe9a544d34b9081b2b7dcd3.html</guid>
</item>

<item>
        <title><![CDATA[什么是杀毒引擎]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/2672f61f49cf4360f624e49a.html]]></link>
        <description><![CDATA[
		
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="color: black; mso-bidi-font-size: 10.5pt">令病毒集合为<span>A</span>，特征码集合为<span>B</span>，如</span><span style="color: black; mso-bidi-font-size: 10.5pt">果按照某种对应法则<span>f，</span>对于集合<span>A</span>中的病毒，在集合<span>B</span>中有特征码和它对应，<span> </span>这样的法则<span>f</span>即为杀毒引擎。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="color: black; mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="color: black; mso-bidi-font-size: 10.5pt">若<span>f</span>为函数，满射非单射为上；双射次之；非满射非单射再次；非满射单射最末。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="color: black; mso-bidi-font-size: 10.5pt">若<span>f</span>非函数，<span>A</span>全命中为上；否则一对一为上，一对多为下。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="color: black; mso-bidi-font-size: 10.5pt">A</span><span style="color: black; mso-bidi-font-size: 10.5pt">中病毒是否命中为最本质区别，无论采用什么技术，其次特征码冗余度小为善，再次为速度等。</span></p> <a href="http://hi.baidu.com/avengine/blog/item/2672f61f49cf4360f624e49a.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/2672f61f49cf4360f624e49a.html#comment">查看评论</a>]]></description>
        <pubDate>2007-09-21  17:52</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/2672f61f49cf4360f624e49a.html</guid>
</item>

<item>
        <title><![CDATA[如何提高杀毒引擎扫描速度]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/22c01fd525a8f5c751da4b99.html]]></link>
        <description><![CDATA[
		
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">1.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白什么样的文件不可能存在什么样的病毒。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">2.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白什么样的文件可能会产生什么样的病毒。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">3.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白扫描什么时不需要扫描什么。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">4.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白什么样的算法更适合引擎。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">5.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白</span><span><font face="Times New Roman">cache</font></span><span>的重要性。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">6.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白多核和多引擎的关系。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">7.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>明白虚拟机的适用范围。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><font face="Times New Roman"><span><span style="mso-list: Ignore">8.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span>…</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>速度是衡量杀毒引擎优劣的基本指标之一。</span></p> <a href="http://hi.baidu.com/avengine/blog/item/22c01fd525a8f5c751da4b99.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/22c01fd525a8f5c751da4b99.html#comment">查看评论</a>]]></description>
        <pubDate>2007-09-21  17:51</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/22c01fd525a8f5c751da4b99.html</guid>
</item>

<item>
        <title><![CDATA[80386初始化实例清单]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/2e3c7ff44601d0dbf3d38563.html]]></link>
        <description><![CDATA[
		
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>使机器从复位状态开始，经初始化装入操作系统之后成为可用的系统，并调用第一个用户任务执行。本程序的主要任务使建立适当的段表及页表。实例由以下</span><span><font face="Times New Roman">15</font></span><span>步完成：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">1.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>引导地址冷启动；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">2.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>禁用中断、装入</span><span><font face="Times New Roman">DS</font></span><span>及使</span><span><font face="Times New Roman">IDT</font></span><span>为空；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">3.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>建立</span><span><font face="Times New Roman">GDT</font></span><span>及</span><span><font face="Times New Roman">LGDT</font></span><span>；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">4.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>进入</span><span><font face="Times New Roman">32</font></span><span>为代码的保护方式；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">5.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>转入段寄存器；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">6.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>建立</span><span><font face="Times New Roman">LDT</font></span><span>、</span><span><font face="Times New Roman">LLDT</font></span><span>；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">7.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>建立</span><span><font face="Times New Roman">IDT</font></span><span>、</span><span><font face="Times New Roman">LIDT</font></span><span>；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">8.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>建立页目录；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">9.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><span>建立页表；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">10.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;</span></font></span></span><span>启动分页机制；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">11.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;</span></font></span></span><span>装入</span><span><font face="Times New Roman">OS</font></span><span>栈；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">12.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;</span></font></span></span><span>建立</span><span><font face="Times New Roman">TSS</font></span><span>、</span><span><font face="Times New Roman">LTR</font></span><span>；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">13.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;</span></font></span></span><span>装入用户任务；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">14.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;</span></font></span></span><span>为调用用户任务做准备；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l0 level1 lfo1"><span><span style="mso-list: Ignore"><font face="Times New Roman">15.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;</span></font></span></span><span>调用用户任务；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>选至《保护方式下的</span><span><font face="Times New Roman">80386</font></span><span>及其编程》，周明德主编，田云、何德书、宗耀堂编著，</span><span><font face="Times New Roman">P409</font></span><span>。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span>这是一本好书！现在的书越来越多，但好书越来越少了。</span></p> <a href="http://hi.baidu.com/avengine/blog/item/2e3c7ff44601d0dbf3d38563.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B2%D9%D7%F7%CF%B5%CD%B3">操作系统</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/2e3c7ff44601d0dbf3d38563.html#comment">查看评论</a>]]></description>
        <pubDate>2007-08-08  13:11</pubDate>
        <category><![CDATA[操作系统]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/2e3c7ff44601d0dbf3d38563.html</guid>
</item>

<item>
        <title><![CDATA[又是一天]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/8ff878d92fdfb3eb38012f62.html]]></link>
        <description><![CDATA[
		
		<span>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>我一直在想什么是最好的引擎。做为引擎设计者，我思量至少应该做到&ldquo;从心所欲，不逾矩&rdquo;吧。引擎为病毒所做，也应随着病毒的变化而变化。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>杀毒引擎和主动防御是两个概念，主动防御不可能替代杀毒引擎的特征码匹配，但做为辅助是必要的。主动防御的归宿是杀毒引擎，无论病毒检测率多高，终不会高过杀毒引擎中</span><span><font face="Times New Roman">100%</font></span><span>的特征码匹配。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span>今日立秋，又是&ldquo;七月流火&rdquo;的季节。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"> </p>
</span> <a href="http://hi.baidu.com/avengine/blog/item/8ff878d92fdfb3eb38012f62.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B7%B4%B2%A1%B6%BE%D2%FD%C7%E6">反病毒引擎</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/8ff878d92fdfb3eb38012f62.html#comment">查看评论</a>]]></description>
        <pubDate>2007-08-08  13:11</pubDate>
        <category><![CDATA[反病毒引擎]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/8ff878d92fdfb3eb38012f62.html</guid>
</item>

<item>
        <title><![CDATA[Exploit.MSWord.b病毒分析]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/66a4f2038b2041763912bb80.html]]></link>
        <description><![CDATA[
		
		<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Exploit.MSWord.b</font></span><span style=" ">病毒利用了</span><span><font face="Times New Roman">MS07-014</font></span><span style=" ">漏洞。该病毒是个</span><span><font face="Times New Roman">word</font></span><span style=" ">文件，包含有非法数据，打开此文件时</span><span><font face="Times New Roman">word</font></span><span style=" ">程序显示错误，并执行恶意代码，最终释放病毒程序。病毒不自动传播，一般做为邮件附件。</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">至于什么内容的数据会导致</span><span><font face="Times New Roman">word</font></span><span style=" ">程序异常，可以参考</span><span><font face="Times New Roman">naveedafzal</font></span><span style=" ">的文章：</span><span><a href="http://www.securiteam.com/exploits/5UP0C0AJ5U.html"><font face="Times New Roman" color="#800080">http://www.securiteam.com/exploits/5UP0C0AJ5U.html</font></a></span><span style=" ">，其原理和一些漏洞类似，非法数据导致某个</span><span><font face="Times New Roman">dll</font></span><span style=" ">的某个函数执行异常，</span><span><font face="Times New Roman">EIP</font></span><span style=" ">指针指向了某个地方，这个地方存放恶意代码。</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman"> </font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">几个月前，国内出现了病毒“</span><span><font face="Times New Roman">ILOVEYOU.doc</font></span><span style=" ">”，根据其内容可基本断定为“</span><span><font face="Times New Roman">2007</font></span><span style=" ">最新</span><span><font face="Times New Roman">DOC</font></span><span style=" ">捆绑器”制作。</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">病毒样本包含</span><span><font face="Times New Roman">4</font></span><span style=" ">部分：</span><span><font face="Times New Roman">1Table</font></span><span style=" ">、</span><span><font face="Times New Roman">WordDocument</font></span><span style=" ">、</span><span><font face="Times New Roman">SummaryInformation</font></span><span style=" ">、</span><span><font face="Times New Roman">DocumentSummaryInformation</font></span><span style=" ">。四部分基本以固定形式存放于生成器中，之后添加捆绑文件形成一个</span><span><font face="Times New Roman">word</font></span><span style=" ">病毒。</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">其中</span><span><font face="Times New Roman">1Table</font></span><span style=" ">包含非法数据，引导异常；</span><span><font face="Times New Roman">DocumentSummaryInformation</font></span><span style=" ">中包含解压代码，释放出病毒，代码如下：</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:00000134 90<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>nop</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:00000135 90<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>nop</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:00000136 <st1:chmetcnv unitname="C" sourcevalue="81" hasspace="True" negative="False" numbertype="1" tcsc="0">81 C</st1:chmetcnv>7 CC+<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>add<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>edi, 1ACCh</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:<st1:chmetcnv unitname="C" sourcevalue="13" hasspace="False" negative="False" numbertype="1" tcsc="0">0000013C</st1:chmetcnv> 57<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>push<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>edi</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">……</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:0000025Bj</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:00000257 80 33 92<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>xor<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>byte ptr [ebx], 92h ; </font></span><span style=" ">异或解码</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:<st1:chmetcnv unitname="a" sourcevalue="25" hasspace="False" negative="False" numbertype="1" tcsc="0">0000025A</st1:chmetcnv> 43<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>inc<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ebx</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">seg000:0000025B E2 FA<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>loop<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>loc_257</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman">......</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span style=" ">病毒文件和</span><span><font face="Times New Roman">0x92</font></span><span style=" ">异或后，分离两个</span><span><font face="Times New Roman">PE</font></span><span style=" ">，后者为盗取</span><span><font face="Times New Roman">QQ</font></span><span style=" ">秘码的病毒</span><span><font face="Times New Roman">Trojan/PSW.GamePass.ev</font></span><span style=" ">。</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman"> </font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>AVP</font></span><span style=" ">报</span><span><font face="Times New Roman">Trojan-Dropper.MSWord.1Table.ea</font></span><span style=" ">，特征码取</span><span><font face="Times New Roman">1Table</font></span><span style=" ">处；</span><span><font face="Times New Roman">Mcafee</font></span><span style=" ">报</span><span style="  ">Exploit-MSWord.b</span><span style="  ">，特征码取</span><span><font face="Times New Roman">DocumentSummaryInformation</font></span><span style=" ">中</span><span style="  ">代码处，两者皆好。</span></p> <a href="http://hi.baidu.com/avengine/blog/item/66a4f2038b2041763912bb80.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B2%A1%B6%BE%B7%D6%CE%F6">病毒分析</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/66a4f2038b2041763912bb80.html#comment">查看评论</a>]]></description>
        <pubDate>2007-06-08  17:09</pubDate>
        <category><![CDATA[病毒分析]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/66a4f2038b2041763912bb80.html</guid>
</item>

<item>
        <title><![CDATA[诺顿卡巴误杀中文版xp系统文件]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/f80b839452adc81fd21b70c1.html]]></link>
        <description><![CDATA[
		
		<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><st1:chsdate year="2007" month="5" day="18" islunardate="False" isrocdate="False"><font face="Times New Roman">5</font><span style=" "><span>月</span></span><font face="Times New Roman">18</font><span style=" "><span>日</span></span></st1:chsdate><span style=" ">，诺顿误报，参见：</span></span></p>
<p style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span><a href="http://www.cisrt.org/blog/read.php?329"><font face="Times New Roman" color="#800080">http://www.cisrt.org/blog/read.php?329</font></a></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">同一天，卡巴误报，参见：</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><a href="http://hi.baidu.com/litiejun/blog/item/11f22b7b4e29c8f50ad187ee.html"><font face="Times New Roman" color="#800080">http://hi.baidu.com/litiejun/blog/item/11f22b7b4e29c8f50ad187ee.html</font></a></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><font face="Times New Roman"> </font></span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">为什么单单误报中文版？难道病毒库发布之前没有测试？不会，很有可能是这个测试库里面没有中文版的测试文件！</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">一般来说，病毒库发布之前会测试各个版本的系统文件、曾误报过的文件、容易误报的文件（例如易语言，安装程序）等等，这是一项费时的工作，但是是必须的。</span></p>
<p style="MARGIN: 0cm 0cm 0pt"><span><span><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></span><span style=" ">国外杀软近年疯狂涌入中国，对国内病毒反应虽有提高，但仍望尘于国内杀软。卡巴略好，诺顿更糟，很多国内病毒都查不到。此次又显现出他们对中文版的态度，多少有些无视中国用户。</span></p>
<p style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style=" ">不单是病毒的问题，所有的商业杀软都有后门（开源的</span><span><font face="Times New Roman">clamav</font></span><span style=" ">等除外），如果希望自己的图纸不被国外窃取，希望能多查杀一些类似网银、证券大盗等病毒，那就用国产杀软吧。</span></p>
<p style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style=" "></span><span><span><font face="Times New Roman"> </font></span></span></p> <a href="http://hi.baidu.com/avengine/blog/item/f80b839452adc81fd21b70c1.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%B2%A1%B6%BE%B7%D6%CE%F6">病毒分析</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/f80b839452adc81fd21b70c1.html#comment">查看评论</a>]]></description>
        <pubDate>2007-05-22  12:25</pubDate>
        <category><![CDATA[病毒分析]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/f80b839452adc81fd21b70c1.html</guid>
</item>

<item>
        <title><![CDATA[虚拟调试器 VDebug V1.3]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/02478fd4ff362700a18bb704.html]]></link>
        <description><![CDATA[
		
		<p>下载地址</p>
<p><a href="http://www.retcvc.com/cgi-bin/attachment.cgi?forum=1&amp;topic=1777&amp;postno=1&amp;name=VDebug1_1179300064&amp;type=.rar">http://www.retcvc.com/cgi-bin/attachment.cgi?forum=1&amp;topic=1777&amp;postno=1&amp;name=VDebug1_1179300064&amp;type=.rar</a> (右键另存)</p>
<p>或者</p>
<p><a href="http://bbs.driverdevelop.com/job.php?action=download&amp;pid=tpc&amp;tid=101855&amp;aid=18301">http://bbs.driverdevelop.com/job.php?action=download&amp;pid=tpc&amp;tid=101855&amp;aid=18301</a> （需要注册）</p>
<p> </p>
<p> </p> <a href="http://hi.baidu.com/avengine/blog/item/02478fd4ff362700a18bb704.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%D0%E9%C4%E2%B5%F7%CA%D4%C6%F7">虚拟调试器</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/02478fd4ff362700a18bb704.html#comment">查看评论</a>]]></description>
        <pubDate>2007-05-14  19:50</pubDate>
        <category><![CDATA[虚拟调试器]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/02478fd4ff362700a18bb704.html</guid>
</item>

<item>
        <title><![CDATA[虚拟调试器 VDebug1.2]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/fbfe7fcb84b77d1fbf09e642.html]]></link>
        <description><![CDATA[
		
		<p>&nbsp;好久没更新这个东东了，下载地址：</p>
<p><a href="http://bbs.driverdevelop.com/job.php?action=download&amp;pid=tpc&amp;tid=98097&amp;aid=17920">http://bbs.driverdevelop.com/job.php?action=download&amp;pid=tpc&amp;tid=98097&amp;aid=17920</a></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%D0%E9%C4%E2%B5%F7%CA%D4%C6%F7">虚拟调试器</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/fbfe7fcb84b77d1fbf09e642.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-09  18:53</pubDate>
        <category><![CDATA[虚拟调试器]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/fbfe7fcb84b77d1fbf09e642.html</guid>
</item>

<item>
        <title><![CDATA[文件类型检测 FI 之七]]></title>
        <link><![CDATA[http://hi.baidu.com/avengine/blog/item/bd1793dd16a022345882dd7d.html]]></link>
        <description><![CDATA[
		
		<p>class&nbsp;CFI<br>
{<br>
public:<br>
&nbsp;int&nbsp;&nbsp;FI(char&nbsp;*strFileName,&nbsp;char&nbsp;*strInfo);</p>
<p>public:<br>
&nbsp;CFI();<br>
&nbsp;~CFI();</p>
<p>private:<br>
&nbsp;BYTE&nbsp;Buff_H[0x400];&nbsp;//&nbsp;头缓冲<br>
&nbsp;BYTE&nbsp;Buff_E[0x400];&nbsp;//&nbsp;入口缓冲<br>
&nbsp;FILE&nbsp;*fp;<br>
&nbsp;int&nbsp;&nbsp;File_Length;&nbsp;//&nbsp;文件长度<br>
&nbsp;int&nbsp;&nbsp;File_Type;&nbsp;&nbsp;//&nbsp;文件类型&nbsp;1-com&nbsp;2-exe&nbsp;8-pe<br>
&nbsp;DWORD&nbsp;EP;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;入口</p>
<p>private:<br>
&nbsp;int&nbsp;&nbsp;GetFileSize(FILE&nbsp;*pFile);<br>
&nbsp;int&nbsp;&nbsp;SRead(int&nbsp;FilePos,&nbsp;PBYTE&nbsp;pPage,&nbsp;int&nbsp;nReadLen);<br>
&nbsp;int&nbsp;&nbsp;SWrite(int&nbsp;FilePos,&nbsp;PBYTE&nbsp;pPage,&nbsp;int&nbsp;nReadLen);</p>
<p>&nbsp;DWORD&nbsp;Rva2Phys(IMAGE_NT_HEADERS&nbsp;*pPE_Header,&nbsp;DWORD&nbsp;dwAddr);<br>
&nbsp;int&nbsp;&nbsp;InitBuff();<br>
&nbsp;bool&nbsp;HexstrToHex(char&nbsp;*str,&nbsp;BYTE&nbsp;&amp;Val);<br>
&nbsp;int&nbsp;&nbsp;LoadLib_GT();<br>
&nbsp;int&nbsp;&nbsp;LoadLib_PE();<br>
&nbsp;int&nbsp;&nbsp;LoadLib();<br>
&nbsp;FILETYPEDATA_GT&nbsp;*FI_GT();<br>
&nbsp;FILETYPEDATA_PE&nbsp;*FI_PE();<br>
&nbsp;char&nbsp;*FIRec(char&nbsp;*str);<br>
&nbsp;cli_file_t&nbsp;cli_filetype(const&nbsp;char&nbsp;*buf,&nbsp;size_t&nbsp;buflen,&nbsp;char&nbsp;*strInfo);<br>
};</p>
<p>CFI::CFI()<br>
{<br>
&nbsp;fp&nbsp;=&nbsp;NULL;<br>
&nbsp;File_Type&nbsp;=&nbsp;-1;<br>
&nbsp;File_Length&nbsp;=&nbsp;0;<br>
&nbsp;EP&nbsp;=&nbsp;0;<br>
}</p>
<p>CFI::~CFI()<br>
{</p>
<p>}</p>
<p>//-------------------------------------------------------------------------------&nbsp;公用函数<br>
//&nbsp;函数功能：获取文件的大小<br>
int&nbsp;CFI::GetFileSize(FILE&nbsp;*pFile)<br>
{<br>
&nbsp;int&nbsp;Pos&nbsp;=&nbsp;ftell(pFile);<br>
&nbsp;fseek(pFile,&nbsp;0,&nbsp;SEEK_END);<br>
&nbsp;int&nbsp;FileSize&nbsp;=&nbsp;ftell(pFile);<br>
&nbsp;fseek(pFile,&nbsp;Pos,&nbsp;SEEK_SET);</p>
<p>&nbsp;return&nbsp;FileSize;<br>
}</p>
<p>//&nbsp;函数功能:读文件到制定缓冲区<br>
int&nbsp;CFI::SRead(int&nbsp;FilePos,&nbsp;PBYTE&nbsp;pPage,&nbsp;int&nbsp;nReadLen)<br>
{<br>
&nbsp;if&nbsp;(FilePos&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;pPage&nbsp;==&nbsp;NULL&nbsp;||&nbsp;nReadLen&nbsp;&lt;=&nbsp;0)<br>
&nbsp;&nbsp;return&nbsp;0;</p>
<p>&nbsp;fseek(fp,&nbsp;FilePos,&nbsp;SEEK_SET);<br>
&nbsp;return&nbsp;fread(pPage,&nbsp;1,&nbsp;nReadLen,&nbsp;fp);<br>
}</p>
<p>//&nbsp;-------------------------------------------------------------------------------&nbsp;功能函数<br>
//&nbsp;函数功能：将PE文件的Image中的线性地址转换成实际偏移<br>
DWORD&nbsp;CFI::Rva2Phys(IMAGE_NT_HEADERS&nbsp;*pPE_Header,&nbsp;DWORD&nbsp;dwAddr)<br>
{<br>
&nbsp;int&nbsp;&nbsp;i;<br>
&nbsp;DWORD&nbsp;dwSectionOffset;&nbsp;//&nbsp;节表偏移<br>
&nbsp;IMAGE_SECTION_HEADER&nbsp;*pSection_Header;</p>
<p>&nbsp;if&nbsp;(pPE_Header&nbsp;==&nbsp;NULL)<br>
&nbsp;&nbsp;return&nbsp;dwAddr;</p>
<p>&nbsp;//&nbsp;范围判断<br>
&nbsp;if&nbsp;(dwAddr&nbsp;&lt;&nbsp;pPE_Header-&gt;OptionalHeader.SizeOfHeaders&nbsp;&amp;&amp;&nbsp;(int)dwAddr&nbsp;&lt;&nbsp;File_Length)<br>
&nbsp;&nbsp;return&nbsp;dwAddr;</p>
<p>&nbsp;//&nbsp;遍历节表<br>
&nbsp;dwSectionOffset&nbsp;=&nbsp;pPE_Header-&gt;FileHeader.SizeOfOptionalHeader&nbsp;+&nbsp;0x18;&nbsp;<br>
&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;pPE_Header-&gt;FileHeader.NumberOfSections;&nbsp;i&nbsp;++,&nbsp;dwSectionOffset&nbsp;+=&nbsp;0x28)<br>
&nbsp;{<br>
&nbsp;&nbsp;pSection_Header&nbsp;=&nbsp;(IMAGE_SECTION_HEADER*)((BYTE*)pPE_Header&nbsp;+&nbsp;dwSectionOffset);<br>
&nbsp;&nbsp;if&nbsp;((dwAddr&nbsp;&gt;=&nbsp;pSection_Header-&gt;VirtualAddress)&nbsp;&nbsp;&amp;&amp;&nbsp;(dwAddr&nbsp;&lt;&nbsp;pSection_Header-&gt;VirtualAddress+pSection_Header-&gt;Misc.VirtualSize))<br>
&nbsp;&nbsp;&nbsp;return&nbsp;pSection_Header-&gt;PointerToRawData&nbsp;+&nbsp;dwAddr&nbsp;-&nbsp;pSection_Header-&gt;VirtualAddress&nbsp;;<br>
&nbsp;}</p>
<p>&nbsp;return&nbsp;dwAddr;<br>
}</p>
<p>//&nbsp;函数功能：初始化缓冲区<br>
//&nbsp;函数返回：0-失败；1－成功<br>
int&nbsp;CFI::InitBuff()<br>
{<br>
&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nPeOff;<br>
&nbsp;IMAGE_DOS_HEADER&nbsp;*pDos_Head;<br>
&nbsp;IMAGE_NT_HEADERS&nbsp;*pPE_Header;</p>
<p>&nbsp;if&nbsp;(File_Type&nbsp;==&nbsp;-1)<br>
&nbsp;{<br>
&nbsp;&nbsp;memset(Buff_H,&nbsp;0,&nbsp;sizeof(Buff_H));&nbsp;//&nbsp;头缓冲<br>
&nbsp;&nbsp;memset(Buff_E,&nbsp;0,&nbsp;sizeof(Buff_E));&nbsp;//&nbsp;入口缓冲<br>
&nbsp;}</p>
<p>&nbsp;File_Type&nbsp;=&nbsp;1;<br>
&nbsp;EP&nbsp;=&nbsp;0;<br>
&nbsp;SRead(0,&nbsp;Buff_H,&nbsp;0x400);&nbsp;//&nbsp;读头</p>
<p>&nbsp;//&nbsp;判断类型<br>
&nbsp;switch(*(WORD*)Buff_H)<br>
&nbsp;{<br>
&nbsp;case&nbsp;'MZ':<br>
&nbsp;case&nbsp;'ZM':<br>
&nbsp;&nbsp;File_Type&nbsp;=&nbsp;2;<br>
&nbsp;&nbsp;break;<br>
&nbsp;default:<br>
&nbsp;&nbsp;break;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;继续判断<br>
&nbsp;switch(File_Type)<br>
&nbsp;{<br>
&nbsp;case&nbsp;1:<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;//&nbsp;做为COM文件处理<br>
&nbsp;&nbsp;&nbsp;EP&nbsp;=&nbsp;0;<br>
&nbsp;&nbsp;&nbsp;SRead(EP,&nbsp;Buff_E,&nbsp;0x400);<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;break;<br>
&nbsp;case&nbsp;2:<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;pDos_Head&nbsp;=&nbsp;(IMAGE_DOS_HEADER*)Buff_H;<br>
&nbsp;&nbsp;&nbsp;EP&nbsp;=&nbsp;(pDos_Head-&gt;e_cs&nbsp;+&nbsp;pDos_Head-&gt;e_cparhdr&nbsp;*&nbsp;0x10&nbsp;+&nbsp;pDos_Head-&gt;e_ip)&nbsp;&amp;&nbsp;0xfffff;<br>
&nbsp;&nbsp;&nbsp;SRead(EP,&nbsp;Buff_E,&nbsp;0x400);</p>
<p>&nbsp;&nbsp;&nbsp;//&nbsp;是否存在PE<br>
&nbsp;&nbsp;&nbsp;nPeOff&nbsp;=&nbsp;*(DWORD*)(Buff_H+0x3c);<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(nPeOff&nbsp;!=&nbsp;0&nbsp;&amp;&amp;&nbsp;File_Length&nbsp;&gt;&nbsp;nPeOff)&nbsp;<br>
&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;SRead(nPeOff,&nbsp;Buff_E,&nbsp;8);<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(*(WORD*)Buff_E&nbsp;==&nbsp;'EP')<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SRead(nPeOff,&nbsp;Buff_H,&nbsp;0x400);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File_Type&nbsp;=&nbsp;8;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读PE入口代码到Buff_E<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPE_Header&nbsp;=&nbsp;(IMAGE_NT_HEADERS*)Buff_H;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EP&nbsp;=&nbsp;Rva2Phys(pPE_Header,&nbsp;pPE_Header-&gt;OptionalHeader.AddressOfEntryPoint);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SRead(EP,&nbsp;Buff_E,&nbsp;0x400);<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;break;<br>
&nbsp;default:<br>
&nbsp;&nbsp;SRead(0,&nbsp;Buff_E,&nbsp;0x400);<br>
&nbsp;&nbsp;break;<br>
&nbsp;}</p>
<p>&nbsp;return&nbsp;1;<br>
}</p>
<p>//&nbsp;函数功能：16进制字符串转化为数字<br>
//&nbsp;函数返回：0不是16进制数，1是十六进制数<br>
bool&nbsp;CFI::HexstrToHex(char&nbsp;*str,&nbsp;BYTE&nbsp;&amp;Val)<br>
{<br>
&nbsp;int&nbsp;&nbsp;nLen;<br>
&nbsp;int&nbsp;&nbsp;i;<br>
&nbsp;int&nbsp;&nbsp;pow;<br>
&nbsp;BYTE&nbsp;s;<br>
&nbsp;char&nbsp;ch;&nbsp;&nbsp;&nbsp;<br>
&nbsp;char&nbsp;*p;</p>
<p>&nbsp;nLen&nbsp;=&nbsp;2;<br>
&nbsp;p&nbsp;=&nbsp;str&nbsp;+&nbsp;nLen;<br>
&nbsp;s&nbsp;=&nbsp;0;<br>
&nbsp;pow&nbsp;=&nbsp;1;<br>
&nbsp;for(i&nbsp;=&nbsp;nLen;&nbsp;i&nbsp;&gt;&nbsp;0;&nbsp;i&nbsp;--)<br>
&nbsp;{<br>
&nbsp;&nbsp;ch&nbsp;=&nbsp;*(--p);</p>
<p>&nbsp;&nbsp;if&nbsp;((ch&nbsp;&gt;=&nbsp;'a')&nbsp;&amp;&amp;&nbsp;(ch&nbsp;&lt;=&nbsp;'f'))<br>
&nbsp;&nbsp;&nbsp;ch&nbsp;=&nbsp;ch&nbsp;-&nbsp;'a'&nbsp;+&nbsp;10;<br>
&nbsp;&nbsp;else&nbsp;if&nbsp;((ch&nbsp;&gt;=&nbsp;'A')&nbsp;&amp;&amp;&nbsp;(ch&nbsp;&lt;=&nbsp;'F'))<br>
&nbsp;&nbsp;&nbsp;ch&nbsp;=&nbsp;ch&nbsp;-&nbsp;&nbsp;'A'&nbsp;+&nbsp;10;<br>
&nbsp;&nbsp;else&nbsp;if&nbsp;((ch&nbsp;&gt;=&nbsp;'0')&nbsp;&amp;&amp;&nbsp;(ch&nbsp;&lt;=&nbsp;'9'))<br>
&nbsp;&nbsp;&nbsp;ch&nbsp;=&nbsp;ch&nbsp;-&nbsp;'0';<br>
&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;return&nbsp;false;</p>
<p>&nbsp;&nbsp;s&nbsp;+=&nbsp;ch&nbsp;*&nbsp;pow;<br>
&nbsp;&nbsp;pow&nbsp;*=&nbsp;16;<br>
&nbsp;}</p>
<p>&nbsp;Val&nbsp;=&nbsp;s;<br>
&nbsp;return&nbsp;1;<br>
}</p>
<p>//&nbsp;函数功能：加载文件类型数据<br>
//&nbsp;函数返回：0-失败；1－成功<br>
int&nbsp;CFI::LoadLib_GT()<br>
{<br>
&nbsp;int&nbsp;&nbsp;i,&nbsp;j;<br>
&nbsp;int&nbsp;&nbsp;nRecCount;<br>
&nbsp;int&nbsp;&nbsp;nStrLen;<br>
&nbsp;char&nbsp;*p;<br>
&nbsp;FILETYPEDATA_GT&nbsp;*pRecGT;</p>
<p>&nbsp;//&nbsp;加载GT库<br>
&nbsp;pRecGT&nbsp;=&nbsp;FileTypeRec_GT;<br>
&nbsp;nRecCount&nbsp;=&nbsp;sizeof(FileTypeRec_GT)/sizeof(FILETYPEDATA_GT);<br>
&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;nRecCount;&nbsp;i&nbsp;++,&nbsp;pRecGT&nbsp;++)<br>
&nbsp;{<br>
&nbsp;&nbsp;memset(pRecGT-&gt;RecData,&nbsp;0,&nbsp;sizeof(pRecGT-&gt;RecData));<br>
&nbsp;&nbsp;nStrLen&nbsp;=&nbsp;strlen(pRecGT-&gt;strData);<br>
&nbsp;&nbsp;pRecGT-&gt;nRecLen&nbsp;=&nbsp;nStrLen/2;<br>
&nbsp;&nbsp;p&nbsp;=&nbsp;pRecGT-&gt;strData;<br>
&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;pRecGT-&gt;nRecLen;&nbsp;j&nbsp;++)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(!HexstrToHex(p,&nbsp;pRecGT-&gt;RecData[j]))<br>
&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;p&nbsp;+=&nbsp;2;<br>
&nbsp;&nbsp;}<br>
&nbsp;}<br>
&nbsp;return&nbsp;1;<br>
}</p>
<p>//&nbsp;函数功能：加载文件类型数据<br>
//&nbsp;函数返回：0-失败；1－成功<br>
int&nbsp;CFI::LoadLib_PE()<br>
{<br>
&nbsp;int&nbsp;&nbsp;i,&nbsp;j;<br>
&nbsp;int&nbsp;&nbsp;nRecCount;<br>
&nbsp;int&nbsp;&nbsp;nStrLen;<br>
&nbsp;char&nbsp;*p;<br>
&nbsp;FILETYPEDATA_PE&nbsp;*pRecPE;</p>
<p>&nbsp;//&nbsp;加载PE库<br>
&nbsp;pRecPE&nbsp;=&nbsp;FileTypeRec_PE;<br>
&nbsp;nRecCount&nbsp;=&nbsp;sizeof(FileTypeRec_PE)/sizeof(FILETYPEDATA_PE);<br>
&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;nRecCount;&nbsp;i&nbsp;++,&nbsp;pRecPE&nbsp;++)<br>
&nbsp;{<br>
&nbsp;&nbsp;//&nbsp;Pos<br>
&nbsp;&nbsp;memset(pRecPE-&gt;PosData,&nbsp;0,&nbsp;sizeof(pRecPE-&gt;PosData));<br>
&nbsp;&nbsp;nStrLen&nbsp;=&nbsp;strlen(pRecPE-&gt;Pos);<br>
&nbsp;&nbsp;pRecPE-&gt;nPosLen&nbsp;=&nbsp;nStrLen/2;<br>
&nbsp;&nbsp;p&nbsp;=&nbsp;pRecPE-&gt;Pos;<br>
&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;pRecPE-&gt;nPosLen;&nbsp;j&nbsp;++)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(!HexstrToHex(p,&nbsp;pRecPE-&gt;PosData[j]))<br>
&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;p&nbsp;+=&nbsp;2;<br>
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;//&nbsp;Fea<br>
&nbsp;&nbsp;memset(pRecPE-&gt;FeaData,&nbsp;0,&nbsp;sizeof(pRecPE-&gt;FeaData));<br>
&nbsp;&nbsp;nStrLen&nbsp;=&nbsp;strlen(pRecPE-&gt;Fea);<br>
&nbsp;&nbsp;pRecPE-&gt;nFeaLen&nbsp;=&nbsp;nStrLen/2;<br>
&nbsp;&nbsp;p&nbsp;=&nbsp;pRecPE-&gt;Fea;<br>
&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;pRecPE-&gt;nFeaLen;&nbsp;j&nbsp;++)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(!HexstrToHex(p,&nbsp;pRecPE-&gt;FeaData[j]))<br>
&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;p&nbsp;+=&nbsp;2;<br>
&nbsp;&nbsp;}<br>
&nbsp;}<br>
&nbsp;return&nbsp;1;<br>
}</p>
<p>//&nbsp;函数功能：加载文件类型数据<br>
//&nbsp;函数返回：0-失败；1－成功<br>
int&nbsp;CFI::LoadLib()<br>
{<br>
&nbsp;LoadLib_GT();<br>
&nbsp;LoadLib_PE();<br>
&nbsp;return&nbsp;1;<br>
}</p>
<p>//&nbsp;分析文件类型GT<br>
FILETYPEDATA_GT&nbsp;*CFI::FI_GT()<br>
{<br>
&nbsp;int&nbsp;&nbsp;i,&nbsp;j,&nbsp;s;<br>
&nbsp;int&nbsp;&nbsp;nRecCount;<br>
&nbsp;BYTE&nbsp;*p;<br>
&nbsp;FILETYPEDATA_GT&nbsp;*pRecGT;</p>
<p>&nbsp;//&nbsp;GT库<br>
&nbsp;pRecGT&nbsp;=&nbsp;FileTypeRec_GT;<br>
&nbsp;nRecCount&nbsp;=&nbsp;sizeof(FileTypeRec_GT)/sizeof(FILETYPEDATA_GT);<br>
&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;nRecCount;&nbsp;i&nbsp;++,&nbsp;pRecGT&nbsp;++)<br>
&nbsp;{<br>
&nbsp;&nbsp;s&nbsp;=&nbsp;0;<br>
&nbsp;&nbsp;p&nbsp;=&nbsp;pRecGT-&gt;RecData;<br>
&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;pRecGT-&gt;nRecLen;&nbsp;j&nbsp;++,&nbsp;p&nbsp;++)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(*p&nbsp;==&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>
&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;s&nbsp;+&nbsp;(*p&nbsp;^&nbsp;Buff_E[j]);<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(s&nbsp;!=&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;if&nbsp;(s&nbsp;==&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;return&nbsp;pRecGT;<br>
&nbsp;}</p>
<p>&nbsp;return&nbsp;NULL;<br>
}</p>
<p>//&nbsp;分析文件类型PE<br>
FILETYPEDATA_PE&nbsp;*CFI::FI_PE()<br>
{<br>
&nbsp;int&nbsp;&nbsp;i,&nbsp;j;<br>
&nbsp;int&nbsp;&nbsp;nRecCount;<br>
&nbsp;BYTE&nbsp;*p;<br>
&nbsp;FILETYPEDATA_PE&nbsp;*pRecPE;</p>
<p>&nbsp;//&nbsp;PE库<br>
&nbsp;pRecPE&nbsp;=&nbsp;FileTypeRec_PE;<br>
&nbsp;nRecCount&nbsp;=&nbsp;sizeof(FileTypeRec_PE)/sizeof(FILETYPEDATA_PE);<br>
&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;nRecCount;&nbsp;i&nbsp;++,&nbsp;pRecPE&nbsp;++)<br>
&nbsp;{<br>
&nbsp;&nbsp;p&nbsp;=&nbsp;pRecPE-&gt;FeaData;<br>
&nbsp;&nbsp;if&nbsp;(pRecPE-&gt;IsOrdered)<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;pRecPE-&gt;nFeaLen;&nbsp;j&nbsp;++,&nbsp;p&nbsp;++)<br>
&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(*p&nbsp;!=&nbsp;Buff_E[j])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(j&nbsp;==&nbsp;pRecPE-&gt;nFeaLen)<br>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pRecPE;<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;else<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;pRecPE-&gt;nFeaLen;&nbsp;j&nbsp;++,&nbsp;p&nbsp;++)<br>
&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(*p&nbsp;!=&nbsp;Buff_E[pRecPE-&gt;PosData[j]-1])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;if&nbsp;(j&nbsp;==&nbsp;pRecPE-&gt;nFeaLen)<br>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pRecPE;<br>
&nbsp;&nbsp;}<br>
&nbsp;}</p>
<p>&nbsp;return&nbsp;NULL;<br>
}</p>
<p>//&nbsp;分析文件类型<br>
char&nbsp;*CFI::FIRec(char&nbsp;*str)<br>
{<br>
&nbsp;FILETYPEDATA_GT&nbsp;*pRecGT;<br>
&nbsp;FILETYPEDATA_PE&nbsp;*pRecPE;</p>
<p>&nbsp;//&nbsp;PE<br>
&nbsp;if&nbsp;((pRecPE=FI_PE())&nbsp;!=&nbsp;NULL)<br>
&nbsp;{<br>
&nbsp;&nbsp;strcpy(str,&nbsp;pRecPE-&gt;Info);<br>
&nbsp;&nbsp;return&nbsp;str;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;GT<br>
&nbsp;if&nbsp;((pRecGT=FI_GT())&nbsp;!=&nbsp;NULL)<br>
&nbsp;{<br>
&nbsp;&nbsp;strcpy(str,&nbsp;pRecGT-&gt;strName);<br>
&nbsp;&nbsp;strcat(str,&nbsp;"&nbsp;&nbsp;&nbsp;");<br>
&nbsp;&nbsp;strcat(str,&nbsp;pRecGT-&gt;strType);<br>
&nbsp;&nbsp;return&nbsp;str;<br>
&nbsp;}</p>
<p>&nbsp;return&nbsp;NULL;<br>
}</p>
<p>//&nbsp;函数功能：分析文件类型<br>
cli_file_t&nbsp;CFI::cli_filetype(const&nbsp;char&nbsp;*buf,&nbsp;size_t&nbsp;buflen,&nbsp;char&nbsp;*strInfo)<br>
{<br>
&nbsp;int&nbsp;i,&nbsp;ascii&nbsp;=&nbsp;1,&nbsp;len;</p>
<p>&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;cli_magic[i].magic;&nbsp;i++)&nbsp;<br>
&nbsp;{<br>
&nbsp;&nbsp;if(buflen&nbsp;&gt;=&nbsp;cli_magic[i].offset+cli_magic[i].length)&nbsp;<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;if(memcmp(buf+cli_magic[i].offset,&nbsp;cli_magic[i].magic,&nbsp;cli_magic[i].length)&nbsp;==&nbsp;0)&nbsp;<br>
&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;strcpy(strInfo,&nbsp;cli_magic[i].descr);<br>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cli_magic[i].type;<br>
&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
&nbsp;}</p>
<p>&nbsp;buflen&nbsp;&lt;&nbsp;25&nbsp;?&nbsp;(len&nbsp;=&nbsp;buflen)&nbsp;:&nbsp;(len&nbsp;=&nbsp;25);<br>
&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;len;&nbsp;i++)<br>
&nbsp;{<br>
&nbsp;&nbsp;if(!internat[buf[i]&nbsp;&amp;&nbsp;0xff])&nbsp;<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;ascii&nbsp;=&nbsp;0;<br>
&nbsp;&nbsp;&nbsp;break;<br>
&nbsp;&nbsp;}<br>
&nbsp;}</p>
<p>&nbsp;if&nbsp;(ascii)<br>
&nbsp;&nbsp;strcpy(strInfo,&nbsp;"Text&nbsp;file.");<br>
&nbsp;else<br>
&nbsp;&nbsp;strcpy(strInfo,&nbsp;"COM&nbsp;file&nbsp;or&nbsp;Others.");<br>
&nbsp;return&nbsp;ascii&nbsp;?&nbsp;CL_TYPE_UNKNOWN_TEXT&nbsp;:&nbsp;CL_TYPE_UNKNOWN_DATA;<br>
}</p>
<p>//&nbsp;分析文件加壳等类型<br>
int&nbsp;CFI::FI(char&nbsp;*strFileName,&nbsp;char&nbsp;*strInfo)<br>
{<br>
&nbsp;//&nbsp;打开文件<br>
&nbsp;if&nbsp;((fp&nbsp;=&nbsp;fopen(strFileName,&nbsp;"rb"))&nbsp;==&nbsp;NULL)<br>
&nbsp;{<br>
&nbsp;&nbsp;strcpy(strInfo,&nbsp;"Open&nbsp;file&nbsp;failed.");<br>
&nbsp;&nbsp;return&nbsp;false;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;读文件大小<br>
&nbsp;if&nbsp;((File_Length&nbsp;=&nbsp;GetFileSize(fp))&nbsp;==&nbsp;0)<br>
&nbsp;{<br>
&nbsp;&nbsp;strcpy(strInfo,&nbsp;"Size&nbsp;of&nbsp;file&nbsp;is&nbsp;0.\n");<br>
&nbsp;&nbsp;return&nbsp;false;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;初始化缓冲区<br>
&nbsp;if&nbsp;(!InitBuff())<br>
&nbsp;{<br>
&nbsp;&nbsp;strcpy(strInfo,&nbsp;"Isn't&nbsp;exe&nbsp;file.\n");<br>
&nbsp;&nbsp;return&nbsp;false;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;加载类型库<br>
&nbsp;if&nbsp;(!LoadLib())<br>
&nbsp;{<br>
&nbsp;&nbsp;strcpy(strInfo,&nbsp;"Load&nbsp;filetype&nbsp;lib&nbsp;failed.\n");<br>
&nbsp;&nbsp;return&nbsp;false;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;判断类型<br>
&nbsp;if&nbsp;(!FIRec(strInfo))<br>
&nbsp;{<br>
&nbsp;&nbsp;if&nbsp;(File_Type&nbsp;==&nbsp;2)<br>
&nbsp;&nbsp;&nbsp;strcpy(strInfo,&nbsp;"DOS&nbsp;execute&nbsp;file!\n");<br>
&nbsp;&nbsp;else&nbsp;if&nbsp;(File_Type&nbsp;==&nbsp;8)<br>
&nbsp;&nbsp;&nbsp;strcpy(strInfo,&nbsp;"PE&nbsp;file!\n");<br>
&nbsp;&nbsp;else&nbsp;<br>
&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;SRead(0,&nbsp;Buff_H,&nbsp;sizeof(Buff_H));<br>
&nbsp;&nbsp;&nbsp;cli_filetype((char*)Buff_H,&nbsp;sizeof(Buff_H),&nbsp;strInfo);<br>
&nbsp;&nbsp;}<br>
&nbsp;}<br>
&nbsp;return&nbsp;true;<br>
}</p>
<p>void&nbsp;main(int&nbsp;avgc,&nbsp;char&nbsp;**argv)<br>
{<br>
&nbsp;char&nbsp;strFileInfo[0x200];<br>
&nbsp;CFI&nbsp;&nbsp;aFi;</p>
<p>&nbsp;//&nbsp;初始化<br>
&nbsp;printf("FileInfo&nbsp;v1.0&nbsp;(c)&nbsp;2006.10.23&nbsp;by&nbsp;wangwei.\n");<br>
&nbsp;printf("My&nbsp;bolg:&nbsp;<a href="http://hi.baidu.com/avengine/n/n">http://hi.baidu.com/avengine\n\n</a>");<br>
&nbsp;memset(strFileInfo,&nbsp;0,&nbsp;sizeof(strFileInfo));<br>
&nbsp;if&nbsp;(avgc&nbsp;!=&nbsp;2)<br>
&nbsp;{<br>
&nbsp;&nbsp;printf("Fi&nbsp;[FILE]\n");<br>
&nbsp;&nbsp;return;<br>
&nbsp;}</p>
<p>&nbsp;//&nbsp;判断类型<br>
&nbsp;aFi.FI(argv[1],&nbsp;strFileInfo);<br>
&nbsp;printf("%s\n",&nbsp;strFileInfo);<br>
}</p>
<p>&nbsp;</p> <a href="http://hi.baidu.com/avengine/blog/item/bd1793dd16a022345882dd7d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/avengine/blog/category/%D3%A6%D3%C3%D4%B4%C2%EB">应用源码</a>&nbsp;<a href="http://hi.baidu.com/avengine/blog/item/bd1793dd16a022345882dd7d.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-09  18:13</pubDate>
        <category><![CDATA[应用源码]]></category>
        <author><![CDATA[sa_wangwei]]></author>
		<guid>http://hi.baidu.com/avengine/blog/item/bd1793dd16a022345882dd7d.html</guid>
</item>


</channel>
</rss>