![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Конец процесса занимаемого в памяти [D6, D7, Win95/98, WinXP]
-=SS=- © (2004-10-18 16:23:00)Добрый уважаемые експерты :) !!!
Есть маленькая проблема.
Сщитываем процес Функцией ReadProcessMemory . Базовый адресс понятен и для всё виндовых приложений он одинаковый, а вот где он заканчивается ? Или надо считывать 4гб данных ?
Зараннее благодарен !
VMcL (2004-10-23 14:48:00) [1]>> SLV (23.10.04 10:25) [18]
Иногда лучше жевать...
SLV (2004-10-23 10:25:00) [2]смотри PSAPI (GetProcessInformation) или PIMAGENTHEADERS.OptionalHeader.SizeOfImage...
-=SS=- (2004-10-20 09:50:00) [3]Ага понятно спасибо !!!!!
Тойсть еслиVirtualQueryEx<> SizeOf(B)то занимаемая процессом память закончилась ?
Но можешь если захочешь не отвечать попробую разобратся сам, тем более что больше чем основы у меня уже есть.
Еще раз спасибо !!!
VMcL (2004-10-19 23:08:00) [4]>> -=SS=- © (19.10.04 10:24) [11]
> Почему ???????????????????
Потому что, не знаю как кто, а я не телепат и угадывать, что именно не работает, не умею. К тому же VirtualQueryEx() - это функция.
Кратко алгоритм
В цикле крутишь:
if VirtualQueryEx(GetCurrentProcess, CurAddr, B, SizeOf(B)) <> SizeOf(B) then Break;
Для первого вызоваCurAddr := nil;
Для каждого последующего вызоваInc(PAnsiChar(CurAddr), B.RegionSize);
-=SS=- (2004-10-19 11:11:00) [5]А .. блин на Имя не посмотрел. Извени
Игорь Шевченко (2004-10-19 11:03:00) [6]
> И ты сразу бы сказал что ты выложил её на
?????
-=SS=- (2004-10-19 10:56:00) [7]Спасибо за ссылочку. Буду разбиратся
PS: И ты сразу бы сказал что ты выложил её на http://anatolix.naumen.ru/win32books.htm
Игорь Шевченко (2004-10-19 10:38:00) [8]-=SS=- © (19.10.04 10:24) [11]
Найди книгу Джеффри Рихтера "Создание эффективных Win32-приложений", у него есть пример работы с этой функцией (с картинками).
-=SS=- (2004-10-19 10:24:00) [9]Почему ???????????????????
Я просто спрашиваю совета !!!
Вроде всё правильно но значеня возврашает одни и теже не зависимо от екжешника
VMcL (2004-10-19 10:15:00) [10]>> -=SS=- © (18.10.04 18:09) [9]
> Что я не так делаю ?
Не уважаешь своих собеседников.
-=SS=- (2004-10-18 18:09:00) [11]Var
B:_MEMORY_BASIC_INFORMATION;
begin
VirtualQueryEx(GetCurrentProcess,Ptr($400000),B,Sizeof(B))
Что я не так делаю ?
Игорь Шевченко (2004-10-18 17:59:00) [12]-=SS=- © (18.10.04 17:51) [7]
> не знаю. Как получить размер екжешника в памяти ?
Для запакованного - мучайся сам или смотри, как это делают распаковщики. Или читай про VirtualQueryEx
-=SS=- (2004-10-18 17:51:00) [13]А если Екжешник запакованый ?
> знаешь размер
не знаю. Как получить размер екжешника в памяти ?
Игорь Шевченко (2004-10-18 17:25:00) [14]-=SS=- © (18.10.04 17:23) [5]
Знаешь базовый адрес, знаешь размер - трудно подсчитать конечный адрес ? Можешь брать размер EXEшника, вряд ли сильно ошибешься, раз уж с VirtualQuery(Ex) не дружишь.
-=SS=- (2004-10-18 17:23:00) [15]> Кто "он" ? Образ приложения, образ DLL'ей, загруженных этим
> приложением ?
Екжешник.
Надо коечто найти и прочитать в памяти этого екжешника
Игорь Шевченко (2004-10-18 17:09:00) [16]
> Базовый адресс понятен и для всё виндовых приложений он
> одинаковый
Не для всех
> а вот где он заканчивается ?
Кто "он" ? Образ приложения, образ DLL'ей, загруженных этим приложением ?
-=SS=- (2004-10-18 17:01:00) [17]Удалено модератором
Примечание: Дубль
-=SS=- (2004-10-18 17:01:00) [18]Спасибо за ответ VMcL © (18.10.04 16:46) [1] Но у меня почему - то не работает
VMcL (2004-10-18 16:46:00) [19]VirtualQueryEx()