[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