Comment creer un anti spam ou anti virus avec delphi

yasoft1 Messages postés 13 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 14 novembre 2009 - 14 mars 2006 à 20:39
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 8 avril 2009 à 16:14
voila je voudrai faire un anti virus pourcela:
-il faudra avoir l'emplacement de l'executable du virus sur le disque dur (le supprimer)
-avoir la cle de registre du virus (la supprimmer)
voila c'est asser simple pour les virus existant mais un peut long pour entrer tout les caracteritiques des 19 000 virus ressencer par sophos.
voila ex:

if FileExists('c:/bla/blabla.exe') then
label1:='virus blabla trouver';
DeleteFile(c:/bla/blabla.exe');

et sa 19 000 fois
bon mon vraix probleme c'est la recherche de virus camicaze par example un .bat
qui contient:

format c:

peut paretre tres dangereux et doit etre supprimmer et non pas executer je cherche a empecher cela
lorsque l'utilusateur ouvre un fichier .bat mon programme s'executera et verifira son contenu si il n'est pas dangereus il s'ouvrira
s'il est dangereux il s'ouvrira pas et l'utilisateur sera averti du danger.
Je sais que il existe une cle de registre qui permet l'orsque l'on ouvre un .bat de ouvrir un autre programme a la place c'est interessent apart que le probleme c'est que le .bat lui meme s'ouvre plus et c'est mon programme qui s'ouvre tout le temps
faudrai trouver une sollution pour que le programme une fois analyser mon programme donne le feux vert et que le bat soit executer.
merci d'avance

11 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
15 mars 2006 à 06:38
abandonne!

créer un programme de protection (anti-virus, anti-spy, ect...) requiere de trés nombreuse competences en matiere de systeme et egalement de securitée.

et il y a une grosse difference entre effacer un fichier et kicker un malware.

voici le principe de fonctionement d'un tel programme :

surveillance => detection/analyse => reponse : suppression, blocage, mises en quarantaine => reparation/prevention

voici le niveau de difficultée de chaque partie :

surveillance > expert
detection > expert
analyse > avertis/expert
reponse > avertis/expert
blocage > avertis/expert
suppression > expert
quarantaine > expert
prevention > avertis/expert
reparation > expert

et je ne te parle que du fonctionnement. pas du developpement qui requiere une niveau general expert.

voici maintenant une table de niveau/difficultée ou tu devras te situer pour savoir si oui ou non tu vas pouvoir elaborer un tel programme :

Moi je suis quelque entre ici et la ----------------------+-----+ * comme beaucoup sur delphifr...
/ \
V V
+----------+-------------+------------+-----------+-----------+--------------+-------+--------+-------------+
| neophite | courageux | debutant | padawan | amateur | semi-pro | pro | jedi | maitre jedi |
|----------+------+------+------------+-----------+-------+---+--------------+---+---+--------+-------------+
|trés facile-> |facile -> |intermediaire -> |difficile/avertis -> |veteran/expert -> |
+-----------------+-------------------+-------------------+----------------------+--------------------------+

en toute objectivitée, et sans moquerie aucune, loin de moi cette idée, je pense que, au vus de ta question tu te situe entre Courageux et Debutant (tu moins c'est ce que ta question me laisse penser).
mais c'est deja bien, etre debutant en delphi c'est deja faire preuve de quelque connaissance premiere.
l'evolution est trés trés longue pour atteindre le niveau padawan/amateur ou la tu peu vraiment commencer a faire des programmes concret.

La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
1
Utilisateur anonyme
15 mars 2006 à 09:55
Salut à toi

fOxi a totalement raison : c'est un travail énorme qui necessite une véritable équipe et une connaissance professionnelle en programmation.

Meme si tu arrives à faire un tel programme pour qu'il reste efficace tu devras le remettre constamment à jour vu le nombre de nouveaux virus qui arrivent tout les jours.

Il existe différentes techniques pour reconnaitre un virus deja connu. Une des technique les plus utilisés est l'analyse de la signature. Je ne sais pas si tu as deja regardé cela de plus pres : le faire manuellement avec un editeur hexadecimal c'est deja tout un art qui ne peut etre realisé que par des gens qui ont deja un sacré niveau. Alors imagine mettre au point un programme capable d'analyser automatiquement une signature : aie aie aie. un site ou on te donne des signatures de virus connus : pas sur que tu en trouves.

Bon imagine que tu arrives à faire tout cela. Ensuite il te faut faire un programme connecté 24h sur 24 sur internet pour scruter le web à la recherche de nouveaux virus (il suffit plus de le détecter mais de vérifier qu'il s'agit d'un virus) et ensuite faire une base de données par exemple.

Bon je pense que tu as compris la quasi impossibilité pour une personne seule de faire un tel programme meme si tu es un pro. Par contre tu peux faire un firewall : c'est bcp bcp plus simple aussi bien du point de vue du principe que de la programmation.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 mars 2006 à 18:14
J'adore le graphe de fOxi.

Je dis pas que faire un vrai antivirus soit facile, mais si la recherche de signature se contente de faire une comparaison octet par octet (Le courageux que je suis irrait voir du côté de TFileStream ou quequechose comme ça), c'est pas insurmontable. Y a moyen de s'amuser un peu.

surveillance > un bouton analyse
detection > comparaison octet par octet des fichiers et signatures
Et pour le reste, un ShowMessage avec le nom du virus et le fichier, y a pas de quoi tuer un padawan.

Bon après, si tu commences à entrer dans les virus polymorphes, ceux qui font mumuse dans la base de registre, les macros... T'en a pour jusqu'à la fin de tes jours: ça se développe tout le temps.

Pour le lancement du .bat après analyse, peut être qu'un simple ShellExecute avec 'cmd "Chemin.bat"' suffirait. Mais je dis ça avec réserve...
0
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
15 mars 2006 à 19:57
bon je vois que effectivement yasoft1 est courageux, et c'est une bonne chose car un programmeur fénéant est un mauvais programmeur...

maintenant toute la difficulté réside sur plusieurs choses

1 - Avoir une bonne connaissance dans les techniques de lecture/écriture depuis un flux(Stream) TMemoryStream étant le meilleur vu qu'il faut travaillé rapidement.

2 - Savoir également créé sa propre base de données avec le travail en Stream, tout en utilisant un cryptage puisssant, pour d'une part protéger son travail mais également afin d'éviter qu'un software malveillant puisse modifié ta base de données afin de la rendre inutilisable !!!, une bonne connaissance en cryptologie est donc de rigueur !!, notamment pour la signature des virus, soit MD5 maus plus fiable encore le SHA-1.(pour le SHA-1 il existe sur le net une version écrite en asm et donc assez rapide).

3 - Bon là inutile de dire qu'il faille avoir une bonne connaissance de la programmation orienté objet(et je ne parle même pas de polymorphisme voir http://www.commentcamarche.net/poo/polymorp.php3 où pour java mais bon exemple quand même http://mess.genezys.net/polymorphisme), et aussi un multi-threads car il va y en avoir des threads !!! ;)

4 - Maintenant un Anti-Virus, Spyware ne s'arrête pas à scanner les répertoires windows afin de voir si ya un virus ça serait trop facile !!!, la plupart des virus vont modifié la base de registre windows(ah tiens ..), et vont ajouter de nouveaux services, enfin tout les trucs imaginable que peu offrire la base de registre et vu que le noyau de l'OS réside en partie dans cette base de registre bah ma foi il existe beaucoup de manip pour ces virus, sachant que bien souvent il vont s'attaquer au webbrowser(ici on parle de BHO Browser Helper Object pour plus d'info voir http://assiste.free.fr/p/internet_attaques/bho.php), mais le plus dangereux est tout ce qui ce rapporte aux ActiveX.

5 - très bien jusque là on est censé avoir franchit tous ces obstacles avec succès encore faut-il avoir une base de données pour effectué la recherche, et là ya problème car il ya près de 36149 malware au moment que j'écris cette ce post, comment faire ?, bah c'est le grand problème car a moins d'avoir soit une équipe pour bosser que sur la base de données, soit avoir de bon rapport avec un labo anti-virus et leur demander un accès à celle-ci afin de la convertir(bon là faut pas rêver car généralement ce genre de données c'est payant vu qu'ils passent des heures ....)

Enfin bref si on est vraiment motivé ya possibilité de le faire(avec un peu d'aide par-ci par-là, avec bien entendu toutes les compétances décrites plus haut.

Donc bon courage !!! :)

pour info supplémentaire :

- http://assiste.free.fr/p/ <== ya une explication sur qu'est-ce qu'un trojan, spyware ect...

- http://www3.ca.com/securityadvisor/pest/ <=== un des meilleurs site sur les virus mis à jour régulierment

- http://www3.ca.com/securityadvisor/pest/browse.aspx?cat=Hijacker <=== toujours le même site avec cette fois-ci pratiquement tous les malwares connus dans le monde avec en prime les clés de la base de registre windows + liste des fichiers contenus dans le repertoire windows :)

en réalité le plus dure c'est la base de données il ya beaucoup trop de données.. et tout en sachant que presque chaque semaine c'est près de 20 malwares à rajouter à la liste tout en prenant en compte que chaque virus peut avoir plus de 10 fichiers et clés de la base de registre, et là je ne parle même pas des ver qui on la possibilité de se multiplié à l'infini avec une auto génération des clés(aléatoire).

voilà ça sera tout, en tout cas ne te laisse pas décourager c'est comme ça qu'on progresse dans la vie après tout, toujours se lancé des défis ;)

où sinon ya TSpywareScanner chez http://www.qwertystudios.com/index.php?name=product&product=tspyware-scanner

qui fait :

Spyware;

Adware;

BHOs (Browser Helper Objects);

Trojans;

Trackware;

Dialers;

Keyloggers.

mais c'est payant(évidemment puisque le domaine de la sécurité a toujours été un bon profit pour les developpeurs et je m'abstient de lancer une paul & Myck sur ce sujet qu'au moins 35% des virus proviennent de chez des sociétés anti-virus, d'ailleur qui n'a jamais eu l'écran qui se fige pendant un court instant puis une icone sur la barre de tache avec le message(ironique) "salut je suis ton super sauveur je vais effacer tous les virus présent sur ton ordis, oulala il ya un sacré paquet disdonc(normal puisque sans le savoir je viens de te télécharger quelques centaine de virus à l'insu de ton plein gré)

Shining Freeeman.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
15 mars 2006 à 20:31
Sincèrement tu es mal barré dans ton projet :

Tu veux juste comparer les bits ?.

Bien tu vois moi je vais sur CS et je peux trouver l'open source d'un virus tres connu. Je le compile : tu l'analyses ok. tu mets tous les octets
dans une base de données (qui va donc en plus etre énorme ok).

*Dans 15 jours je recompile le meme virus : ton antivirus ne le detectera pas. Pk ?rien qu'un changement de date au niveau de la compilation va changer une partie des octets et donc ca collera plus avec ta base de données.

*Encore plus fort : je dissimile mon virus dans une photo par un binder. TOn antivirus vera que dalle : pk ? car il connait pas la photo n'est pas dans ta base de données. Je parle meme pas du fait qu'il va falloir que tu es une idée de limpacte de la photo sur le virus au niveau des octets.

Tu reves trop mais bon essaye toujours.
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
16 mars 2006 à 02:12
Moi je dirais, essaye tout de meme, au moins pour la technique cela peut etre trés enrichissant et a le merite d'etre trés original.

mais ne part pas du principe que tu reussiras tout tout de suite... y'a de grande chance pour que les 50 premieres heures de developpement soit un veritable enfer ...

Pour detecter un virus, on ne cherche pas quelques bits ou bytes comme cela ... y'a une methode a respectée, en sachant qu'une analyse de virus est entourée de multiple controls et tout cela doit aller trés trés trés vite (- de 2 secondes).

Et il ne sagit pas que de tester un exe, mais bel et bien tout les appels transmis par l'executable (autres executables, dll, driver, ressources, fichiers ect...)

selon le virus ensuite, il va y avoir plusieur methode de suppression, de bloquage. On ne vois pas tout cela quand on regarde ce que fait un anti-virus (avast, nod32, ect...) mais il y a bien a chaque cas une methode appropriée.
on ne peu pas supprimer un virus de boot comme un virus de bios ou un process chargé en critical.

il faut pour cela bien connaitre le systeme Windows, le systeme de fichier NTFS/FAT et bien entendus intercepter les flux d'execution du systeme pour donner une aprobation de lancement du fichier ou non.
bien sur, il faut l'intercepter bien avant que le gestionnaire de fichier du systeme ne l'intercepte.

de plus il faudrat aussi prevoir le coup de l'attaque multiple, il faudrat savoir aussi proteger en prioritée le noyau systeme (et ses fichiers) et verifier leurs integritée aprés une attaque (registre, config, pilotes).

cela vas demander de trés bonne notion en processus, thread, stream, messages et bien entendus, assembleur ...
car ne crois pas qu'on developpe un anti-virus en pur Delphi (c'est trop lourd) et tout les systemes d'analyse, de reponse et critique devront etre developper en assembleur (tout ou en partis).

si on prend l'exemple d'avast, tu doit faire un logiciel capable de bloquer 5..20 attaques en moins d'une seconde sans que les performances du systeme en sois degradée a plus de 50% (en gros le systeme doit toujours repondre de maniere fluide ou presque).

maintenant, coté base de signature, un AV ne se base pas que sur cela. Il sctrute egalement l'activitée des process. Beaucoup de virus se connecte a des DLL bien precise (netbios, reseaux, protocol tcpip, mail), lance d'autre process precis (ftp, telnet, commandes registre) et se connecte a des ports precis (21,25,80,8080,125,135,136,137,138,139,445,5000,666 ect...), le process tante de lancer des processus en mode critique, ou tante de se cacher en se relancant en tant que service ou pilote systeme.

Selon cette activité, une probabilitée definit un niveau de danger du processus qui vas donc definir la prioritée de surveillance de ce process.
Et a partir d'un seuil critique selon le degré d'analyse (bas..haut) de l'anti-virus, il vas pouvoir repondre seul ou demander a l'utilisateur (ou au moins le previnir) de cette douteuse activitée en lui demandant que faire : bloquer, mettre en quarantaine, supprimer, soumettre au service d'analyse de virus des concepteurs du logiciel, ne rien faire, mettre en liste blanche, mettre en liste noire (ne bloque pas mais surveille en permanance et reprevient l'utilisateur a chaque fois que l'activitée redeviens douteuse).

Il y a des virus trés simple a identifier, sans meme analyser la signature, voici tout ce que j'ai pus constater a peu prés sur tout les virus que j'ai pus tester depuis le temps (+ de 100), a chaque fois j'ai pus verifier plusieurs point comuns decrit ici:

-connection HTTP existante, navigateur ouvert et activitée de navigation sur le web en cours.
-installation automatique d'un executable (merci s*l*perie de IE, utilisez FireFox!)
-lancement de l'executable installé
-lancement de Telnet.exe ou Ftp.exe ou Ftpx.exe
-connection/activitée sur port 20, 21, 23, 25, 69, 80, 107, 109, 110, 119, 123, 135, 137, 138, 139, 443, 445, 555.... et pour ne citer que les plus courrants.
-telechargement de fichier dans c:\windows, c:\windows\system32, c:\windows\system32\drivers
-chargement de processus en mode critique, service, pilotes
-modification du fichier c:\windows\system32\drivers\etc\Hosts.
-envois massif de mails, requette netbios massive, chargement de page html, lancement de script JS et WS ect..
-blocage de processus et commande/executable systeme (cmd, taskmgr, msconfig, regedit, explorer, fichier MMC, CPL)

voila bon courage!


0
SniXa Messages postés 5 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 26 mai 2008
26 mai 2008 à 13:11
Courage Man tout est possible.. et on est toujour les gagnants
0
amrouche015 Messages postés 8 Date d'inscription vendredi 30 janvier 2009 Statut Membre Dernière intervention 7 septembre 2011
29 janv. 2009 à 21:23
voila c'est vrai que programmer un antivirus est un collosale et requiert beaucoups de competences et de maitrise. mais j'aimerais quand méme vous voir repondre a la question posée par notre ami yasoft1. comment bloquer l'execution d'un fichier .bat et ensuite l'autoriser a s'executer sur certaines condition?


je souhaite avoir une reponse a cette question


merci d'avance
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
30 janv. 2009 à 09:19
J'imagine que faire un hook d'API de CreateProcess, ShellExecute, ou encore un hook du service système NtCreateProcess devrait convenir. Hook d'API en user mode.

Pour hooker NtCreateProces, le mieux est de faire un driver j'imagine.
0
jeankatu Messages postés 8 Date d'inscription mercredi 27 août 2008 Statut Membre Dernière intervention 8 avril 2009
8 avril 2009 à 16:03
s'il vous plait je veut savoir comment crée un virus

Jeannot KATUKONKI MUKEKE
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
8 avril 2009 à 16:14
jeankatu -> On ne donne pas d'aide pour faire des virus, trojan et autres malwares sur CS.

amrouche015 -> Depuis, j'ai croisé un code ici.
0
Rejoignez-nous