Форум: "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