1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| program Abra;
// réalise une copie de MonProg.exe vers p1.exe. (exemple avec calc.exe)
// puis charge P1.exe.
// après exécution, détruit p1.exe
// le but est de rendre p1.exe impossible à copier pdt l'exécution...
// à essayer avec n'importe quel *.exe
#include( "stdlib.hhf" )
#include( "fileio.hhf" )
#include( "stdout.hhf" )
#include( "w.hhf" )
static
Fich: dword;
P1exist: boolean;
endstatic;
const
MonF1:string:="C:\WINNT\system32\calc.exe";
MonF2:string:="C:\WINNT\system32\P1.exe";
endconst;
begin Abra;
// fait la copie
w.CopyFile
(
MonF1,
MonF2,
P1exist
);
// ouvre une handle dessus avec dwShareMode mis à 0, mais le but n'est pas atteint...
w.CreateFile
(
MonF2,
w.GENERIC_READ | w.GENERIC_WRITE,
0,
NULL,
w.OPEN_EXISTING,
w.FILE_ATTRIBUTE_NORMAL,
NULL
);
mov (eax, Fich);
// w.CloseHandle(Fich); // - si je ferme le handle ici, P1.exe se charge effectivement, mais on peut facilement le copier via l'Explorateur (juste ce que je veux éviter) // - si je ne ferme pas le handle, alors la commande os.system() ne fonctionne pas --> ne charge pas P1.exe en mémoire
os.system("C:\WINNT\system32\P1.exe");
fileio.delete("C:\WINNT\system32\p1.exe");
end Abra; |
Partager