Здравствуйте, 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`а.