Le crime parfait

Soyez le premier à donner votre avis sur cette source.

Vue 8 182 fois - Téléchargée 534 fois

Description

Suite aux derniers "posts" au sujet de la manipulation d'un .exe :

http://www.delphifr.com/codes/ALLEZ-HOP-INI-DAT-BIN-ETC-TOUS-DANS_51662.aspx
http://www.delphifr.com/codes/MEMORISER-DONNEES-DANS-EXE_51685.aspx

il est apparu que l'utilisation d'un petit utilitaire destiné à 'faire le ménage' s'avère indispensable dans presque tous les cas.
Ce petit utilitaire devant être 'autodestructible', je me suis logiquement orienté vers un fichier .bat dans un premier temps.

Mais une incompatibilité d'humeur avec ces c... d'applications batch assombrit bientôt le ciel de cette idylle.
Je demandais alors conseil à mon ami Cirec, bien connu pour ses talents à résoudre les problèmes conjugaux.
Et il me proposa LA solution !
Il me donna en effet le secret pour "suicider" l'utilitaire sans laisser de trace : Le crime parfait !

Un grand merci à Cirec ! ;)

Voici donc un petit exemple d'application qui réunit tous ces charmes pour nous séduire :
- menue (15Ko)
- svelte (exécution brève)
- sans fard (pas d'attribut inutile)
- génétiquement suicidaire (grâce à la potion cirécienne)
et elle ne demande qu'à faire, en catimini, ce que vous lui demanderez de faire... avant de s'esquiver. A vous de l'éduquer.

Fait sous XP et D7
avec l'aide précieuse de Cirec et rt15

Source / Exemple :


PROGRAM Project1;

uses
  Windows,
  ShellAPI;

BEGIN
  { Votre code: }
  ShellAbout  (0,
              'cette petite application de 15Ko',
              'Elle ne sert strictement à rien   ( pffff... )' + #13#10 +
              'Donc, judicieusement, elle disparaîtra ! ;)      Caribensila',
               0);

  { La ligne qui tue les p'tites et les grosses: }
  ShellExecute(0,
               nil,         // By Cirec & rt15. Thanks to both boss !  ;) //
              'CMD',
               PChar('/K "for /L %I IN (1 1 10000) DO ping -n 2 127.0.0.1 > NUL' +
                     '&& if EXIST '+GetCommandLine+' (del '+GetCommandLine+') ELSE exit"'),
               nil,
               0);
END.

Conclusion :


Pour pouvoir contempler l'.exe de ce joli p'tit bout d'application, faire dans l'IDE de Delphi :
Projet/Compiler Project1
L'.exe sera construit et je vous conseille, pour tester, de le copier/coller sur le bureau, par exemple.
En effet, l'exe est autodestructible et il disparaît après chaque lancement (comme vous l'aviez compris).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Caribensila: il me semble qu'ici les PING sont ici exécutés séquentiellement, pas en parallèle (c'est même le but de la manœuvre!). Il n'y en a donc jamais plus d'un à la fois, ce qui ne devrait pas trop gêner le scheduler.
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
MAURICIO: Peut-être que TASKLIST ne fonctionne pas pareil alors. Théoriquement, lorsque le processus n'existe pas, la commande renvoie 1 seule ligne de texte. Sinon, elle en renvoie plusieurs (3 il me semble). Mon fichier BAT compte le nombre de sauts de lignes renvoyés par TASKLIST: s'il y en a plus de zéro (processus "running"), il réessaie jusqu'à ce qu'il n'en reste plus (processus "stopped").
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
14
Salut,


Testé sous XP :

l:=TStringList.Create;
try
l.Add('@echo off');
l.Add(':loop');
l.Add('del "%cd%\' + ExtractFileName(Application.Exename) + '"');
l.Add('if exist "%cd%\' + ExtractFileName(Application.Exename) + '" goto :loop');
l.Add('del "%cd%\MrPropre.bat"');
l.SaveToFile('MrPropre.bat');
ShellExecute(0,nil,'MrPropre.bat',0,nil,0);
finally
l.Destroy;

---------------------------------------------------------

Pour ce qui est de la temporisation avec le PING, je me demande si ce ne serait pas une fausse bonne idée, finalement.
Car, sauf erreur, un PING crée un process. Et on ne fait que remplacer une suite de messages système par une suite de création de process.
Et je ne suis pas sûr que le Scheduler Windows apprécie tant que ça.

La meilleure solution, je crois, c'est de créer le .bat au tout dernier moment.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Le code du fichier bat tourne en boucle :)
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
euh ...
{$EXTERNALSYM SW_HIDE}
SW_HIDE = 0;
{$EXTERNALSYM SW_SHOWNORMAL}
SW_SHOWNORMAL = 1;

;)
Afficher les 23 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.