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

2015-01-29 20:27
Biały Szczur
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.

Pozostało 580 znaków

2015-01-29 20:35
unoquatrono
0

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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

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

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

Pozostało 580 znaków

2015-01-29 21:07
1

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


Pozostało 580 znaków

2015-01-29 21:41
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 ;)

Pozostało 580 znaków

2015-01-29 23:12
Biały Szczur
0

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

Pozostało 580 znaków

2015-01-30 04:43
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.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2015-01-30 04:44
Możesz nawet w Ruby, tylko pytanie czy używanie młotka do wkręcania śruby ma sens... - Bartosz Wójcik 2015-01-30 15:17

Pozostało 580 znaków

2015-01-30 15:26
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).


Pozostało 580 znaków

Liczba odpowiedzi na stronę

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