Конференция "FreePascal" » Сохранение процедур [Dos]
 
  • maxistent © (24.01.06 14:47) [0]
    Приветствую, программеры :-)
    Честно говоря вопрос не совсем по Дельфи (желательно бы на ТМТ-паскаль написать)...
    Задача: есть какая-то процедура:

    Procedure proc1;
    var
    x:byte
    begin
    x:=random(255);
    writeln(x);
    end;



    и есть указатель (поиньтер тоись) на неё: P:=@Proc1;

    Как эту процедуру (ВСЮ!) из памяти сохранить на диск?
    А потом загрузить её из файла и использовать?

    Надеюсь, вопрос понятен... Буду ждать ответов...
    С уважением, maxistent.
  • cyborg © (24.01.06 14:56) [1]
    На всякий случай хотелось бы сказать о том, что в новых процессорах имеется защита, против выполнения кода в области данных, так что, уже никак ;).
    А-то наткнулся я уже на несколько известных программ, которые мне систему накрывали, всовывали в загрузку при старте системы и успешно вылетали. Один раз пришлось в Линуксе загружаться и удалять папку с установленной программой.
  • Иван Шихалев © (25.01.06 10:58) [2]
    Теоретически изменить тип области памяти (код или данные) можно (имея достаточно привилегий). Но! процедура в примере вызывает две подпрограммы модуля System... При следующей загрузке их актуальные адреса могут быть и другими, не говоря уж о том, что они почти наверняка будут другими в другой программе...

    Не знаю, какой DOS-расширитель использует TMT, но некоторые расширители поддерживают работу с DLL. В частности — WDOSX, вполне «прикручиваемый» к FPC.

    ------------
    http://freepascal.ru/
  • PVOzerski © (25.01.06 11:34) [3]
    Иван, а ты пробовал WDOSX с последними бетами FPC? У меня сложилось впечатление, что список WINAPI-функций в системном модуле (даже при смартлинке) в связи с поддержкой многопоточности превысил возможности WDOSX. Кстати, а не упихивает ли этот экстендер dll-ки внутрь итогового экзешника? - у меня сложилось такое впечатление.
  • Иван Шихалев © (25.01.06 13:07) [4]

    > Иван, а ты пробовал WDOSX с последними бетами FPC?


    Я его вообще давно не трогал.


    > Кстати, а не упихивает ли этот экстендер dll-ки внутрь итогового
    > экзешника?


    Экстендер или компилятор? Вообще, сильно сомнительно. А вот что FPC творит со статическими ссылками — не знаю, возможно в случае WDOSX он их не смартит просто?
  • Иван Шихалев © (25.01.06 13:10) [5]

    > > Иван, а ты пробовал WDOSX с последними бетами FPC?
    > Я его вообще давно не трогал.

    И вспомнил только вот поэтому: http://freepascal.ru/forum/index.php?showtopic=555
  • maxistent © (30.01.06 11:22) [6]
    Вы уж извиняйте, но FPC мне никак низя... Надо на ТМТ.

    Короче говоря, кто может подсказать, как создать "вручную" свои ДЛЛ и потом использовать их?
  • Иван Шихалев © (30.01.06 13:50) [7]
    Обязательно "вручную"? Написание DLL на TMT: http://pascal.sources.ru/tmt/help/writing_dlls.htm
  • maxistent © (03.02.06 13:52) [8]

    > Иван Шихалев ©   (30.01.06 13:50) [7]


    Кхе... Там написано "Targets: OS/2, Win32" !!! А я могу использовать ТОЛЬКО DOS. Как быть в этом случае? :-(
  • Иван Шихалев © (03.02.06 17:44) [9]
 
Конференция "FreePascal" » Сохранение процедур [Dos]
Есть новые Нет новых   [119106   +100][b:0][p:0.001]