Entwickler-Ecke
Open Source Projekte - DelLocked 1.0 - gesperrte dateien löschen [7 KB]
retnyg - Mi 20.04.05 02:38
Titel: DelLocked 1.0 - gesperrte dateien löschen [7 KB]
delLocked 1.0
author: retnyg ###
http://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...
http://krazz.net/retnyg/dellocked.zip
retnyg - 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...
Delete - Mi 20.04.05 23:04
Dieser Hinweis:
http://www.delphipraxis.net/post354922.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 - Mi 20.04.05 23:47
Luckie hat folgendes geschrieben: |
Dieser Hinweis: http://www.delphipraxis.net/post354922.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 ?
Delete - Do 21.04.05 00:50
retnyg hat folgendes geschrieben: |
Luckie hat folgendes geschrieben: | Dieser Hinweis: http://www.delphipraxis.net/post354922.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? :shock:
Das ist im Prinzip doch schon alles. 14 KB und mit UPX 10 KB.
Delphi-Quelltext
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.
Delete - 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? :roll: 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 ... :lol:
retnyg - Do 21.04.05 10:26
Luckie hat folgendes geschrieben: |
In einem Konsolenprogramm? :shock: |
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 :shock:
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? :roll: |
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 :roll:
Delete - Do 21.04.05 10:31
retnyg hat folgendes geschrieben: |
| 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. |
Siehste, genau das ist ja der Grund. :lol: Ich sage absolut nichts gegen dein Engagement (davon können sich andere eine Scheibe abschneiden), aber ich hätte auch keine Lust, alle Konstanten usw. selbst zu deklarieren, wenn
| Zitat: |
| sich dadurch am programm selber NULL ändern wird :roll: |
;)
Delete - 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 - 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\*.exe dellocked "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
AXMD - 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 :mrgreen: 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 - Do 19.05.05 13:11
AXMD hat folgendes geschrieben: |
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 :mrgreen: 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 |
konsolenanwendungen haben mehrere vorteile:
Quelltext
1: 2: 3: 4: 5:
| - sind kleiner - können in BaTcH-jobs verwendet werden - können auch bei einer fernwartung per SSH benutzt werden (ziel sollte ein komplett per konsole administrierbares windows-system sein, wie bei linux) - muss sich der programmierer nicht um visuelle komponenten und durch deren benutzung resultierende fehler kümmern - werden von DAU's nicht verwendet, welche damit auch keinen schaden anrichten können. |
Amiga-Fan - 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 ;)
Smikey - 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
AXMD - 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 :mrgreen: Das Programm ist ja eben dazu da, das gleich zu machen.
AXMD
Sprint - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!