-
Приветствую, программеры :-) Честно говоря вопрос не совсем по Дельфи (желательно бы на ТМТ-паскаль написать)... Задача: есть какая-то процедура: Procedure proc1;
var
x:byte
begin
x:=random(255);
writeln(x);
end; и есть указатель (поиньтер тоись) на неё: P:=@Proc1; Как эту процедуру (ВСЮ!) из памяти сохранить на диск? А потом загрузить её из файла и использовать? Надеюсь, вопрос понятен... Буду ждать ответов... С уважением, maxistent.
-
На всякий случай хотелось бы сказать о том, что в новых процессорах имеется защита, против выполнения кода в области данных, так что, уже никак ;). А-то наткнулся я уже на несколько известных программ, которые мне систему накрывали, всовывали в загрузку при старте системы и успешно вылетали. Один раз пришлось в Линуксе загружаться и удалять папку с установленной программой.
-
Теоретически изменить тип области памяти (код или данные) можно (имея достаточно привилегий). Но! процедура в примере вызывает две подпрограммы модуля System... При следующей загрузке их актуальные адреса могут быть и другими, не говоря уж о том, что они почти наверняка будут другими в другой программе... Не знаю, какой DOS-расширитель использует TMT, но некоторые расширители поддерживают работу с DLL. В частности — WDOSX, вполне «прикручиваемый» к FPC. ------------ http://freepascal.ru/
-
Иван, а ты пробовал WDOSX с последними бетами FPC? У меня сложилось впечатление, что список WINAPI-функций в системном модуле (даже при смартлинке) в связи с поддержкой многопоточности превысил возможности WDOSX. Кстати, а не упихивает ли этот экстендер dll-ки внутрь итогового экзешника? - у меня сложилось такое впечатление.
-
> Иван, а ты пробовал WDOSX с последними бетами FPC?
Я его вообще давно не трогал.
> Кстати, а не упихивает ли этот экстендер dll-ки внутрь итогового > экзешника?
Экстендер или компилятор? Вообще, сильно сомнительно. А вот что FPC творит со статическими ссылками — не знаю, возможно в случае WDOSX он их не смартит просто?
-
-
Вы уж извиняйте, но FPC мне никак низя... Надо на ТМТ.
Короче говоря, кто может подсказать, как создать "вручную" свои ДЛЛ и потом использовать их?
-
-
> Иван Шихалев © (30.01.06 13:50) [7]
Кхе... Там написано "Targets: OS/2, Win32" !!! А я могу использовать ТОЛЬКО DOS. Как быть в этом случае? :-(
-
|