| 
| Autor | Beitrag |  
| retnyg 
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Mi 20.04.05 02:38 
 
delLocked 1.0 
 author: retnyg  ### krazz.net/retnyg  ###
 ________________________________________________________________________
 simple console app [ 7 KB ]  that deletes a locked file on next reboot
 so you can delete a trojan or virus thats currently active.
 or M$ MessAnger (usually in C:\program files\messenger\msmsgs.exe) >-P
 syntax: dellocked C:\mytrojan.exe use on own risk. if you get a heart attack while running one of my apps,
 rest in peace...
krazz.net/retnyg/dellocked.zip_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
 in der regel haben diese leute die regel...
 
 Zuletzt bearbeitet von retnyg am Mi 12.10.05 16:38, insgesamt 1-mal bearbeitet
 |  |  |  
| retnyg  
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Mi 20.04.05 22:29 
 
hatte heute mal wieder das vergnügen einen bekannten von seinen viren zu befreien, wobei sich das tool bestens bewährt hat... _________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
 in der regel haben diese leute die regel...
 |  |  |  
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 20.04.05 23:04 
 
Dieser Hinweis: www.delphipraxis.net...st354922.html#354922  ist dir nicht entgangen?
 Und wozu brauchst du die Kol.pas in einem Konsolenprogramm?
 Und warum importierst du MoveFileEx selber, wenn du doch die Windows.pas einbindest, wo sie schon importiert wird? |  |  |  
| retnyg  
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Mi 20.04.05 23:47 
 
	  |  Luckie hat folgendes geschrieben: |  	  | Dieser Hinweis: www.delphipraxis.net...st354922.html#354922 ist dir nicht entgangen? 
 Und wozu brauchst du die Kol.pas in einem Konsolenprogramm?
 
 Und warum importierst du MoveFileEx selber, wenn du doch die Windows.pas einbindest, wo sie schon importiert wird?
 | 
 dein hinweis ist mir nicht entgangen, ich gehe aber davon aus dass nur ein admin sich an die virenentfernung macht.
 kol benötige ich, um die exe 15 kb kleiner zu kriegen.
 movefileex importiere ich, weil ich ursprünglich alles von hand einbinden wollte und drum die windows.pas weggelassen hab...
 hast du auch zum programm selber etwas zu sagen ?_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
 in der regel haben diese leute die regel...
 |  |  |  
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 21.04.05 00:50 
 
	  |  retnyg hat folgendes geschrieben: |  	  | 	  |  Luckie hat folgendes geschrieben: |  	  | Dieser Hinweis: www.delphipraxis.net...st354922.html#354922 ist dir nicht entgangen? 
 Und wozu brauchst du die Kol.pas in einem Konsolenprogramm?
 
 Und warum importierst du MoveFileEx selber, wenn du doch die Windows.pas einbindest, wo sie schon importiert wird?
 | 
 dein hinweis ist mir nicht entgangen, ich gehe aber davon aus dass nur ein admin sich an die virenentfernung macht.
 kol benötige ich, um die exe 15 kb kleiner zu kriegen.
 | 
 In einem Konsolenprogramm?    Das ist im Prinzip doch schon alles. 14 KB und mit UPX 10 KB.
 												| 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:
 
 | program DelFile;
 {$APPTYPE CONSOLE}
 
 uses
 windows;
 
 function FileExists(const FileName: string; dir: boolean = false): Boolean;
 var
 hidate, lodate: word;
 Handle: THandle;
 FindData: TWin32FindData;
 LocalFileTime: TFileTime;
 
 type
 LongRec = packed record
 Lo, Hi: Word;
 end;
 
 function SubFileExists: Boolean;
 begin
 FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
 result := FileTimeToDosDateTime(LocalFileTime, HiDate, LoDate);
 end;
 begin
 result := false;
 Handle := FindFirstFile(PChar(FileName), FindData);
 if Handle <> INVALID_HANDLE_VALUE then
 begin
 Windows.FindClose(Handle);
 case dir of
 TRUE: if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then result := SubFileExists;
 FALSE: if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then result := SubFileExists;
 end;
 end;
 end;
 
 begin
 if (ParamCount = 1) and (FileExists(ParamStr(1))) then
 MoveFileEx(PChar(ParamStr(1)), nil, MOVEFILE_DELAY_UNTIL_REBOOT)
 else
 Writeln('Usage: DelFile <Filename>');
 end.
 |  OK, der Win9x Support fehlt jetzt, aber der macht die Exe auch nicht mehr fett.
 	  | Zitat: |  	  | movefileex importiere ich, weil ich ursprünglich alles von hand einbinden wollte und drum die windows.pas weggelassen hab...
 
 | 
 Dann nimm es doch aus dem Quellcode raus.
 	  | Zitat: |  	  | hast du auch zum programm selber etwas zu sagen ?
 | 
 Gehört der Quellcode nicht zum Programm? Stört dich meine kritische Betrachtung des Quellcodes? Und was gibt es da zu testen? ich denke, das hast du selber gemacht und viel schiefgehen kann da ja nicht, bis auf dem Win9x Teil. |  |  |  
| MathiasSimmack Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 21.04.05 08:34 
 
	  |  retnyg hat folgendes geschrieben: |  	  | movefileex importiere ich, weil ich ursprünglich alles von hand einbinden wollte und drum die windows.pas weggelassen hab... | 
 Ich möchte nur anmerken, dass es Quatsch ist, auf die Windows-Unit zu verzichten. Die Units, die die Programme wirklich fett machen, sind Sachen wie SysUtils, Dialogs, usw. Aber die Windows-Unit?    Ich meine, Luckie wird´s bestätigen können, dass die meisten Samples aus den Win32-API-Tutorials recht klein sind.
 Und bevor du fragst: Nein, direkt zum Programm habe ich nichts zu sagen. Mir fällt nur gerade ein, dass schon mal jemand auf die Windows-Unit verzichtet hat, weil er meinte, das würde sein Programm kleiner machen. Der tatsächliche Dickmacher, die Registry-Unit, war aber noch drin. Na ja ...   |  |  |  
| retnyg  
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Do 21.04.05 10:26 
 
	  |  Luckie hat folgendes geschrieben: |  	  | In einem Konsolenprogramm?
  | 
 was soll daran verkehrt sein ein paar KB's einzusparen ?
 	  |  Luckie hat folgendes geschrieben: |  	  | Das ist im Prinzip doch schon alles. 14 KB und mit UPX 10 KB.
 OK, der Win9x Support fehlt jetzt, aber der macht die Exe auch nicht mehr fett.
 
 | 
 siehste, bei mir ist win9x support drinne, und das ganze nur 7 kb.
 ausserdem macht gerade der 9x-support wieder ein paar kb mehr aus, da funktionen für den dateizugriff sowie zur erkennung des windows-verzeichnis benötigt werden.
 du musst das programm jetzt aber nicht nochmal schreiben, so klein kriegst du's eh nicht hin, ausser direkt mit asm...
 	  |  Luckie hat folgendes geschrieben: |  	  | 	  | Zitat: |  	  | hast du auch zum programm selber etwas zu sagen ?
 | 
 Gehört der Quellcode nicht zum Programm? Stört dich meine kritische Betrachtung des Quellcodes? Und was gibt es da zu testen? ich denke, das hast du selber gemacht und viel schiefgehen kann da ja nicht, bis auf dem Win9x Teil.
 | 
 was mich stört ist dass du nur rumnörgelst und auf uninteressante details fixiert bist. ob da der verweis auf movefileex drin ist oder nicht, ändert nichts dran dass es funktioniert     	  |  MathiasSimmack hat folgendes geschrieben: |  	  | Ich möchte nur anmerken, dass es Quatsch ist, auf die Windows-Unit zu verzichten. Die Units, die die Programme wirklich fett machen, sind Sachen wie SysUtils, Dialogs, usw. Aber die Windows-Unit?
  | 
 ich habe zuerst auf die windows.pas verzichtet, damit ich den dingen selber auf den grund gehe. zu übungszwecken. ich habe sie dann erst gegen schluss eingebunden, weil ich keine lust mehr hatte mir die konstanten zusammenzusuchen. wenn es euch beruhigt, werde ich den verweis auf movefileex im source auskommentieren, auch wenn sich dadurch am programm selber NULL  ändern wird   _________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
 in der regel haben diese leute die regel...
 |  |  |  
| MathiasSimmack Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 21.04.05 10:31 
 |  |  |  
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 21.04.05 10:45 
 
	  |  retnyg hat folgendes geschrieben: |  	  | siehste, bei mir ist win9x support drinne, und das ganze nur 7 kb.
 ausserdem macht gerade der 9x-support wieder ein paar kb mehr aus, da funktionen für den dateizugriff sowie zur erkennung des windows-verzeichnis benötigt werden.
 
 | 
 ... und die findet man in der Windows.pas.
 Ich meine, nichts gegen kleine Exe-Dateien, aber man kann es auch echt übertreiben und zum Fanatiker werden.
 	  | Zitat: |  	  | du musst das programm jetzt aber nicht nochmal schreiben, so klein kriegst du's eh nicht hin, ausser direkt mit asm...
 
 | 
 So, so. Na mal sehen, wenn ich Zeit und Lust habe. Allerdings ohne Windows9x Support, weil ich keine Möglichkeite habe das zu testen.
 	  | Zitat: |  	  | was mich stört ist dass du nur rumnörgelst und auf uninteressante details fixiert bist. ob da der verweis auf movefileex drin ist oder nicht, ändert nichts dran dass es funktioniert
 | 
 Moment! Ich habe nicht genörgelt, sondern deinen Quelltext nur kritisch hinterfragt und bei Sachen, die mir aufgefallen sind mal nachgehakt. Wenn du das als nörgeln bezeichnest, dann hat das für mich den Anschein, als ob du keine Kritik verträgst. |  |  |  
| retnyg  
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Do 19.05.05 11:39 
 
update v 1.1
dellocked akzeptiert nun auch dateimasken wie *.exe
 und rekursives löschen durch alle unterverzeichnisse mit schalter /R
 zuerst wird versucht die datei zu löschen, nur wenn die datei gesperrt ist,
 wird sie fürs löschen beim neustart markiert.
 bsp:
 		                       Quelltext 
 									| 1:2:
 
 | dellocked C:\test\*.exedellocked "C:\system volume information\*.exe" /R
 |  2. beispiel ist ne einfache methode alle viren zu löschen die sich in dem versteckten systemordner eingenistet haben.
 falls man auf dem ordner keine zugriffsberechtigung (XP Home) hat, verwende man cacls download beim ersten beitrag _________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
 in der regel haben diese leute die regel...
 |  |  |  
| AXMD 
          Beiträge: 4006
 Erhaltene Danke: 7
 
 Windows 10 64 bit
 C# (Visual Studio 2019 Express)
 
 | 
Verfasst: Do 19.05.05 13:05 
 
Moin!
 Auf den Punkt gebracht: Gesamteindruck: brauchbar
 Darf ich fragen, warum du überhaupt ein Konsolenapp. machst? Du verwendest nur an einer einzigen Stelle WriteLn; außerdem gibt's sowas wie ein Readme, wo man das auch reinschreiben kann. Obwohl... die könnte ja wieder 0,5 KB wegnehmen    Im Ernst, retnyg, kleine Programme sind zwar nett, aber übertreiben muss man es wirklich nicht. 40 KB wären IMHO auch ok; du könntest ja eine Meldung ausgeben, wenn keine Datei angegeben wurde  - die Unit Windows hat entsprechende MessageBox-Routinen dafür. Oder machen die die EXE zu groß    AXMD |  |  |  
| retnyg  
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Do 19.05.05 13:11 
 
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
 in der regel haben diese leute die regel...
 |  |  |  
| Amiga-Fan 
          Beiträge: 534
 
 
 
 
 | 
Verfasst: Do 19.05.05 13:22 
 
	  | Zitat: |  	  | - werden von DAU's nicht verwendet, welche damit auch keinen schaden anrichten können. | 
 naja irgendjemand wird schon ein FrontEnd für dein Programm bauen  _________________ - Leg dich nie mit einem Berufsprogrammierer an
 - Wahre Profis akzeptieren keine einfachen Lösungen
 |  |  |  
| Smikey 
          Beiträge: 45
 
 Win XP, kUbuntu 6.06
 Delphi 2005 Architect
 
 | 
Verfasst: Do 19.05.05 13:42 
 
das prog klingt ganz gut... habs selber nicht ausprobiert, aber ich denke es scheint ganz nützlich zu sein..
 mal ne frage,
 geht sowas in der art auch anstatt dateien zu löschen, sie zu kopieren? ich meinte systemdateien, die grade verwendet werden. die sollen beim nächsten systemstart kopiert werden???
 
 mfg
 
 smikey
 _________________ Bloß weil du nicht paranoid bist, heißt das nicht, dass sie nicht hinter dir her sind.
 |  |  |  
| AXMD 
          Beiträge: 4006
 Erhaltene Danke: 7
 
 Windows 10 64 bit
 C# (Visual Studio 2019 Express)
 
 | 
Verfasst: Do 19.05.05 13:52 
 
	  |  Smikey hat folgendes geschrieben: |  	  | geht sowas in der art auch anstatt dateien zu löschen, sie zu kopieren? ich meinte systemdateien, die grade verwendet werden. die sollen beim nächsten systemstart kopiert werden?? | 
 Warum beim nächsten Systemstart? Die Auslagerungsdatei zB wird dadurch nicht weniger verwendet werden    Das Programm ist ja eben dazu da, das gleich zu machen.
 AXMD |  |  |  
| Sprint 
          Beiträge: 849
 
 
 
 
 | 
Verfasst: Do 19.05.05 22:36 
 
	  |  Smikey hat folgendes geschrieben: |  	  | geht sowas in der art auch anstatt dateien zu löschen, sie zu kopieren? ich meinte systemdateien, die grade verwendet werden. die sollen beim nächsten systemstart kopiert werden??? | 
 Genau dafür ist   MOVEFILEEX  da._________________ Ciao, Sprint .
 |  |  |  |