![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
вы итак можете обратится к этому адресу, вы же внутри себя.
вам надо сканировать память процесса вашего, в поисках нужных данных. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#22 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,799
|
![]()
Например, у меня в приложении, собранном в Delphi 6, PAnsiChar($00400050) возвращает 'This program must be run under Win32'#13#10'$' -- известную строчку из DOS-заглушки.
В современных версиях Windows вместо жестко прописанного $00400000 придется узнавать свою текущую Image Base, если включена рандомизация памяти процесса и exe-шник имеет перемещаемые символы. |
![]() |
![]() |
![]() |
#23 | |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
![]() Цитата:
if (PAnsiChar($00400050)='a'), потом if (PAnsiChar($00400051)='a'), так? А границы памяти узнаются с помощью GetSystemInfo? |
|
![]() |
![]() |
![]() |
#24 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#25 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
![]()
Спасибо за терпение и разъяснения, подскажи пожалуйста ещё, где подробнее можно почитать про поиск границ через заголовки?
|
![]() |
![]() |
![]() |
#26 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
![]()
В поиске не могу ничего найти про границ памяти exe
|
![]() |
![]() |
![]() |
#27 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
![]()
Память процесса начинается с адреса 0х00000000 и до 0хFFFFFFFF.
Вызывайте VirtualQuery с адреса 0, потом берите размер блока и вычисляйте начало следующего блока. Внимательно прочитайте содержание структуры MEMORY_BASIC_INFORMATION - это важно! Там все параметры блока памяти. |
![]() |
![]() |
![]() |
#28 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
![]()
У меня возникает ошибка
Read of address 00414000. Делаю вот такую проверку Код:
Код:
|
![]() |
![]() |
![]() |
#29 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
![]()
Странная проверка... если lpBuffer.Protect равен PAGE_READWRITE тогда он никак не может быть PAGE_NOACCESS, причем дважды. Да еще и скобки както странно выглядять...
Проверяйте лучше: protect = PAGE_READWRITE or protect = PAGE_READONLY or protect + PAGE_READ... т.е. проверяйте явно на права чтения. |
![]() |
![]() |
![]() |
#30 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
![]()
Странно, сделал проверку
Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi XE2 работа с памятью процесса | YCA4 | Win Api | 2 | 18.02.2012 19:26 |
Работа с памятью | mufesto | Win Api | 1 | 30.01.2012 15:13 |
Смертоубийство своего процесса | Johnson | Win Api | 7 | 23.08.2011 19:29 |
Работа с памятью процесса | JRcoker | Win Api | 10 | 18.07.2009 22:22 |
Работа с памятью запущенного процесса | DeniCPP | Общие вопросы C/C++ | 2 | 09.04.2009 12:38 |