[Delphi]Zmiana ustawień innego programu

0

Witam :)
Od jakiegoś czasu próbuje napisać program który zmieniał by w innym aktywnym programie ustawienia. Chodzi tu o ustawienia limitów upload'u i download'u klientów sieci p2p. Chciałbym aby w programie można było ustawić limity a on zmieniał by w danym kliencie te ustawienia. I tu zaczyna się mój problem nie weim jak dostać się do tych opcji, myślałem że można by dobrać się do pliku w którym zapisane są ustawienia i odpowiednio je zmienić, jednak porzuciłem ten pomysł gdyż nie mogę znaleźć tego pliku. Ostatni wpadłem na pomysł aby przez uchwyt programu dobrać się do tego, lecz nie bardzo wiem jak to wykonać. I w tym momencie chciałbym zadać pytanie: Czy to jest w ogóle wykonalne w ten sposób jeśli tak to prosił bym o jakieś wskazówki, natomiast jeśli jest jakiś inny sposób to proszę o przedstawienie go :)
P.S.
szukałem sporo na ten tema jednak nie znalazłem nic co by mogło mi pomóc.

0

Kiepsko szukałeś, na forum było już to wiele razy omawiane.

0

Tak tak znalazłem ale w tamtych przypadkach chodziło o przechwycenie danych z innego programu. ja natomiast chcę przekazać coś do innego programu. Ale jeszcze dla pewności poszukam :)

0

Świetnie, teraz w tych przykładach które znalazłeś zamień GetWindowText na SetWindowText i zamiast pobierać wartość z Edita będziesz ją zmieniać.

0

No tak do tego już doszedłem, ale jak dostać się do narzędzia->ustawienia. Nie było by problemu gdyby edity były w głównym oknie...

0

Jeżeli nie wiesz jak to znaczy, że źle szukałeś. Do otwartego okna child dostaniesz się bez problemu, jeżeli jest zamknięte to trzeba je wywołać lub prościej po prostu zmienić wartość w pamięci. Jak zmienić? Szukaj :)

0

wybacz nie mogę nic na temat zmieniania wartości w pamięci znaleźć... proszę o link :)

0

Kiedyś jacyś specjaliści od Tibii robili na forum bota. Tam jest to dosyć dobrze opisane. Wpisz hasło "tibia" i szukaj w wątkach, które się pojawią (dział Delphi).

Podpowiem, że może warto jest wpisywać w te pole ograniczające transfer jakąś konkretną ale nietypową wartość i szukać w pamięci, następnie ją zmienić i szukać ponownie i tak do skutku aż znajdziesz miejsce w pamięci gdzie ten limit jest przechowywany.

0

Użyłem Tsearch znalazłem adresy i teraz będe się bawić dalej
chyba będę musiał użyć WriteProcessMemory chociaż tego pewny nie jestem xD

0
Mankej napisał(a)

[...]myślałem że można by dobrać się do pliku w którym zapisane są ustawienia i odpowiednio je zmienić, jednak porzuciłem ten pomysł gdyż nie mogę znaleźć tego pliku.[...]

a do rejestru zagladales?

0

Pytanie tylko czy program zareaguje na zmianę limitu w pliku albo w rejestrze bez potrzeby restartowania programu.

0
AdamPL napisał(a)

Pytanie tylko czy program zareaguje na zmianę limitu w pliku albo w rejestrze bez potrzeby restartowania programu.

no w sumie... pewnie nie;/

0

Nieistotne już, teraz próbuje przez pamięć ale ma problem mianowicie po zmianie wartości w TSearch zmienia się adres czemu?

0

Jeżeli adres się zmienia to spróbuj znaleźć jakiś charakterystyczny ciąg znaków przed lub po adresie przechowującym limit, który występuje w stałej odległości od niego. W swoim programie przed zmianą limitu poszukuj w pamięci tego charakterystycznego ciągu i dodawaj/odejmuj odpowiednią ilość bajtów. W ten sposób zawsze wstawisz nowy limit we właściwe miejsce.

0

Znalazłem ten ciąg, obliczyłem że trzeba dodać 30 tylko nie wiem jak znaleźć ten ciąg przed zmiana limitu?

0

Tylko najpierw znajdź takie miejsce w pamięci gdzie ten szukany ciąg występuje najwcześniej i szukaj od tego miejsca, bo przeszukiwanie całej pamięci będzie nieefektywne.

while (toCoSzukam <> toCoZnalazlem)  do
  begin
    toCoZnalazlem := ReadMem(aktualnyAdres, 4); {czytamy cztery bajty jeżeli ten stały ciąg ma taką długość}
    aktualnyAdres:= aktualnyAdres+1;{tutaj przesuwasz się o bajt do przodu}
  end;

Powyższy kod można zoptymalizować pod warunkiem, że szukany ciąg przesuwa się np. co 4 bajty wtedy możesz skakać w pamięci co 4 bajty, a nie co jeden. To przyspieszy szukanie.

0

Odkopie trochę temat ale wole to niż nowy :) Wtedy zaniechałem zabawy z tą sprawą z powodu braku czasu, teraz chcę wrócić do tego programiku.
Na chwilę obecną proszę o jakiś poradnik, artykuł lub cokolwiek na temat pamięci procesów bo w tej sprawie google milczą.
Szczególnie interesuje mnie dynamiczne przydzielanie pamięci jak sobie z nim poradzić :)
Z góry dzięki.

0

nie żartuj, 52 tysiące linków pod samym hasłem readprocessmemory.

0

źle na pisałem na temat pamięci dynamicznej bo nie wiem jak znaleźć ten jeden powtarzający się element pamięci... Jest możliwe żeby takowego nie było?
czy jak znalazłem stałe wartości w pamięci mogę to wykorzystać jakoś ?
http://img213.imageshack.us/img213/8208/pamipr4.jpg
bo tej wartości powtarzającej się znaleźć nie mogę...

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