Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Applikation bei Laufzeit löschen (https://www.delphipraxis.net/24201-applikation-bei-laufzeit-loeschen.html)

Eggimaa 17. Jun 2004 11:17


Applikation bei Laufzeit löschen
 
:wiejetzt: :wall:
Also zuerst mal folgendes.. ich kann noch gar nicht delphi programmieren, aber weiss wenigstens schon wie man delphi schreibt.
Und irgendwie steh ich da schon vor einem grösseren Problem. Ich hab gerade erst
einen neuen Job angefangen und da gibt es irgendwelche Software deren Source in Delphi ist.
Die Software wird über einen Hardware Key geschützt. Die Software bemerkt wenn an der Hardware manipuliert wurde.
Jetzt soll als Reaktion auf diese illegale Änderung die Software vollständig vom Rechner gelöscht werden. Geht das während der Ausführung des selben Programms?
Also ich komm von der Hardwareprogrammierung her und würde das dort lösen, in dem ich den Löschbefehl ins RAM mappe und von dort aus den Code der im Flash ist löschen.

Na.. ich hoff mal ihr habt einsehen mit meinem etwas komischen Anliegen.

Gruss Eggi

Dax 17. Jun 2004 11:28

Re: Applikation bei Laufzeit löschen
 
Nein, es geht nicht. Erstelle einfach mal ein leeres Projekt, führe es aus und versuche, die .exe zu löschen, es wird nicht klappen. Aber sobald das Hauptprogramm terminiert ist und nichts auf die .exe und die zugehörigen Dateien zugreift, kann man es löschen.

sakura 17. Jun 2004 11:30

Re: Applikation bei Laufzeit löschen
 
Das wichtigste wurde ja schon geschrieben. Nun sei noch gesagt, daß Anwendungen sich lt. Rechtsprechung nicht selbständig löschen dürfen außer der User hat dieses initialisiert oder diesem ausdrücklich zugestimmt. ;)

...:cat:...

Dax 17. Jun 2004 11:32

Re: Applikation bei Laufzeit löschen
 
Das ist KEIN Ernst, oder? Apps dürfen sich nicht selbst löschen?

sakura 17. Jun 2004 11:36

Re: Applikation bei Laufzeit löschen
 
Zitat:

Zitat von Dax
Das ist KEIN Ernst, oder? Apps dürfen sich nicht selbst löschen?

Ohne das der User dem zustimmt, bzw die ab deinstallieren will ;) Das Problem ist, daß das als Datenzerstörung ausgelegt werden kann und dieses ist strafbar.

...:cat:...

Thorben86 17. Jun 2004 11:46

Re: Applikation bei Laufzeit löschen
 
Ich hab mal kurz ne frage, willst du jetzt das eigene (Programmierte?) Programm, oder dass, dass manipuliert ,löschen?

DP-Maintenance 17. Jun 2004 11:57

DP-Maintenance
 
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Die Code-Library ist eine Sammlung von nützlichen SourceCodes. Dies ist aber eine Frage. ;)

Eggimaa 17. Jun 2004 13:19

Re: Applikation bei Laufzeit löschen
 
Naja,
Code löschen ist in der Hardwareprogrammierung eigentlich üblich...
Oder was meint ihr wie bei der Formel 1 zum beispiel verbotener Code
nach einmaligem ausführen gelöscht wird??

Mh, wie siehts denn rechtlich aus wenn ich den Kunden darauf aufmerksam mache,
dass sein Code bei versuchtem Betrug seinerseits gelöscht werden kann?

:gruebel:

shmia 17. Jun 2004 13:42

Re: Applikation bei Laufzeit löschen
 
Zitat:

Zitat von Eggimaa
Jetzt soll als Reaktion auf diese illegale Änderung die Software vollständig vom Rechner gelöscht werden. Geht das während der Ausführung des selben Programms?

Nein, aber beim Reboot des Rechners.
(Und so gemeingefährlich kann das Programm ja auch nicht sein, dass man es augenblicklich löschen muss :nerd: )
Delphi-Quellcode:
// ungetested !!
// geht erst ab WIN-NT aufwärts
procedure DeleteApplication;
begin
   MoveFileEx(PChar(ParamStr(0)), nil, MOVEFILE_DELAY_UNTIL_REBOOT);
end;

Lillebrohr 17. Jun 2004 14:48

Re: Applikation bei Laufzeit löschen
 
Hi leute,

na und ob das geht.

Code:
Improved version, works under 95,98, NT4.0 and 2000.

program SelfDelete;

uses
  windows,sysutils;

procedure DeleteExeAndDir;
var hModule:THandle;
 szModuleName,szDirName:array[0..MAX_PATH] of char;
   hKrnl32 : THandle;
   pExitProcess, pDeleteFile, pFreeLibrary,pUnmapViewOfFile,pRemoveDir : pointer;
   ExitCode:UINT; var r:integer;
begin
 hModule:= GetModuleHandle(nil);

 GetModuleFileName(hModule, szModuleName, sizeof(szModuleName));
 StrPCopy(szDirName,ExtractFileDir(szModuleName));

     hKrnl32 := GetModuleHandle ( 'kernel32' );
     pExitProcess := GetProcAddress ( hKrnl32, 'ExitProcess' );
     pDeleteFile := GetProcAddress ( hKrnl32, 'DeleteFileA' );
     pFreeLibrary := GetProcAddress ( hKrnl32, 'FreeLibrary' );
     pUnmapViewOfFile := GetProcAddress ( hKrnl32, 'UnmapViewOfFile' );
     pRemoveDir := GetProcAddress ( hKrnl32, 'RemoveDirectoryA' );

 ExitCode := system.ExitCode;

 SetCurrentDirectory(pchar(ExtractFileDir(szDirName)));
 if($80000000 and GetVersion())<>0 then
  // Win95, 98, Me
  asm
   lea    eax, szModuleName
   lea    ecx, szDirName
   push   ExitCode
   push   0
   push   ecx
   push   pExitProcess
   push   eax
   push   pRemoveDir
   push   hModule
   push   pDeleteFile
   push   pFreeLibrary
   ret
  end
 else
  begin
    for r:=1 to 100 do
    begin
      CloseHandle(r shl 2);
    end;
//  CloseHandle(THANDLE(4));
  asm
   lea    eax, szModuleName
   lea    ecx, szDirName
   push   ExitCode
   push   0
   push   ecx
   push   pExitProcess
   push   eax
   push   pRemoveDir
   push   hModule
   push   pDeleteFile
   push   pUnmapViewOfFile
   ret
   end
  end

end;

begin
     DeleteExeAndDir
end.
Viel Spaß dabei.

Lillebrohr 17. Jun 2004 15:13

Re: Applikation bei Laufzeit löschen
 
Achso, und noch was.

Schaut euch mal die Sources von den neuesten Viren oder würmern an, die nutzen alle so ne -melt option die bei allen Betriebssystemen geht. Damit kann sich der Virus halt selbst löschen.

:twisted:

NicoDE 17. Jun 2004 15:43

Re: Applikation bei Laufzeit löschen
 
Unter Windows XP funktioniert es über den Umweg einer DLL, welche mittels RuinDll32 aufgerufen wird.
(funktioniert unter allen Windows-Versionen und ermöglicht eine bessere Fehlerbehandlung im Falle eines Fehlschlags (zum Beispiel bei doppeltem Start des Programms oder wenn noch jemand ein Handle auf die Datei hält) - die DLL kann sich mit o.g. Code selbst löschen, was bei Images nicht mehr geht, da der XP-Kernel ein Handle auf das Image hält, mit welchem der Prozess erzeugt wurde)

Eigentlich braucht man sowas nur für Uninstaller - und selbst dafür gibt es bessere bzw. offiziellere Wege...

MrKnogge 17. Jun 2004 16:40

Re: Applikation bei Laufzeit löschen
 
Zitat:

Zitat von Lillebrohr
Code:
for r:=1 to 100 do
begin
  CloseHandle(r shl 2);
end;

Wieso gerade 100 ?
Oder ist die Zahl wahllos aus der Luft gegriffen ?

Lillebrohr 17. Jun 2004 16:48

Re: Applikation bei Laufzeit löschen
 
Boah, du keine Ahnung. Versuch es doch einfach mal mit ner anderen Zahl
oder debug das Programm.

Anscheinend ist es so ne Art Bruteforce nach dem richtigen Handle. :?
Oder gibt es mehrere ? 100 ? :X

Bye

c113plpbr 17. Jun 2004 17:30

Re: Applikation bei Laufzeit löschen
 
Zitat:

works under 95,98, NT4.0 and 2000.
Warum unter XP nicht?

phXql 17. Jun 2004 17:35

Re: Applikation bei Laufzeit löschen
 
Zitat:

Zitat von c113plpbr
Zitat:

works under 95,98, NT4.0 and 2000.
Warum unter XP nicht?

Vielleicht is der code so alt, dass es da noch kein XP gab. teste's halt. hab (zum glück) kein xp...

NicoDE 17. Jun 2004 18:10

Re: Applikation bei Laufzeit löschen
 
Zitat:

Zitat von c113plpbr
Warum unter XP nicht?

Zitat:

da der XP-Kernel ein Handle auf das Image hält, mit welchem der Prozess erzeugt wurde


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz