Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: CL | DM;

Вниз

Доступ к памяти процесса   Найти похожие ветки 

 
DeadMeat   (2003-05-11 21:55) [0]

Может быть я всех достану этим вопросом (в смысле может его ещё кто задавал...), но мне надо узнать (а точнее узнать у вас), как получить доступ типа Read/Write к области памяти, занимаемой моим процессом... Заранее спасибо...


 
NightAngel   (2003-05-12 00:45) [1]

Если я правильно понял вопрос - VirtualProtect().


 
Morfein   (2003-05-12 01:57) [2]

Существует такой команда процессора MOV...:

MOV регистр, память
MOV память, регистр
MOV регистр, регистр

Пример:
var
x : dword;
begin
asm
mov eax, dword ptr [$00400000]
mov x, eax
end;


А есть ещё оператор ":=" (присваивание)
Пример:
var
x : dword;
p : pointer;
begin
p:=$00400000;
x:=dword(p^);
end;


 
NightAngel   (2003-05-12 02:30) [3]

> Morfein © (12.05.03 01:57)
Всё верно, вот только когда Вы выполните MOV память,регистр, и эта память будет в странице с атрибутом запрещающим Write, вот тут-то Вы и получите по рукам.


 
Morfein   (2003-05-12 02:40) [4]

Надо ещё постараться, чтобы найти в памяти своей же программы область с аттрибутом PAGE_READONLY (про область выше 0x7fffffff я не говорю - если человек хочет переписать память сист. билиотек, то в Win32 ему VirtualProtectEx не поможет)


 
NightAngel   (2003-05-12 03:10) [5]

>Надо ещё постараться, чтобы найти в памяти своей же программы область с аттрибутом PAGE_READONLY
И стараться не надо. Страницы с исполняемым кодом Вашего процесса. Насчёт системных библиотек, то это только в Win9x, т.к. только в этих системах память, начиная с 2Gb, спроецирована на все контексты, присутствующие в системе и недоступна для модификации.


 
DeadMeat   (2003-05-12 14:11) [6]

Вообще, мне надо изменить данные в области именно исполняемого кода, а не системных библиотек. Причём не вовремя работы этой области, а до этого момента... Про VirtualProtect я почитал, и честно говоря, меня в тупик поставило лишь одно: как узнать адрес, с которого начинается исполняемый код, и размер этой области...


 
VMcL   (2003-05-12 14:43) [7]

IMHO, image base, указанный на закладке Linker в свойствах проекта (хранится в PE заголовке), но по-моему он может изменяться системой (с соответствующим изменением всех JMP, CALL и т. п.).


 
NightAngel   (2003-05-13 02:38) [8]

> DeadMeat © (12.05.03 14:11)

VirtualProtect(GetModuleHandle(0),Размер файла,...)


 
AlexRush   (2003-05-13 11:05) [9]

В заголовке PE модуля находится таблица секций - массив структур
IMAGE_SECTION_HEADER. В поле Characteristics нужной структуры устанавливаем бит 31:

var ish:IMAGE_SECTION_HEADER;
ish.Characteristics
:= ish.Characteristics OR IMAGE_SCN_MEM_WRITE;
Любая секция становится доступной для записи. Сам делал - работает.


 
DeadMeat   (2003-05-13 17:58) [10]

Большое спасибо всем кто откликнулся...

> AlexRush
Не знаю почему, но этот метод у меня срабатывает только тогда, когда я прогу запускаю из Delphi, а в отдельном *.EXE-шнике срабатывает только метод NightAngel, но с небольшими переработками...

Ещё раз спасибо...



Страницы: 1 вся ветка

Текущий архив: 2003.07.14;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.008 c
1-44684
oleg_SYS
2003-06-28 21:46
2003.07.14
Как БЫСТРО проверить, чист ли Canvas?


14-44848
Barlok
2003-06-25 23:39
2003.07.14
Углы треугольника?


14-44823
Мазут Береговой
2003-06-25 22:23
2003.07.14
Странные ощущения у меня возникли после прочтения ссылки


3-44605
Eugene_e
2003-06-20 14:43
2003.07.14
Обновление TClientDataSet


1-44651
Darrin
2003-07-02 11:41
2003.07.14
Зависание MDI приложения.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский