Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Symulacja klawiatury


Rekomendowane odpowiedzi

Opublikowano

Da się napisać program, który jest w 100% niewykrywalny i symuluje wciśnięcia klawiszy? W sumie również chciałbym się dowiedzieć w jakim stopniu funkcja Send jest wykrywalna i jak ona działa. Może da się jakoś zmodyfikować sterowniki klawiatury, ew. samemu takie napisać?

Opublikowano

Skoro nie znasz odpowiedzi na takie proste pytanie to nie zabieraj się za sterowniki bo nic z tego nie wyjdzie... Zależy z której strony chodzi ci o wykrywalność. Chodzi ci o to, że bot ma symulować, czy żeby użytkownik komputera nie wiedział o tym programie?

Opublikowano

Chodzi o to, żeby inne procesy nie wykryły np. taki GameGuard, że nie wciskam klawiszy tylko program to symuluje. Poza tym nie musi być to koniecznie napisane w AutoIt, bo zapewne nie ma takich możliwości ew. jakieś biblioteki, mogę to napisać równie dobrze w asemblerze, tylko po prostu pytam czy jest taka możliwość.

Opublikowano

Funkcja Send/ControlSend jest raczej wykrywalna przez takie programy.

Ja proponowałbym ramie robota nad normalną klawiaturą i zaprogramować to ramie tak żeby wciskało odpowiednie klawisze.

Da się napisać swoje sterowniki do klawiatury. Łatwiej jest zrobić obejście do gry.

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

Nie wiem jakie tam mają zabezpieczenia przeciwko botom (ale slyszalem, ze jakies maja). Send i MouseClick są raczej do wykrycia przez te zabezpieczenia, no chyba, ze bedziesz miał farta i Cię nie złapią :)

Opublikowano

Funkcja Send/ControlSend jest raczej wykrywalna przez takie programy. Ja proponowałbym ramie robota nad normalną klawiaturą i zaprogramować to ramie tak żeby wciskało odpowiednie klawisze.

 

Ja to bym proponował podpiąć bota pod klawiaturę. Nic tego nie wykryje ale trudniej z realizacją.

A w gra przeglądarkowa np. margonem mogłaby wykryć jak używam funkcji Send albo MouseClick?

Nie powinno wykryć w grach przeglądarkowych bo w przeglądarce nie ma takich zabezpieczeń. No chyba, że przez jave jakość ale zawsze jave można wyłączyć.

Opublikowano

Jestem prawie pewien, że AC co najwyżej sprawdzają odstępy między naciśnięciami klawisza, a do tego wystarczy losowość i niepowtarzalność.
Funkcja send, według wiki autoita mówi o symulacji, czyli wysyła to samo co klawiatura.

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

Ja to bym proponował podpiąć bota pod klawiaturę. Nic tego nie wykryje ale trudniej z realizacją.

 

A mógłbyś wytłumaczyć na czym to polega i jak to zrobić, bo nigdzie nie mogę znaleźć info na ten temat.

Opublikowano

szukaj w informacjach o api windows i dokumentacji sterowników/komend systemowych klawiatury

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Kup sobie Arduino Leonardo :D

W sdk masz biblioteki służące do emulowania klawiatury tudzież myszy. Jest to w 100% bezpieczne, bo twój mikrokontroler jest wykrywany w systemie jako normalna klawa, a zaprogramowane wciśnięcia klawiszy są odbierane identycznie jak te fizyczne.

mjut.png
Opublikowano

Kup sobie Arduino Leonardo :D

W sdk masz biblioteki służące do emulowania klawiatury tudzież myszy. Jest to w 100% bezpieczne, bo twój mikrokontroler jest wykrywany w systemie jako normalna klawa, a zaprogramowane wciśnięcia klawiszy są odbierane identycznie jak te fizyczne.

 

Po co ma płacić za arduino? Od tego jest masa gotowców w google - niekoniecznie w autoit.

 

Przykład:

 

http://www.gamerzplanet.net/forums/flyff-discussion/249996-tutorial-how-to-write-bypasses-for-blocked-functions.html

 

oraz małe znalezisko:

 

; #FUNCTION# ====================================================================================================================
; Name...........: SimulKey
; Description ...: Simulate a Key-Send to a specified handle in the Background
; Author ........: Felix Lehmann alias u-coRe (elitepvpers)
; Modified.......: If you modify this Script, please enter your name here
; Remarks .......: None
; Related .......: -
; Parameters ....: $hwnd = Specified Window to Send to
; ...............: $key = Key or String to Send (If String $string have to be enabled [see $string])
; ...............: $string = Set this to 1 If your "$key" is a string
; ...............: $state = Set this to 'up' or 'down' if u want a special event | Default is press the Key 1 Time
; ...............: $delay = The delay to hold the key down
; Return Values .: 1 = Done | -1 = Couldn't load user32.dll
; Link ..........; http://www.elitepvpers.com/forum/guild-wars/
; ===============================================================================================================================
Func SimulKey($hWnd, $key, $string = 0, $state = 'skip', $delay = 10)
	;//Open DLL (user32)
	$user32 = DllOpen('user32.dll')
	If $user32 = -1 Then
		SetError(-1, 1, -1)
	EndIf

	;//Handle Special Keys
	Switch StringLower($key)
		Case 'enter'
			$WM_ENTER = 0x0d
			$dCall = DllCall($user32, 'int', "MapVirtualKey", 'int', $WM_ENTER, 'int', 0)
			$lParam = BitOR(BitShift($dCall[0], -16), 1)
		Case 'space'
			$WM_SPACE = 0x20
			$dCall = DllCall($user32, 'int', "MapVirtualKey", 'int', $WM_SPACE, 'int', 0)
			$lParam = BitOR(BitShift($dCall[0], -16), 1)
		Case 'tab'
			$WM_TAB = 0x09
			$dCall = DllCall($user32, 'int', "MapVirtualKey", 'int', $WM_TAB, 'int', 0)
			$lParam = BitOR(BitShift($dCall[0], -16), 1)
			;//Handle Standard Keys
		Case Else
			;//Stringmode 1
			If $string = 1 Then
				$split = StringSplit($key, "")
				For $ctn = 1 To $split[0]
					$split[$ctn] = Asc(StringLower($split[$ctn]))
				Next
				For $ctn = 1 To $split[0]
					$dCall = DllCall($user32, 'int', "VkKeyScan", 'int', $split[$ctn])
					$lParamAsc = DllCall($user32, 'int', "MapVirtualKey", 'int', $dCall[0], 'int', 0)
					$lParam = BitOR(BitShift($lParamAsc[0], -16), 1)
					$lUpParam = BitOR($lParam, 0xC0000000)
					DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYDOWN, 'int', $dCall[0], 'int', $lParam)
					Sleep($delay)
					DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYUP, 'int', $dCall[0], 'int', $lUpParam)
					Sleep(100)
				Next
				;//Stringmode 0
			ElseIf $string = 0 Then
				$key = Asc(StringLower($key))
				$dCall = DllCall($user32, 'int', "VkKeyScan", 'int', $key)
				$lParamAsc = DllCall($user32, 'int', "MapVirtualKey", 'int', $dCall[0], 'int', 0)
				$lParam = BitOR(BitShift($lParamAsc[0], -16), 1)
			EndIf
	EndSwitch
	$lUpParam = BitOR($lParam, 0xC0000000)
	If $string = 0 Then
		Switch StringLower($state)
			Case 'skip'
				DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYDOWN, 'int', $dCall[0], 'int', $lParam)
				Sleep($delay)
				DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYUP, 'int', $dCall[0], 'int', $lUpParam)
			Case 'down'
				DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", $WM_KEYDOWN, "int", $dCall[0], "int", $lParam)
			Case 'up'
				DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", $WM_KEYUP, "int", $dCall[0], "int", $lParam)
		EndSwitch
	EndIf
	DllClose($user32)
	Return 1
EndFunc   ;==>SimulKey

Wystarczy umieć posługiwać się wyszukiwarką i chwilkę poszukać ;)

9obpmnjr.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...