Autor Beitrag
N47R0N
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 134



BeitragVerfasst: Mo 06.06.05 18:09 
Ich möchte gerne wissen wie man bestimmte tastenkombinationen auserkraft setzen kann wie z.B ( ALT + F4 )

Danke


Moderiert von user profile iconChristian S.: Topic aus Sonstiges verschoben am Mo 06.06.2005 um 18:17
AG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 06.06.05 18:57 
ich würde denken, indem du selbst mit einer Methode darauf reagierst (OnKeyPressed mit Abfrage der gedrückten Tasten); die müßte dann aber wahrscheinlich allen deinen Komponenten zugeordnet werden...
Wenn es dir aber darauf ankommt, speziell das Schließen des Programms zu verhindern, kannst du ja bei OnClose das Schließen verhindern oder Abbrechen oder z.B. eine Paßwortabfrage einbinden - Schließen per Taskmanager geht dann aber trotzdem noch.
F34r0fTh3D4rk
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: Fr 10.06.05 13:35 
es muss aber ne möglichkeit geben das auch per taskman zu verhindern, bei hdguard kommt zb ne fehler meldung :?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.06.05 13:50 
Forensuche!

Und was heißt "per Taskmanager verhindern"?
F34r0fTh3D4rk
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: Fr 10.06.05 13:51 
ja den prozess unkillbar machen 8)
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: Fr 10.06.05 13:53 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
ja den prozess unkillbar machen 8)

ApiHook auf TerminateProcess und bei eigenem programm nicht zulassen

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

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Fr 10.06.05 13:53 
user profile iconAG hat folgendes geschrieben:
Wenn es dir aber darauf ankommt, speziell das Schließen des Programms zu verhindern, kannst du ja bei OnClose das Schließen verhindern oder Abbrechen oder z.B. eine Paßwortabfrage einbinden - Schließen per Taskmanager geht dann aber trotzdem noch.

So
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
end;

oder so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
end;

;)
F34r0fTh3D4rk
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: Fr 10.06.05 13:55 
user profile iconretnyg hat folgendes geschrieben:
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
ja den prozess unkillbar machen 8)

ApiHook auf TerminateProcess und bei eigenem programm nicht zulassen


stimmt, sollte machbar sein, aber ich muss des doch nichmal global machen, sondern nur in den taskman reinladen, wenn der gerade gestartet ist, oder ?
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: Fr 10.06.05 14:00 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
user profile iconretnyg hat folgendes geschrieben:
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
ja den prozess unkillbar machen 8)

ApiHook auf TerminateProcess und bei eigenem programm nicht zulassen


stimmt, sollte machbar sein, aber ich muss des doch nichmal global machen, sondern nur in den taskman reinladen, wenn der gerade gestartet ist, oder ?

dieser hook kann auch lokal sein, sprich muss gar nicht in andere prozesse injiziert werden, es reicht also wenn du es so machst wie bei uall@ogc's messagebox beispiel.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
F34r0fTh3D4rk
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: Fr 10.06.05 14:06 
ich hatte das beispiel mal, aber ich find des net wieder, wo gabs des ?
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: Fr 10.06.05 14:09 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
ich hatte das beispiel mal, aber ich find des net wieder, wo gabs des ?

ist bei der uallcollection dabei

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
F34r0fTh3D4rk
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: Fr 10.06.05 14:15 
wie kriege ich denn die parameter von terminateprocess heraus ?
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: Fr 10.06.05 14:19 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
wie kriege ich denn die parameter von terminateprocess heraus ?

indem du bei msdn suchst, oder dir das windows platform sdk von microsoft runterlädst.
Suche im MSDN TERMINATEPROCESS

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
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: Fr 10.06.05 14:21 
user profile iconretnyg hat folgendes geschrieben:

dieser hook kann auch lokal sein, sprich muss gar nicht in andere prozesse injiziert werden, es reicht also wenn du es so machst wie bei uall@ogc's messagebox beispiel.

wenn ich genauer drüber nachdenke, wird das wohl eher nicht gehen, da ja der fremde prozess den API-Call auf TerminateProcess macht. In deinem fall wirst du also in taskmgr.exe injizieren müssen ^^

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
F34r0fTh3D4rk
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: Fr 10.06.05 15:14 
hatte ich ja doch recht :D
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.06.05 15:18 
Was soll denn das eigentlich werden, wenn es fertig ist? :roll:
F34r0fTh3D4rk
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: Fr 10.06.05 15:43 
kA, aber scheint net recht zu funzen, hab mir bissl code von uall zusammengeklaut ^^
hm "hook erfolgreich" wird ausgegeben, aber auch n fehler :shock:

ausblenden Delphi-Quelltext
1:
form1.caption := 'test'//nur so nebenbei					


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
//hook'n
procedure TForm1.Button1Click(Sender: TObject);
var
  pid: integer;
begin
  pid := uallProcess.FindProcess('taskmgr.exe');
  if pid = 0 then
    MessageBox(0'Prozess nicht gefunden!'nil0else
  begin
    if uallHook.InjectLibrary(pid, pchar(uallUtil.GetExeDirectory + 'hook.dll')) <> nil then
      MessageBox(0'Erfolgreich gehookt!'nil0else
        MessageBox(0'Hook fehlgeschlagen!'nil0);
  end;
end;

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:
//Hook DLL
library hook;

uses
  windows;

{$R *.res}

var
  oldTerminateProcess: function(hProcess: THandle; UExitCode: UInt): boolean; stdcall;
  dll: integer;

function myTerminateProcess(hProcess: THandle; UExitCode: UInt): boolean;
begin
  if hProcess <> findwindow(nil'test'then
    oldTerminateProcess(hProcess, UExitCode); 
end;

procedure Phook(fromaddr, toaddr: pointer);
var
  b: ^byte;
  c: ^cardinal;
  old: cardinal;
begin
  virtualprotect(fromaddr, 5, PAGE_EXECUTE_READWRITE, old);
  b := fromaddr;
  b^ := $E9;
  c := pointer(cardinal(b) + 1);
  c^ := cardinal(toaddr) - 5 - cardinal(b);
  virtualprotect(fromaddr, 5, old, old);
end;

procedure memcopy(a,b: pointer; l: cardinal);
var old1, old2, i: cardinal;
    b1, b2: ^byte;
begin
  virtualprotect(a, l, PAGE_EXECUTE_READWRITE, old1);
  virtualprotect(b, l, PAGE_EXECUTE_READWRITE, old2);
  for i := 0 to l - 1 do
  begin
    b1 := pointer(cardinal(a) + i);
    b2 := pointer(cardinal(b) + i);
    b2^ := b1^;
  end;
  virtualprotect(a, l, old1, old1);
  virtualprotect(b, l, old2, old2);
end;

begin
  dll := getmodulehandle('Kernel32.dll');
  memcopy(getprocaddress(dll, 'TerminateProcess'), @oldTerminateProcess, 30);
  Phook(getprocaddress(dll, 'TerminateProcess'), @myTerminateProcess);
end.


Zuletzt bearbeitet von F34r0fTh3D4rk am Fr 10.06.05 17:14, insgesamt 2-mal bearbeitet
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: Fr 10.06.05 15:46 
damit der hook funktioniert muss taskmgr.exe natürlich zur injektionszeit schon gestartet sein.
also machst du entweder nen timer der alle paar sek. prüft ob taskmgr.exe läuft und dann injizierst, oder du injizierst nen CreateProcess hook in alle laufenden prozesse, so dass du benachrichtigt wirst wenn ein neuer prozess gestartet wird. dort musst du dann natürlich dann auch wieder injizieren...

_________________
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: Fr 10.06.05 15:48 
Ich frage noch mal, was soll das ganze? :roll:
F34r0fTh3D4rk
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: Fr 10.06.05 16:39 
user profile iconretnyg hat folgendes geschrieben:
damit der hook funktioniert muss taskmgr.exe natürlich zur injektionszeit schon gestartet sein.
also machst du entweder nen timer der alle paar sek. prüft ob taskmgr.exe läuft und dann injizierst, oder du injizierst nen CreateProcess hook in alle laufenden prozesse, so dass du benachrichtigt wirst wenn ein neuer prozess gestartet wird. dort musst du dann natürlich dann auch wieder injizieren...

Zitat:

"hook erfolgreich" wird ausgegeben


user profile iconLuckie hat folgendes geschrieben:
Ich frage noch mal, was soll das ganze? :roll:


Zitat:
kA

ich hab das gestern bei hdguard gesehen und möchte das auch versuchen hinzubekommen, einfach nur so
Zitat:

es muss aber ne möglichkeit geben das auch per taskman zu verhindern, bei hdguard kommt zb ne fehler meldung