[RostovOnDon.pm] Perl Dev Kit и Win 2000
Владислав Жук
Vladislav.Zhuk на rt.ru
Пт Окт 24 03:17:43 PDT 2008
Здравствуйте, Rostov-on-Don Perl Mongers!
Вы писали 24 октября 2008 г., 12:11:45:
> On 10/24/08, Анатолий Шарифулин <sharifulin на gmail.com> wrote:
>> Обфускация тебе поможет защитить исходник.
> А еще, наверное, поможет предварительная компиляция в байт-код.
> Да и по размеру сожмет.
никогда не пользовался. А подробнее можно про байт-код?
> Владислав, мне кажется, что ваш способ создания exe-шника
> не защитит код скриптов. AFAIK, там просто создается
> self-extracted архив с интерпретатором, необходимыми модулями
> и вашими скриптами.
при исполнении EXe на диск перловые скрипты не распаковываются (в TMP
появляются файлы типа:
0e90f31badbec48de250a4c1317debc5.dll
11c8c340dd5e1990553c1ad5b889e8f1.dll
которые, согласно доке, представляют из себя кеш чего-то из EXE для
ускорения повторного запуска бинарника.
>> На самом деле, не вижу в этом геморроя, данное решение будет работать везде,
>> где будет работать дистрибутив Perl'а.
> ...и как свой вариант предлагаю вам сделать подобный архив
> самому. То есть, не делать свой дистрибутив, а взять лишь
> необходимое для работы скриптов: perl.exe, perl5.8.8.dll
> (или как там ее...), всякие lib/strict.pm и так далее.
> Запустили, оно тихонько распаковало в %TEMP% и запустило
> автоматом perl bin/myapp.pl. После завершения почистило за собой.
>> Сегодня обнаружил проблему - exe'шники, сделанные с помощью PDK могут
>> не работать под Win 2000 (под XP работают на ура).
> Как проявляется неработа? Падения, неверная ф-ть скриптов,
> просто сообщение о какой-то ошибке..?
при старте программы появляется виндузное окно, что приложение
содержит ошибку и не может быть исполнено. Сообщение об ошибке
занесено в журнал виндузы.
В общем, проблема решена. Оказалось, что Win2k не умеет корректно
грузить dll непосредственно из памяти (хотя некоторые бинарники,
собранные старым компилятором работают...). В общем, отрубил я этот
режим "Use the in-memory dynamic DLL-loader at runtime" (теперь dll-ки
из EXE'шника не грузятся сразу в память, а предварительно сохраняются
на винт, а виндуза грузит их с винта...
На глаз падения быстродействия не заметно. Да и сами dll-ки, в
основном, маленькие:
28 772 Util.dll
41 064 Win32.dll
24 673 Fcntl.dll
90 222 OLE.dll
24 676 MD5.dll
и т.п.
--
С уважением, Владислав
Подробная информация о списке рассылки RostovOnDon-pm