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] Hack w C++ Klikanie w Klawisze


Rekomendowane odpowiedzi

Opublikowano

Powiem prosto z mostu. Chciałbym sie dowiedzieć jak w C++ mozna napsać, a raczej zrobic prosty program który klikał by

konkretne klawisze. Najlepiej jeżeli by był w *.Dll ponieważ chce aby działał on w procesie programu i mógłbym robić cos innego. Chodzi mi konkretnie o 2 klawisze i aby klikały sie w inny odstępach czasu.Wiem że za kliknięcie odpowiada komenda

GenerateKey((UCHAR)VkKeyScan('klawisz'));

i teraz chce aby powtarzał to non stop co ileś sekund to użył bym

 

Sleep(milisekundy);

 

 

A aby spał iles tam podał bym tak:

int czas_na_przycisk1;
cout << "podaj czas czekania na 1 przycisk: ";
cin >> czas_na_przycisk1;
// tu bym wstawił uchwyt znaczy komendę na plik
Sleep(czas_na_przycisk);
i tu bym zakończył tylko teraz aby to było w nieskończoność np puki nie klikne jakiegoś klawisza 

 

 

Da rade ?? Bardzo bym prosił o pomoc znam troche C++ więc w każdym razie ogarne troche wiedzy. Nie proszo o gotowce itp ale o to że mnie nakierujecie :P

 

Lajk i 5* będzie

hcq0.png


Opublikowano

To może ja o tym, co z tego wiem:

 

- w nieskończoność:

pętla while

 

- puki nie klikniesz klawisza

kbhit z conio.h (odradzam!) albo RegisterHotKey z WinApi:

http://msdn.microsof...esktop/ms646309

 

- czy jest możliwe wywoływać procedurę z aplikacji

Tak, oczywiście, chyba nawet obejdzie się bez dll'ki. Jeśli tylko znasz jej adres ( a może i nawet bez tego ). Pytaj już bardziej ogarniętych w RE... Tyle wiem, że da się na pewno, a tutaj jakiś art z google'a:

http://www.codeproject.com/Articles/29527/Reverse-Engineering-and-Function-Calling-by-Addres

Ta sygnatura jest pusta.

Opublikowano

Tak na boku 4ggr. Bardzo pomogłaś lecz mam takie pytanie :) jak by była pętla np for (i = 1; i = 2;) czyli bez powiększenia wartości. Przecież wtedy warunek "i" nie miał by nigdy 2 ?? trochę głupie ale tak sobie teraz pomyślałem :) co do twoich postów no postaram sie coś o WinApi zahaczyć :P

hcq0.png


Opublikowano

Tak się skłąda, że przytoczona przez ciebie pętla powiększałaby wartość dokładnie raz, gdyż

 

i = 2

 

przypisuje wartość 2 do zmiennej i.

 

Miałes na myśli

 

for ( i = 1; ; i == 2 ); // pod warunkiem, że i się w żadnym momencie nie zmieni (na wartość równą 2), pętla będzie wykonywać się w nieskończoność

 

- - - - - - - -

 

Ale po co komplikować życie ( i tracić bajt pamięci ). Do nieskończonej pętli for służy po prostu:

 

for ( ; ; )

 

I tyle.

Ta sygnatura jest pusta.

Opublikowano

#include <iostream>
#include <windows.h>
using namespace std;

int main ()
{
int a;
Cout << "Podaj Co ile F4: ";
cin >> a;
for (;
{
	GenerateKey((UCHAR)VkKeyScan('VK_F4'));
	sleep (a * 1000)
}
}

 

Co ty na to ??

 

@edit

 

jest Sleep (a*1000) bo w Sec podaje każdy więc :) a to w milisekundach musi byc :P

 

@Edit 2

 

Jest Zaje ***** napisałem coś takiego oczywiscie pomogło mi troszke Google :)


#include <windows.h>
#include <iostream>
#include <winable.h>
using namespace std;

HWND hWnd = FindWindow(0, "Brood War");  /* to nazwa okna aplikacji ?? */

void GenerateKey(BYTE vk) {

INPUT Input;
ZeroMemory(&Input, sizeof(Input));
Input.type = INPUT_KEYBOARD;
Input.ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
Input.ki.wVk = vk;
SendInput(1, &Input, sizeof(INPUT));

return;
}

int main() {
int a;
cout << "Co ile mam klikac??: ";
cin >> a;
SetForegroundWindow(hWnd);
for (;{
GenerateKey((UCHAR)VkKeyScan('C'));
Sleep (a * 1000);
}
}

 

w tym macie napisane w komentarzu czy to nie to opowiada za nazwe aplikacji :)

hcq0.png


Weteran
Opublikowano

Zamiast for( ; ; ) może też być while(1), to drugie jest częściej używane, ale to i tak mało istotne.

Ale o funkcji GenerateKey pierwszy raz słyszę, podobnie jak i mój kompilator, pewnie chodzi ci o sendkey albo keybd_event.

A po trzecie primo - ten kod co podałeś, to nie jest budowa pliku dll.

 

@Edit: pomyliłem się co do tego generatekey, chociaż przyznaje że dość mało używana jest ta funkcja.

Opublikowano

Xaulin ja wiem ze to nie *.Dll :) To takie pytanie jak zew. aplikacja może ingerować w kod aplikacji i działać tylko tam nawet gdy jest na pasku (minimalizacja) ??

 

Te GenerateKey zaraz sprawdze bo np C w notatniku jak i w chacie np w Grze wysyła. Zaraz sprawdze jeszce i ide spać jak coś dam jutro wam znać :-) Dobranoc Do Jutra

 

@Edit

 

Na szybkiego sprawdziłem i ani mój kod ani zrobiony keybd_event nie działa przy Vk_F2 ani F2 jak mam zapisac ten przycisk??

Jutro odczytam znaczy dziś

hcq0.png


Weteran
Opublikowano

Pewnie źle podałeś argument funkcji, już nie chcę wnikać co tam wpisałeś, tak jest poprawnie:

 

 

keybd_event(VK_F1, 0, 0, 0);

keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0);

 

W GenerateKey pewnie jest analogicznie.

Opublikowano

Znam się na C++ i zrobię ci to na gotowo, ale nie daje pewności, że będzie działać, bo ja tworzę do WarRocka, ale tu też powinno. Za chwilę wstawię ci kod w edit.

 

 

@edit

 

Tu masz kod, a w miejsce XYZ musisz wstawić odpowiedni kod odpowiadający za dany przycisk :

 

 


#include <windows.h>

int dzialanie=0;

////////////////////////////// OPCJE //////////////////////////////
void Opcje ()
{

if(GetAsyncKeyState(VK_F4) &1)
{
dzialanie=1;
}

if(GetAsyncKeyState(VK_F5) &1)
{
dzialanie=0;
}

////////// Dzialanie
if (dzialanie==1)
{
keybd_event(XYZ, 0, 0, 0);
}

}

void THX()
{
for (;
{
Opcje();
Sleep(100);
}
}

////////////////////////////// END //////////////////////////////
BOOL WINAPI DllMain(HINSTANCE module, DWORD dwReason, LPVOID lpvReserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)THX, NULL, NULL, NULL);
}
return true;
}

 

 

 

A tu masz listę kodów :

 

 

A - 0x41

B - 0x42

C - 0x43

D - 0x44

E - 0x45

F - 0x46

G - 0x47

H - 0x48

I - 0x49

J - 0x4A

K - 0x4B

L - 0x4C

M - 0x4D

N - 0x4E

O - 0x4F

P - 0x50

Q - 0x51

R - 0x52

S - 0x53

T - 0x54

U - 0x55

V - 0x56

W - 0x57

X - 0x58

Y - 0x59

Z - 0x5A


 

 

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Opublikowano

Co do tego kodu 1234567... XYZ mam wstawic klawisz który ?? o co chodzi bo nie zabardzo zakumałem <zielony> xD:)

 

@edit

 

za dany kod?? Czyli ja potrzebuje F4 F3 i ewentualnie F2 :)

 

@Edit2

 

ustawiłem potrzebną rzecz na pasku dostępu na klawisz 4 jest ok tylko pisze w chacie a nie emuluje mi tego jako uzycie tego skrótu ;/ Jak to zrobić ??

hcq0.png


Opublikowano

Ja tak ustawiłem, że jak naciśniesz F4 to się włączy i będzie naciskać wybrany klawisz, a jak naciśniesz F5 to się wyłączy. A w miejscu XYZ masz wstawić kod odpowiadający za daną literkę czyli jak chcesz żeby naciskało A to zamiast XYZ dajesz 0x41. A jeżeli chcesz tam jakieś inne poza literkami to masz je tutaj, ale musisz zmienić HotKey jeżeli będą takie same :



VK_LEFTMOUSE
VK_RIGHTMOUSE
VK_MIDDLEMOUSE
VK_BACKSPACE
VK_TAB
VK_ENTER
VK_SHIFT
VK_CONTROL
VK_ALT
VK_PAUSE
VK_CAPITAL
VK_ESCAPE
VK_SPACE
VK_PGUP
VK_PGDN
VK_END
VK_HOME
VK_LEFT
VK_UP
VK_RIGHT
VK_DOWN
VK_PRINTSCRN
VK_INSERT
VK_DELETE

VK_LEFTWIN
VK_RIGHTWIN
VK_NUMPAD0
VK_NUMPAD1
VK_NUMPAD2
VK_NUMPAD3
VK_NUMPAD4
VK_NUMPAD5
VK_NUMPAD6
VK_NUMPAD7
VK_NUMPAD8
VK_NUMPAD9
VK_MULTIPLY
VK_ADD
VK_SEPARATOR
VK_SUBTRACT
VK_DECIMAL
VK_DIVIDE
VK_F1
VK_F2
VK_F3
VK_F4
VK_F5
VK_F6
VK_F7
VK_F8
VK_F9
VK_F10
VK_F11
VK_F12

 

 

Jeżeli coś jest ciągle nie zrozumiałe to napisz dokładnie co on ma robić czyli co ma naciskać, a ja ci go zrobię i tyle, będzie szybciej niż tłumaczyć.

 

 

@edit napisz do mnie na gg 231543 to ci pomogę, bo nie rozumiem o co ci teraz chodzi.

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Opublikowano

To pytanie za 100 punktów. Jaka bilioteka obsługuje

GetLParam
PostMessage_new

 

Bardzo potrzebne :)

hcq0.png


Opublikowano

Microsoft visual ma ją, a jaka biblioteka to nw dokładnie, ale mam ten kod i mi działa to zobaczę później, bo teraz nie mam czasu i napiszę.

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...