Rezolvarea problemelor ca program de eliminare sau cum se poate schimba numele borlandului executabil

1. Introducere
În timpul navigării pe Internet pe forumurile de programare, am intrat în întrebări legate de întrebarea "Cum se face eliminarea sau redenumirea programului în timpul execuției". Acest articol descrie modul cel mai elementar.







2. De ce aveți nevoie?
Borland Delphi de preferință 7 - necesită instalare
Notepad (notepad.exe) - se află pe toate computerele cu Windows
cmd.exe - costă pe toate computerele cu Windows

3. Noțiuni de bază
De ce avem nevoie de un notebook și cmd.exe pe care îl întrebați?
Vom folosi fișierul Batch pentru a rezolva această problemă, mai detaliat: pe Wikipedia
Funcție pentru eliminarea:

Funcție pentru redenumire:

4. Concluzie
După cum puteți vedea, nu este nimic complicat aici. Aceste funcții nu necesită module suplimentare.

Vă întreb dacă ați copiat acest articol pe site-ul dvs. sau pe forum sau blog, apoi furnizați un link către sursă.

Într-adevăr, toate ingenioase este simplu.

😉 Vă mulțumesc foarte mult pentru articol))))

Nu există nicio garanție că exe-schnick va putea ieși întotdeauna înainte de începerea fișierului bat. În consecință, atunci când ștergeți, fișierul bat poate fi dat manual.

Aveți un ping pinguin sau ceva de genul asta? Încercați să îndepliniți sarcina la un anumit interval de timp.

O altă modalitate de a rezolva sarcina. În opinia mea, cu atât mai optimă.

procedura DeleteSelf;
var
modul: HModule;
buf: matrice [0..MAX_PATH - 1] de char;
p: ULong;
hKrnl32: HModule;
pExitProcess,
pDeleteFile,
pFreeLibrary: pointer;






începe
modul: = GetModuleHandle (zero);
GetModuleFileName (modul, buf, SizeOf (buf));
CloseHandle (THandle (4));
p: = ULONG (modul) + 1;
hKrnl32: = GetModuleHandle ("kernel32");
pExitProcess: = GetProcAddress (hKrnl32, 'ExitProcess');
pDeleteFile: = GetProcAddress (hKrnl32, 'DeleteFileA');
pFreeLibrary: = GetProcAddress (hKrnl32, "FreeLibrary");
asm
lea eax, buf
împingeți 0
împingeți 0
împinge eax
împingeți pExitProcess
împinge p
împinge pDeleteFile
împinge pFreeLibrary
putrezi
se încheie;
se încheie;

DonDD, și soluția ta este chiar mai simplă, bine, cel puțin îmi place mai bine.

Deci, acest lucru este clar cu privire la modul de a face o cerere de a modifica codul în curs de execuție Acest lucru este posibil, aș dori să fac un program pentru graficele postoeniya funktsiy.Ideya acest :? În funcția caseta de intrare a cererii, apoi se introduce în programul unui număr de linii de mai jos y: = f ( x), apoi a construit tabelul de decontare și programul ei

DonDD, codul poate fi de asemenea utilizat, dar dacă te uiți atent - procedura ta de eliminare durează mai puțin de 30 de linii și mele cele două proceduri de ștergere și redenumire a luat un total de 38 de linii. + Codul dvs. poate șterge numai.

Alex, mi-am testat codul pe două calculatoare și totul a funcționat.

DonDD, sau oricine din ei știe,
explicați funcționarea funcției DeleteSelf, în care este aplicat asamblarea (fără fișierele batch).

3) și totuși, am auzit că toate acestea nu vor funcționa în versiunile XP și ulterioare, iar în aceste versiuni puteți utiliza metoda: \\ 127.0.0.1 \ C $ \ my_program.exe

Mulțumesc! Dar pentru mine este dificil! 😥

enzo_amd, după ret la partea de sus,

7C831D93 / Apel la FreeLibrary
00400001 0400001 (00400000-handler și 00400001 - un fel de prostii)

după DeleteFileA cu parametrii (care, de altfel, se va întoarce ERROR_ACCESS_DENIED) și, în final, ExitProcess

Cipul trebuie să lase în urma codul din teanc, care va fi executat în nucleul kernel32 la sfârșit, dar în XP, nici FreeLibrary, nici UnmapViewOfFile nu rulează deja. Misterioasă CloseHandle (Thandle (4))

Codul este rece. Dar ... după execuție, creez un fișier Bat, iar fișierul exe nu este șters. Se șterge numai după lansarea directă prin apăsarea butonului mouse-ului.

Se pare că fișierul Bat este executat înainte de lansarea programului.

Cum poate fi rezolvată această problemă?







Articole similare

Trimiteți-le prietenilor: