Jak otrzymać adres biblioteki dll znajdującej się w pamięci procesu ?

0

Witam. Piszę program w którym operuje na adresach pamięci. W programie potrzebuje przechwytywać wartości z innego programu. Jednak adresy się zmieniają, w zależności od tego jaki adres w pamięci procesu ma konkretna biblioteka dll. W jaki sposób otrzymać adres biblioteki dll w pamięci procesu ? Np biblioteki hw.dll

0

Biblioteka nie jest lokowana w pamięci procesora tylko w pamięci RAM, możesz odczytać tylko identyfikator (PID) np w Menadżerze zadań Windows.
Procesor tylko steruje przepływem danych...
Przydało by ci się trochę teorii ;]

0

Ale w którym momencie ja coś mówie o procesorze ??
Przeczytaj jeszcze raz mój post, pojawia sie tam jedynie słowo proces ^^

Mam program który potrafi odczytać za każdym razem adres biblioteki, CheatEngine sie nazywa

0

Wybacz sądziłem że "pamięci procesu ma ..." masz na myśli procesor...
ale skoro nie to małe sprostowanie jak uruchamiasz proces to jeżeli on ładuje bibliotekę DLL to w drzewie tego procesu będą załadowane biblioteki. Możesz napisać program który je odczyta. Niestety kodu źródłowego Ci nie podam bo nie bawiłem się czymś takim ale popatrz na kod źródłowy CheatEngine 5 http://www.cheatengine.org/downloads.php

0

Chodzi mi o dostęp do adresu biblioteki dll z której korzysta dany proces. Np w programie CurrProcess coś takiego występuje, chciałbym móc uzyskać Base Address kilku bibliotek
tak jak tutaj
user image
Pomożecie ?:)

0

Nie wiem może obecnie są lepsze funkcje ale dawniej jeszcze pod win 98 można było to zrobić wykorzystując funkcje:
CreateToolhelp32Snapshot
Module32First
Module32Next
no i oczywiście CloseHandle do zwolnienia uchwytu uzyskanego przez CreateToolhelp32Snapshot

0

Nie wiem czy zdajesz sobie sprawę że biblioteka DLL może sobie fruwać po pamięci.
Przy każdym wywołaniu jakieś funkcji może być w innym miejscu.
Masz jedynie pewność że dla twojego procesu zawsze widziana pod jednym adresem.
Zawsze możesz pobrać adres jakieś funkcji a od niej zaczynać odliczać.

0

Właśnie mi o to chodzi, chodzi mi o adres biblioteki dll dla konkretnego procesu

Powiedzmy ze nazwa biblioteki z jakiej korzysta program do mydll.dll
Udało mi sie dotrzec do tego ze wartosc w tym programie znajduje sie pod adresem mydll.dll + 0x0123456

w jaki sposób znaleźć adres biblioteki dll ?

Tutaj widze jakieś rozwiązanie w C#
http://stackoverflow.com/questions/269263/find-the-address-of-a-dll-in-memory

Czy chociaz rozumiecie co chce uzyskać ?:(

0

Przecież już Ci podano - Module32First/Module32Next. W tym dziale znajdziesz wiele kodów z tego korzystających. _13th_Dragon przesadza, dllka póki jest w użyciu to siedzi w jednym miejscu, zawsze można jej też (nawet zdalnie) podnieść licznik referencji żeby nie została zwolniona przedwcześnie (z Twojego punktu widzenia).

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