Re[4]: Встроенный asm: запись данных в память по заданному а
От: _Michael_V_  
Дата: 06.11.05 12:34
Оценка:
Здравствуйте, iskatel, Вы писали:

А>>Это действительно так. Константы хранятся с сегменте кода, который защищён от записи.


I>ну если очень хочется, посмотри VirtualProtectEx


А вот за это действительно спасибо! И вообще, пора мне все-таки почитать этот самый Memory Management SDK.

Я тут продолжил свои эксперименты... Сделал функцию, которая получает указатель на другую функцию, ищет по этому адресу комманду возврата (RET, оно же С3) и выдает длину ее тела. Короче, вот:

function getproccodelen(proc:pointer):integer;
label l;
asm
xor edx,edx
l:
mov bl,byte ptr [eax]
inc eax
inc edx
cmp bl,$C3
jne l
mov @Result,edx
end;

...В связи с чем, у меня есть возможность сохранять тела функций и процедур в машинном коде в файл и загружать их оттуда. Не получается только передать управление на загруженный код. Похоже, как раз из-за этого protect`а.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.