[Delphi] api hooking (afxcodehook), hook klawiatury

0

Witam!

chce zrobic biblioteke dll, ktora po wstrzyknieciu w proces bedzie potrafila przechwycic wciskane w oknie klawisze i je zmienic.
na przyklad po wstrzykniesiu w notepada przy pisaniu 'test' nie ma sie pojawic w oknie napis 'test' tylko 'xxxx' (bo dll bedzie zamieniac wszystko na 'x')

glowny problem jest w tym ze nie wiem jaka funkcje win api mam hookowac :-/
probowalem keybd_event w taki sposob (oczywiscie to jest tylko kawalek kodu ;] ):

//funkcja zwrotna
function keybd_eventzwrotna(bVk: Byte;bScan: Byte;dwFlags: Cardinal;dwExtraInfo: Cardinal): BOOL; stdcall;
begin
messagebox(0,'a','a',MB_OK);
Result:=nowakeybd_event(bVk,bScan,dwFlags,dwExtraInfo);
end;

//funkcja zakladajaca hooka
afxcodehook.HookCode(GetProcAddress(GetModuleHandle('user32'), 'keybd_event'), @keybd_eventzwrotna, @nowakeybd_event);

ale przy wstrzyknieciu w notepad.exe i nacisnieciu obojetnie jakiego klawisza okienko 'a' nie pokazywalo sie

prosze o pomoc i pozdrawiam

0

chodzi mi o hookowanie funkcji win api w pojedynczym procesie (przez wstrzykniecie dlla np. do notepada) a nie calej klawiatury.

no i przy uzyciu afxcodehook

0

Sprawdź najpierw jakich funkcji z jakich bibliotek używa Notatnik i sprawdź w MSDN, która funkcja może być odpowiedzialna za wypisywanie tekstu w Notatniku.

Ja mogę wypisać kilka przykładowych funkcji, które mogą byc za to odpowiedzialne:

PostMessageW, SetDlgItemTextW, wsprintfW, SendMessageW, DrawTextExW, SetWindowTextW, TextOutW

Od razu jednak zaznaczam, że nie koniecznie to któraś z tych. Trzeba poszukać samemu.

keyb_event nie masz co hookować bo Notatnik nie wykorzystuje tej funkcji w ogóle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1