c2i forums
Wyślij klucze do gry za pomocą haka DirectInput - Printable Version

+- c2i forums (http://c2i.pl)
+-- Forum: Public (http://c2i.pl/forum-1.html)
+--- Forum: General (http://c2i.pl/forum-5.html)
+--- Thread: Wyślij klucze do gry za pomocą haka DirectInput (/thread-5292.html)

Pages: 1 2


Wyślij klucze do gry za pomocą haka DirectInput - manuel.boehm - 11-17-2018

Cześć chłopaki. Próbuję wysłać klucze do gry online o nazwie Shaiya. Próbowałem SendMessage i PostMessage (w celu wysłania kluczy, gdy okno nie jest skupione) w c #, ale to nie działa dla mnie. Wysyła klucz do czatu, ale postać się nie porusza. Sprawdziłem klucze za pomocą szpiega ++ i wysyłam je poprawnie. Zrobiłem więc kilka badań i myślę, że Shaiya potrzebuje DirectInput. Aby wysyłać klucze z okienkiem DirectInput musi się skupić. Mam to działa z c # ale jak powiedziałem, że to wymaga skupienia, ale chcę wysłać klucze do zminimalizowanego / nieukierunkowanego okna.Aby to zrobić, przeszukałem wiele forów i od czego się uczę, muszę podłączyć DirectInput i zmień bufor klawiszy za pomocą moich kluczy. Znajduję poniższy kod i zmieniam zmienne, które trzeba zmienić i wstrzyknęłam plik DLL do gry. Powoduje to wstrzyknięcie i kiedy klikam "F5" nic się nie dzieje. Spojrzałem na szpiega ++, to nawet nie wysyła klucza do gry, otrzymałem 0 wiadomość o tym kluczu. Oto mój kod. Z tego co widzę, SendKeyDInput nie działa. Ktoś ma na to rozwiązanie?         Kod:   // dllmain.cpp: Definiuje punkt wejścia dla aplikacji DLL. #define _CRT_SECURE_NO_WARNINGS // ignoruje niektóre ostrzeżenia ... #define _CRT_NON_CONFORMING_SWPRINTFS // ... #include "stdio.h" #include <windows.h> #include "detours.h" #include <cstdio> #include <string> #include <cstring> #include <wektor> #include <time.h> #include "dinput.h" #pragma comment (lib, "detours.lib") #pragma comment (lib, "user32.lib") typedef HRESULT (__stdcall * GetDeviceState_t) (LPDIRECTINPUTDEVICE, DWORD, LPVOID *); HRESULT __stdcall hkGetDeviceState (LPDIRECTINPUTDEVICE pDevice, DWORD cbData, LPVOID * lpvData); DWORD Base = 0; DWORD GetDeviceStateOffset = 0x7670; // To jest przesunięcie GetDeviceState z DInput8.dll // Otwórz IDA i Importuj DInput8.dll, następnie spójrz w tabelę funkcji dla DirectInput8Create // Istnieje adres (1000XXXX lub 0CXXXXX) - skopiuj go i zapisz na później // Następnie spójrz na CDIDev_GetDeviceState i skopiuj również ten adres // Teraz odbierz adres z CDIDev_GetDeviceState od DIrectInput8Create, a otrzymasz swój HANDLE PRZESUNIĘCIA tmpHandle = NULL; HMODULE hModDInput8 = NULL; DWORD dwGetDeviceState = NULL; FARPROC dwDirectInput8Create = NULL; struct MyKeys {BYTE Key; DWORD StartTime; DWORD TTL; BOOLEAN isDown; }; MyKeys KeyBuffer [256]; DWORD WINAPI HookThread (); void add_log (format char *, ...); void SendKeyDInput (bajt DIK_, czas DWORD); GetDeviceState_t pGetDeviceState; BOOL APIENTRY DllMain (HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {switch (ul_reason_for_call) {case DLL_PROCESS_ATTACH: add_log ("========== LOG START =========="); add_log ("Dołączony DLL"); add_log ("Tworzenie wątku ..."); tmpHandle = CreateThread (0, 0, (LPTHREAD_START_ROUTINE) i HookThread, 0, 0, 0); if (! tmpHandle) {add_log ("ThreadCreation Failed!"); } złamać ; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } DWORD WINAPI HookThread () {Base = (DWORD) GetModuleHandleA ("game.exe"); // Zdobądź bazę GAME (zmienia się za każdym razem, gdy otworzysz grę) add_log ("Thread Created"); add_log ("game.exe Base:% x", Base); while (! hModDInput8) {add_log ("Wyszukiwanie dinput8.dll ..."); hModDInput8 = GetModuleHandle (L "dinput8.dll"); Sen (100); } add_log ("Znaleziono dinput8.dll:% x!", hModDInput8); while (! dwDirectInput8Create) {add_log ("Wyszukiwanie GetDeviceState ..."); dwDirectInput8Create = GetProcAddress (hModDInput8, "DirectInput8Create"); Sen (100); } add_log ("Found DirectInput8Create:% x!", dwDirectInput8Create); dwGetDeviceState = (DWORD) ((DWORD) dwDirectInput8Create - GetDeviceStateOffset); add_log ("GetDevicestate jest tutaj (DirectInput8Create -% x):% x", GetDeviceStateOffset, dwGetDeviceState); add_log ("Hooking GetDeviceState ..."); pGetDeviceState = (GetDeviceState_t) DetourAttach (& (PVOID &) dwGetDeviceState, (PBYTE) hkGetDeviceState); add_log ("Initiate Keyboard Buffer ..."); // zainicjuj bufor dla (int i = 0; i <256; i ++) {KeyBuffer [i]. isDown = false; KeyBuffer [i]. Klawisz = 0; KeyBuffer [i]. StartTime = 0; KeyBuffer [i]. TTL = 0; } Add_log ("Przechodzenie do głównej pętli ..."); while (true) {if (GetAsyncKeyState (VK_F5) i 1 << 15) {// Sprawdzamy najbardziej znaczący bit z VK_F5 (F5), podczas gdy zmieniliśmy go z 15 bitów na lewy 1 //, a następnie mały del


RE: Wyślij klucze do gry za pomocą haka DirectInput - johnabraham1 - 11-17-2018

więc, pozwól mi zrozumieć: próbujesz wprowadzić naciśnięcia klawiszy z kierunkiem, a następnie sprawdzasz, czy działa, sprawdzając, czy naciśnięcie klawisza zostało wstawione jako wiadomość okna? Czy masz jakieś pojęcie o tym, co robisz?


RE: Wyślij klucze do gry za pomocą haka DirectInput - tony.ahmadi - 11-17-2018

Nie można oczekiwać, że zmiany w buforze w GetDeviceState będą propagować zmiany stanu klucza. Albo jak to rozgryzłeś? edytuj: sry, to jest w porządku, jeśli twój dziennik nie jest wyświetlany, hak nie jest wywoływany, to zgaduję, niewłaściwe przesunięcie?


RE: Wyślij klucze do gry za pomocą haka DirectInput - d.an.ila.h.u.c.is.o - 11-17-2018

Zacytować: Originally Posted by learn_more więc, pozwól mi zrozumieć: próbujesz wprowadzić naciśnięcia klawiszy z kierunkiem, a następnie sprawdzasz, czy działa, sprawdzając, czy naciśnięcie klawisza zostało wstawione jako wiadomość okna? Czy masz jakieś pojęcie o tym, co robisz? Przede wszystkim nie jest to kierunek, to DirectInput. Sprawdziłem, czy program wie, czy klawisz F5 naciska, czy nie? Zacytować: Originally Posted by kingdeking Nie można oczekiwać, że zmiany w buforze w GetDeviceState będą propagować zmiany stanu klucza. Albo jak to rozgryzłeś? edytuj: sry, to jest w porządku, jeśli twój dziennik nie jest wyświetlany, hak nie jest wywoływany, to zgaduję, niewłaściwe przesunięcie? Sprawdziłem przesunięcia, jak 3 razy Reakcja DirectInput8Create offset i CDIDev_GetDeviceState offset jest poprawna


RE: Wyślij klucze do gry za pomocą haka DirectInput - azndragongod - 11-17-2018

Zacytować: Originally Posted by learn_more mówiłem o tym, wstrzykujesz directinput, a oczekujesz, że szpieg ++ zobaczy komunikat okna? nie wiem, co palisz, ale przestań to robić, to nie pomaga. także, jeśli gra używa directinput: istnieje więcej niż jeden sposób użycia directinput, więc może wypróbuj inną funkcję, która może być wykorzystana do pobrania danych wejściowych. nie wiem o czym mówisz, ale wygląda na to, że działa.i można zobaczyć SendInput z szpiegiem ++ tutaj trochę ss z tego EDYCJA: nie chcę pobrać danych wejściowych, które obecnie sprawdzam za pomocą GetAsyncKeyState.Chcę wysłać dane wejściowe.


RE: Wyślij klucze do gry za pomocą haka DirectInput - accounts.123456789 - 11-17-2018

powiedział nuff.


RE: Wyślij klucze do gry za pomocą haka DirectInput - stevanie.gunawan - 11-17-2018

Zacytować: Originally Posted by learn_more powiedział nuff. Zrobiłem to za pomocą c # i musi się skupić, ale jak już powiedziałem, wersja c ++ nawet nie wysyła klucza, który mam na myśli w c # z PostMessage Widziałem wiadomości w szpiegu ++, ale to nie porusza postaci, Z SendInput w c # postać był w ruchu, a ja otrzymywałem wiadomości, ale niestety muszę się skupić.


RE: Wyślij klucze do gry za pomocą haka DirectInput - kmtnez - 11-17-2018

Zacytować: Originally Posted by SwordStroker Zrobiłem to za pomocą c # i musi się skupić, ale jak już powiedziałem, wersja c ++ nawet nie wysyła klucza, który mam na myśli w c # z PostMessage Widziałem wiadomości w szpiegu ++, ale to nie porusza postaci, Z SendInput w c # postać był w ruchu, a ja otrzymywałem wiadomości, ale niestety muszę się skupić. Cóż, wysyłanie klucza 0x80, który jest w wirtualnych kodach VK_F17: | Spróbuj odczytać klucz-bufor i wyświetlić go gdzieś, jestem pewien, że nasz wstrzyknięcie niewłaściwy kod


RE: Wyślij klucze do gry za pomocą haka DirectInput - ban6ee - 11-17-2018

Zacytować: Originally Posted by JD96 Cóż, wysyłanie klucza 0x80, który jest w wirtualnych kodach VK_F17: | Spróbuj odczytać klucz-bufor i wyświetlić go gdzieś, jestem pewien, że nasz wstrzyknięcie niewłaściwy kod buffer [KeyBuffer [i] .Key] = 0x80; Nie zmieniam wartości Key, 0x80 to keydown i 0 jest kluczem do góry


RE: Wyślij klucze do gry za pomocą haka DirectInput - mholzem - 11-17-2018

Zacytować: Originally Posted by SwordStroker buffer [KeyBuffer [i] .Key] = 0x80; Nie zmieniam wartości Key, 0x80 to keydown i 0 jest kluczem do góry Oh my, nie przeczytałem tego jeszcze raz .. Cóż, spróbuj mojej sugestii i przeczytaj coś z bufora, a także dołącz inne funkcje