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

Вниз

Писать в запрещенные адреса памяти.   Найти похожие ветки 

 
McSimm   (2001-11-13 12:55) [0]

Желательно получить возможность писать в адресное пространство чужого кода. Это не в целях вредительства, а наоборот. (может кто-то помнит тему "соревнования программ"?)
Суть проблемы: пытаюсь подставить свой обработчик функции API вместо стандартного. Вот пробный код записи:

procedure TForm1.Button1Click(Sender: TObject);
var P1, P2: PByteArray;
B: Byte;
begin
P1 := @MessageBoxA;// адрес шлюза (jmp [ProcAdr])
if P1 <> nil then
begin
asm
mov eax, P1
add eax, 2 // смещаемся на 2 байта (код jmp)
mov eax, [eax] // получаем адрес адреса
mov eax, [eax] // получаем адрес User32.MessageBoxA
mov P2, eax
end;
if P2 <> nil then
begin
B := P2[0]; // читаем первый байт кода User32.MessageBoxA
P2[0] := B // Пытаемся писать.
end
end
end;

Как и ожидалось, запись не прошла. Однако говорят что такое возможно. Что уважаемые мастера могут сказать по этому вопросу?

Спасибо



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

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

Наверх





Память: 0.44 MB
Время: 0.005 c
3-42381
EsKor
2001-12-11 07:38
2002.01.14
Delphi и Visual FoxPro


7-42577
Максим
2001-10-01 10:44
2002.01.14
Железо и софт


3-42351
psv
2001-12-07 15:27
2002.01.14
Как отделить копейки в Grid


6-42538
Evgeniy_S
2001-10-16 17:53
2002.01.14
Indy


1-42405
Andrey196
2001-12-26 18:48
2002.01.14
Как в строку добавить значок





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