Jak znaleźć adress buttonów innej aplikacji?

2015-01-29 22:21
Biały Szczur
0

Witam.
Używając WriteProcessMemory, chciałbym wciskać na buttony i okienka w innej aplikacji, lecz jak wykryć ich "adress" ?
Oprócz Cheat Engine można użyć czegoś innego? (bo z tym nie dałem rady)

Pozostało 580 znaków

2015-01-30 09:47
1

Szczerze pisząc pierwszy raz widzę zabieranie się do tego co chesz osiągnąć, poprzez pisanie po pamięci procesu. Czy aplikacja docelowa nie jest okienkowa? Bo bardzo trudno ustalić pod jaki adres zapisać i co zapisać żeby program sobie "pomyślał", że na coś klikamy. Prościej enumerować kontrolki i wysłać do nich odpowiedni komunikat symulujący click. Oczywiście jeżeli kontrolki te mają swoje uchwyty. Inaczej cięzko mi coś więcej doradzić. Może ktoś inny tutaj da radę.


edytowany 1x, ostatnio: olesio, 2015-01-30 09:47

Pozostało 580 znaków

2015-01-30 11:50
1

Z tego co mi wiadomo to się robi inaczej. Znajdujesz uchwyt okna, a potem uchwyt kontroli w tym oknie, a potem wysyłasz eventy do danej kontrolki.
Pisanie po cudzej pamięci skończy się jakąś tragedią.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2015-01-30 12:51
1

Niekoniecznie tragedią, ale trzeba wiedzieć co się robi. Trzeba znać adres funkcji, znać jej parametry, konwencje wywołań i można ją sobie wywołać z tym, że zamiast mazać po pamięci lepiej wstrzyknąć się do procesu np. DLL Injection a tam można już sobie korzystać jak ze swojego procesu.
Przykład w Delphi bo nie znam VB, ale zasada ta sama.
Naszym celem jest poniższa funkcja w procesie ofiary (obie aplikacje czyli ofiara jak i DLL'ka są napisane w delphi)

function Test(a, b: Integer):Integer;
begin
  Result := a+b mod 9;
end;

"Wyczajamy" sobie adres tej funkcji np. IDR albo DeDe czy Ollym jak już mamy ją i znamy jej parametry robimy sobie dll'kę z takim typem:

type
  Func = function (a, b:integer):integer;

później wystarczy ją wywołać tak:

var
  TargetFunc: Func;
begin
  TargetFunc := Pointer($005599EE);
  ShowMessage('Result '+IntToStr(TargetFunc(5,9)));
end;

Z tym, że adres funkcji $005599EE został wcześniej "wyczajony" w procesie ofiary i jest stały. A nie musi być stały zwłaszcza gdy gra używa jakiegoś protectora.

Wyszukiwanie adresu funkcji, poznawania parametrów itp. wymaga wiedzy na temat RE i jest to bardzo szerokie zagadnienie możesz zacząć od http://re.coldwind.pl ale to nie jest wiedza którą zdobędziesz w jeden wieczór.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0