AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm löscht sich selber !

Ein Thema von taktaky · begonnen am 23. Nov 2007 · letzter Beitrag vom 28. Nov 2007
Thema geschlossen
Seite 2 von 3     12 3      
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Programm löscht sich selber !

  Alt 24. Nov 2007, 15:48
Ich vermute, er möchte, dass kein extra Tool läuft und dann geht es nicht.
Es sei denn, man könnte in den Aktenkoffer (oder wie diese ganzen Windows-Tools heißen) irgendetwas eintragen, sodass Windows das Löschen veranlasst.

Was soll denn überhaupt der Sinn des Ganzen sein? Mir fällt nichts ein, wo man das sinnvoll einsetzen könnte.
 
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#12

Re: Programm löscht sich selber !

  Alt 24. Nov 2007, 15:55
Windows Aufgabenplaner kann dasselbe machen. Braucht aber Adminrechte.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
 
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Programm löscht sich selber !

  Alt 26. Nov 2007, 08:43
Sieht ein wenig so aus, als sei DRM genau dafür geschaffen worden Pfui ...
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
 
christian_u

Registriert seit: 13. Nov 2006
126 Beiträge
 
#14

Re: Programm löscht sich selber !

  Alt 26. Nov 2007, 09:39
Was hast das ganze mit drm zu tun ?
Wozu brauchst du das ?
 
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Programm löscht sich selber !

  Alt 26. Nov 2007, 09:46
Zitat von christian_u:
Was hast das ganze mit drm zu tun ?
Wozu brauchst du das ?
Weil es u.a. dazu da ist, Dinge nur einen bestimmten Zeitraum nutzbar zu machen.
Ich brauche DRM nicht ... und sicherlich ist es auch hierfür nicht sinnvoll ...

Fraglich ist ehr, warum taktaky so erpicht darauf ist, das Programm nach x Tagen (ab wann? ^^) zu löschen. ...
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: Programm löscht sich selber !

  Alt 26. Nov 2007, 19:18
Na ganz einfach. Wenn man ein Programm zum download anbietet, soll es sich nach ein paar Tagen eben in Luft auflösen. Sozusagen eine Datei mit Verfallsdatum...

Interessante Sache. Ich glaube, sich selbst löschende Dateien haben sehr viel mit KI zu tun, denn auch wir sind vergesslich... Was war doch gleich nochmal das Thema?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
 
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#17

Re: Programm löscht sich selber !

  Alt 26. Nov 2007, 20:30
Selbst wenn er das jetzt hinbekommt. Kommt in ein Paar tegen jemand wie er an und fragt hier im Forum, wie er das verhindern kann. Wenn ich deinem Programm die rechte nehme, dateien zu erstellen oder zu löschen, was willst du dann noch machen. Bau doch lieber eine Demo-Version, da gabs hier im Forum auch schon einige Themen.
Knacken kann man sowas immer. Wer was dran machen will, schaft das auch und wenn die Frage wieder hier im Forum auftaucht!!!
Christian
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Programm löscht sich selber !

  Alt 27. Nov 2007, 08:36
Und es würde wahrscheinlich sogar der Tatbestand der Computersabotage erfüllt sein, wenn sich das Programm ohne Einwilligung des Benutzers selber löscht.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#19

Re: Programm löscht sich selber !

  Alt 27. Nov 2007, 08:53
Dazu kommt ja noch die Systemwiederherstellung und und und...
Naja dann lieber eine 30 Tage Testversion o.A.
Finde die "Selbstzerstörung" etwas hart und gar nicht Benutzer gerecht.
Zudem macht es auch keinen guten Eindruck, wenn man seine Software selbst löscht.
Michael S.
 
Benutzerbild von LoCrux
LoCrux

Registriert seit: 5. Mär 2007
Ort: Gwang-Yang-City
48 Beiträge
 
Delphi 2009 Enterprise
 
#20

Re: Programm löscht sich selber !

  Alt 28. Nov 2007, 05:33
Also,

die Loesung fuer Dich: einen Windows-Dienst erstellen, der den "NTFS Last-Access-Timestamp" fuer Dein Programm ausliest und nach gewuenscher Bedingung loescht.
How To Service (TUT von MaBuSE): hier
Muss allerdings garantier sein, das der Schluessel
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\FileSystem\NtfsDisableLastAccessUpdate=0 (DWORD)
gesetzt ist.
Nachteil: Der Dienst bleibt fuer alle Ewigkeit wenn Du ihn nicht deinstallierst.

Sollte das fuer Dich nicht in Frage kommen, kann ich nur mit einer "suicide" Routine dienen,
die allerdings das ausfuehren deines "Tools" [] bedingt.
WARNUNG: Sie funzt ist aber Quick'N'Dirty.

Die Suicide.exe

Delphi-Quellcode:
program Suicide;

{$APPTYPE CONSOLE}


uses
  SysUtils,
  TLHelp32,
  Windows;

var
  fn : PAnsiChar;
  cnt : Integer;

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop : Boolean;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

begin
  if (ParamCount>0)
  then begin
    fn := PAnsiChar(ParamStr(1));
    if FileExists(fn)
    then begin
      if (KillTask(ExtractFileName(fn))=1)
      then begin
        cnt := 0;
        // WHY!!! Warten bis Windoof die Datei Freigegeben hat, solange halt den Versuch
        // unternehmen zu loeschen.
        // Dine exe darf nicht scheibgeschuetzt sein. Kann man aber ja noch einbauen.
        while (FileExists(fn) and (cnt<1000))
        do begin
          inc(cnt);
          DeleteFile(fn);
          Sleep(5);
        end
      end;
    end;
  end;
end.
Sollte selbsterklaerend sein.

In Deinem Tool:

Delphi-Quellcode:
uses
  ..,ShellApi,QFileCtrls,uHexFile,..; // uHexFile enthaelt die "Binary" der Suicide.exe

const
  fn : String = 'suicide.exe'; // Die Suicide.Exe
Delphi-Quellcode:
procedure CommitSuicide;
var
  FOutHandle,
  FOutLength : Integer;
  myName : String;
begin
  // Create The suicide.exe
  if not(FileExists(fn))
  then FOutHandle := FileCreate(fn)
  else FOutHandle := FileOpen(fn, fmOpenWrite);
  FileWrite(FOutHandle,HexFile,SizeOf(HexFile));
  FileClose(FOutHandle);
  // Call suicide.exe
  myName := ExtractFileName(ParamStr(0));
  ShellExecute(Handle, nil, PChar(fn) ,PChar(myName),NIL, SW_HIDE);
end;
uHexFile.pas (Auszug)

Delphi-Quellcode:
unit uHexFile;

interface

Type
  ArrOfByte = Array[0..42495] Of Byte;

Const
  HexFile : ArrOfByte = (
077,090,080,000,002,000,000,000,004,000,015,000,255,255,000,000,184,000,000,000,000,
000,000,000,064,000,026,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001,000,
000,186,016,000,014,031,180,009,205,033,184,001,076,205,033,144,144,084,104,105,115,
032,112,114,111,103,114,097,109,032,109,117,115,116,032,098,101,032,114,117,110,032,
117,110,100,101,114,032,087,105,110,051,050,013,010,036,055,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
.
.
.
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000);


implementation

end.
OK. Wie gesagt. Suboptimal. Aber als Ansatz vielleicht brauchbar.
Man koennte z.B. in die Suicide.exe noch nen 'Secure Delete' Algorithmus einbauen
und das 'HexFile' komprimiert ablegen (z.B. zLib oder LZMA).


PS. Bevor Fragen aufkommen. I know 'uBinFile' waere passender. War aber zu faul.

//Edit: Service TUT eingefuegt.
Angehängte Dateien
Dateityp: pas uhexfile_148.pas (170,1 KB, 2x aufgerufen)
“C++ is an insult to the human brain.” [Niklaus Wirth]

2B OR NOT 2B (.. THAT IS FF)
 
Thema geschlossen
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz