Jak napisać aplikację ingerującą w pracę innej aplikacji?

0

Witam.
Czego powinienem się pouczyć by napisać aplikację która będzie ingerowała w pracę innej aplikacji? (język VB.NET)
M. in - wpisywać tekst, klikać na buttony itp. itd.

0

trzeba by uruchomic tą aplikację w "izolowanym" środowisku albo użyć selenium

0

co masz na mysli pisząc w "izolowanym" środowisku?

1

Zmienić język na C++ i wtedy korzystać np. z WriteProcessMemory ReadProcessMemory ;)

0
Bartosz Wójcik napisał(a):

Zmienić język na C++ i wtedy korzystać np. z WriteProcessMemory ReadProcessMemory ;)

Eeee ja w C# to robiłem to i vb .net się da wystarczy zaimportować potrzebne funkcje ;)

0

Próbowałem użyć WriteProcessMemory , ale niestety nie mogę odczytać adresów textboxów/buttonów aplikacji ;(

2
Bartosz Wójcik napisał(a):

Zmienić język na C++ i wtedy korzystać np. z WriteProcessMemory ReadProcessMemory ;)

A że niby w VB.net nie można? Przecież to funkcje WinApi i można je normalnie zaimportować choć do tego o czym pisze autor wątku chyba bardziej były by potrzebne wysyłanie komunikatów czyli SendMessagei odpowiedni komunikat. Oczywiście wcześniej musisz znaleźć uchwyty buttonów i pola tekstowego i tu przyda się FindWindow i FindWindowEx.

2
Biały Szczur napisał(a):

Próbowałem użyć WriteProcessMemory , ale niestety nie mogę odczytać adresów textboxów/buttonów aplikacji ;(

To zależy z jaką aplikacją masz do czynienia. Aplikacje natywne, korzystające z natywnych kontrolek Windows możesz odszukać korzystając z funkcji WinAPI FindWindow(Ex) i później komunikować się z nimi przez komunikaty SendMessage, jeśli aplikacja nie korzysta z natywnych kontrolek Windowsa w 1 kolejności należałoby się zorientować Z CZEGO W OGÓLE korzysta i wtedy poszukać pod to rozwiązania.

Dla natywnych kontrolek możesz np. znaleźć główne okno aplikacji przez FindWindow(Ex), a później przez EnumChildWindows przeszukać wszystkie jego elementy w poszukiwaniu swojej kontrolki (zwracając uwagę na charakterystykę kontrolki, np. rozmiar, klasę okna).

Jeśli masz zamiar ingerować w pamięć procesu, możesz znaleźć okno przez FindWindow(Ex), później korzystając z uchwytu okna znaleźć jego proces przez GetWindowThreadProcessId(), potem otworzyć proces przez OpenProcess() no i w końcu zczytać dane przez ReadProcessMemory() lub zmodyfikować przez WriteProcessMemory() pamiętając, że adresy podajemy jako wartość VA, czyli wirtualny adres (a nie RAW adres w pliku) w przestrzeni adresowej procesu np. 0x401020 (RVA + ImageBase [hModule] procesu).

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