Autor Beitrag
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 20.04.05 03: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 17:38, insgesamt 1-mal bearbeitet
retnyg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 20.04.05 23: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



BeitragVerfasst: Do 21.04.05 00: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 21.04.05 00:47 
user profile iconLuckie 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



BeitragVerfasst: Do 21.04.05 01:50 
user profile iconretnyg hat folgendes geschrieben:
user profile iconLuckie 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? :shock:


Das ist im Prinzip doch schon alles. 14 KB und mit UPX 10 KB.
ausblenden volle Höhe 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 = 1and (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



BeitragVerfasst: Do 21.04.05 09:34 
user profile iconretnyg 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 21.04.05 11:26 
user profile iconLuckie hat folgendes geschrieben:

In einem Konsolenprogramm? :shock:

was soll daran verkehrt sein ein paar KB's einzusparen ?
user profile iconLuckie 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...
user profile iconLuckie 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:

user profile iconMathiasSimmack 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:

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.04.05 11:31 
user profile iconretnyg 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:

;)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.04.05 11:45 
user profile iconretnyg 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 19.05.05 12: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:
ausblenden 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

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 19.05.05 14: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 19.05.05 14:11 
user profile iconAXMD 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:
ausblenden 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.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Amiga-Fan
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 534



BeitragVerfasst: Do 19.05.05 14: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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 45

Win XP, kUbuntu 6.06
Delphi 2005 Architect
BeitragVerfasst: Do 19.05.05 14: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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 19.05.05 14:52 
user profile iconSmikey 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 19.05.05 23:36 
user profile iconSmikey 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 Suche im MSDN MOVEFILEEX da.

_________________
Ciao, Sprint.