| Autor |
Beitrag |
N47R0N
      
Beiträge: 134
|
Verfasst: 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 Christian S.: Topic aus Sonstiges verschoben am Mo 06.06.2005 um 18:17
|
|
AG
      
Beiträge: 22
|
Verfasst: 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
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: 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
|
Verfasst: Fr 10.06.05 13:50
Forensuche!
Und was heißt "per Taskmanager verhindern"?
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 10.06.05 13:51
ja den prozess unkillbar machen 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 10.06.05 13:53
F34r0fTh3D4rk hat folgendes geschrieben: | ja den prozess unkillbar machen  |
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
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Fr 10.06.05 13:53
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 10.06.05 13:55
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 10.06.05 14:00
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 10.06.05 14:06
ich hatte das beispiel mal, aber ich find des net wieder, wo gabs des ?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 10.06.05 14:09
F34r0fTh3D4rk 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
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 10.06.05 14:15
wie kriege ich denn die parameter von terminateprocess heraus ?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 10.06.05 14:19
F34r0fTh3D4rk 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.
TERMINATEPROCESS
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 10.06.05 14:21
retnyg 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
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 10.06.05 15:14
hatte ich ja doch recht 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 10.06.05 15:18
Was soll denn das eigentlich werden, wenn es fertig ist? 
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: 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
Delphi-Quelltext 1:
| form1.caption := 'test'; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var pid: integer; begin pid := uallProcess.FindProcess('taskmgr.exe'); if pid = 0 then MessageBox(0, 'Prozess nicht gefunden!', nil, 0) else begin if uallHook.InjectLibrary(pid, pchar(uallUtil.GetExeDirectory + 'hook.dll')) <> nil then MessageBox(0, 'Erfolgreich gehookt!', nil, 0) else MessageBox(0, 'Hook fehlgeschlagen!', nil, 0); end; end; |
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:
| 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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
|
Verfasst: Fr 10.06.05 15:48
Ich frage noch mal, was soll das ganze? 
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 10.06.05 16:39
|
|
|