Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
14-44878
BALU1111
2003-06-27 13:49
2003.07.14
BIOS


3-44591
AkaSaint
2003-06-20 15:03
2003.07.14
Как запретить чтение записей в 3-звенке?


7-44931
Kooler
2003-05-04 01:43
2003.07.14
Именение уровня громкости через Делфи


14-44890
AlexRush
2003-06-19 18:32
2003.07.14
---|Ветка была без названия|---


1-44740
Луарвик
2003-07-01 13:38
2003.07.14
.dll =>





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский