1 (изменено: Freeman, 05.12.2020 в 18:35)

Тема: PE Load

Да, кстати, насчёт PELoad.
Я планировал название переименовать в WinLoad.
И выложить текущую версию.
Программа написана на NASM(Netwide Assembler).
Так как форум называется "Programming for KolibriOS", а эта утилита как раз может быть полезной, то, думаю, что это будет в самый раз smile
Вообще можно было бы в дальнейшем при желании что-то переписать\дополнить на Delphi с использованием SDK.
Пока выложу текущую версию.

Утилита предназначена для запуска Windows-программ.
На данный момент не так много функций реализовано, но тестовые программки запускаются.
Раньше Turbo Assembler запускался но сейчас  там что-то поломалось в файловых функциях.
TLS(Thread Local Storage) не работает, можно считать, что просто заглушки.
Тема про TLS в Колибри
Ну и там не всё протестировано.
Возможно, было бы рациональнее в плане разработки перейти с ассемблера на что-то другое.
Вот тут находится форк этого проекта.

Для запуска исполняемого файла Windows нужно просто передать путь к нему параметром командной строки

misc.php?action=pun_attachment&item=45&download=0

Вообще самая первая версия была выложена во тут
Также существует ещё подобная программа для KolibriOS, там даже MessageBox был реализован

скриншот MessageBox-a

file.php?id=8150

Post's attachments

Иконка вложений PELoad.7z 23.7 Кб, 147 скачиваний с 2020-07-01 

2 (изменено: Freeman, 28.05.2023 в 04:12)

Re: PE Load

Что ты думаешь про kwine? Смотрел его исохдники/возможности?

3

Re: PE Load

Leency пишет:

Смотрел его исохдники/возможности?

Если сравнить исходник kernel32.dll, то там функций стало гораздо меньше, чем было раньше, во времена, когда Turbo Assembler можно было запускать в KolibriOS.

вот здесь написано

rgimad пишет:

Немного довел до ума

Но не очень понятно, в чём заключается доведение до ума, ведь функций стало меньше.

Leency пишет:

Что ты думаешь про kwine?

Идея переписать msvcrt.dll на С, возможно, правильная в плане скорости разработки.
Я тоже думал о том, чтобы перейти с ассемблера на что-то другое.
Может быть, с использованием SDK.

Добавлено 2020-12-21 в 03:46

Оказывается, некоторые консольные программы, компилирующиеся Delphi 2.0, уже могут быть запущены в KolibriOS через PELoad

Наверняка многие уже не помнят, как выглядит Delphi 2.0, а кто-то даже ещё и не родился в то время smile

На скриншоте ниже исходный код тестового приложения TEST1.EXE misc.php?action=pun_attachment&item=78&download=0

Запускаем в KolibriOS программу TEST1.EXE через PELoad с параметрами командной строки.
Программа после нажатия ENTER выведет в консоль все переданные ей параметры.misc.php?action=pun_attachment&item=79&download=0

Надо, конечно, понимать, что там много заглушек, в частности вот эти

Критические секции:

  • DeleteCriticalSection

  • LeaveCriticalSection

  • EnterCriticalSection

  • InitializeCriticalSection

Thread Local Storage:

  • TlsSetValue

  • TlsGetValue

Работа с исключениями:

  • RtlUnwind

  • RaiseException

но в однопоточном приложении, возможно, и так всё заработает
По поводу TLS, надо попробовать вот это из newlib на SVN:

также заголовок, вероятно, должен быть MENUET02, но документации по TLS в KolibriOS похоже никакой не наблюдается.

Если кому интересно, то прикладываю уже скомпилированный EXE-шник и исходник для Delphi 2.0.
Здесь товарищ ramiil-kun кое-что обещал smile 
Возможно, это он и  это его github

Post's attachments

Иконка вложений HelloFromDelphi(1).png 221.82 Кб, 64 скачиваний с 2020-12-21 

Иконка вложений TestDelphi2.7z 6.78 Кб, 106 скачиваний с 2020-12-21 

Иконка вложений TestInDelphi2.PNG 39.55 Кб, 69 скачиваний с 2020-12-21 

4

Re: PE Load

0CodErr
Неужели ты есть в ВК? smile

5

Re: PE Load

Leency
Это просто первая ссылка на VK в поисковой выдаче Яндекса по запросу ramiil-kun