Текущий архив: 2010.01.24;
Скачать: CL | DM;
Вниз
Мастера подскажите где скачать простой и хороший пакер для exe Найти похожие ветки
← →
RWolf © (2009-11-17 11:43) [40]
> Типа того, что программа при распаковке должна полностью
> грузиться в память.
разве нет?
> Даже проверить скорость запуска и занимаемую память у конкретной
> программы спорящие сами не берутся,
скорость запуска будет зависеть от размера программы, производительности дисковой подсистемы, навороченности алгоритма сжатия. При каких-то сочетаниях может быть и выше несжатого варианта, конечно.
Память запакованная программа будет напрягать больше всегда. Нельзя распаковать исполняемый файл частично.
← →
palva © (2009-11-17 12:13) [41]
> Нельзя распаковать исполняемый файл частично.
Я не берусь с этим спорить. Не знаю просто. Могу только привести результат эксперимента.
Вот сейчас я пишу на делфи плюс ADO небольшую программу без всяких конструкторских наворотов. Ее и попробую паковать:
условие - размер - память
до UPX 870912 8806400
после UPX 323072 9011200
Кстати, UPX мне пришлось скачивать, потому что сам я никогда не пакую и упаковщиков на компьютере нет.
← →
Игорь Шевченко © (2009-11-17 12:18) [42]http://www.symantec.com/security_response/writeup.jsp?docid=2003-051915-1012-99
"This threat is written in Borland Delphi and is compressed with UPX. The unpacked size is approximately 808 KB"
писатели от слова худо
← →
Smile (2009-11-17 12:36) [43]Очень давно ничего не пакую, но всегда предпочтение отдавал Nspack
alc777.com/files/packers/nspack37.rar
← →
ZeroDivide © (2009-11-17 12:57) [44]Это было когда-то важно, для интернета... при низких скоростях скачивалось долго, теперь смысла паковать вообще нет, разве что для защиты.
← →
AlexDan © (2009-11-17 14:24) [45]> Smile (17.11.09 12:36) [43]
> Очень давно ничего не пакую, но всегда предпочтение отдавал
> Nspack
> alc777.com/files/packers/nspack37.rar
насколько я понял он и шифрует ехе..? странно что никто не говорит про EXECryptor, правда он платный.
← →
Кто б сомневался © (2009-11-17 14:33) [46]
> Очень давно ничего не пакую, но всегда предпочтение отдавал
> Nspack
NsPack лучший пакер по сжатию, но с ним не дружат многие антивирусы. UPX надо - с ним дружат все.
> В слове "чуть" все же есть сомнения. Распаковка, очевидно,
> происходит в памяти, а это значит, что в памяти должны
> находиться и нераспакованный, и распакованный блок. Если
> принять, что паковка бинарника уменьшает его размер в 1,
> 5 раза (что примерно так и есть), то перерасход памяти составит
> около 70%. Это далеко не "чуть".
Запакованный блок потом будет освобожден.
> Мгновенной распаковки, как Вы понимаете, не бывает.
>
>
Даже на слабых компах это занимает меньше полусекунды.
> Но для
> > программ, которые интенсивно "молотят" (вычислительные,
> > например), время распаковки запросто может оказаться смертельно
> > большим. "Смертельно" в том смысле, что программа затормозится
> > настолько, что окажется уже практически бесполезной и
> поэтому
> > никому не нужной.
Товарищ причем здесь время распаковки перед стартом программы, и вычислительный характеристики проги? Вы что то перепутали.
> На диске. Всего лишь на диске, и только лишь на диске. И
> если, как Вы говорите, памяти сейчас у всех достаточно,
> то уж дискового пространства сейчас у всех достаточно тем
> более.
Это отличный мотиватор для юзера. Поверьте мне, он смотрит на размер, и если программа многофункциональна но с малым размером - это вероятней что он купит ее, чем та что с большим размером. Таким образом юзер определяет профессионализм разработчиков.
> Но, как мы уже выяснили, запакованная программа требует
> больше памяти - значит, у нее меньше шансов оказаться полностью
> закешированной и тогда она уступит в скорости.
В том то и дело что не больше размера образа exe. Так что ничего мы не выяснили.
← →
DVM © (2009-11-17 14:40) [47]
> Кто б сомневался © (17.11.09 14:33) [46]
> Это отличный мотиватор для юзера. Поверьте мне, он смотрит
> на размер, и если программа многофункциональна но с малым
> размером - это вероятней что он купит ее, чем та что с большим
> размером. Таким образом юзер определяет профессионализм
> разработчиков.
Со всем согласен кроме этого. Ну не факт! Вот тут http://delphimaster.info/3-1252166005.htm уже об этом говорили.
← →
Игорь Шевченко © (2009-11-17 14:59) [48]Кто б сомневался © (17.11.09 14:33) [46]
Про профессионализм - вообще мимо кассы. Профессионализм определяется не по размеру.
Пакуют преимущественно вирусы/трояны или программы, в которых по мнению автора содержатся обалденные торговые секреты. Все остальное - только дополнительные тормоза и засорение swap-файла.
← →
Омлет © (2009-11-17 15:28) [49]> Все остальное - только дополнительные тормоза
Тормоза - они в голове. Я уже писал, что скорость запуска запакованной программы даже выше, чем незапакованной.
Это не абсолютное правило, но в моёмм случае это так.
← →
Игорь Шевченко © (2009-11-17 15:31) [50]Омлет © (17.11.09 15:28) [49]
> Тормоза - они в голове
Тормоза - они в системе.
> скорость запуска запакованной программы даже выше, чем незапакованной
что такое "скорость запуска программы" ?
← →
Омлет © (2009-11-17 15:35) [51]> что такое "скорость запуска программы" ?
Описался. Не скорость, а время.
← →
Leonid Troyanovsky © (2009-11-17 15:43) [52]
> Омлет © (17.11.09 15:35) [51]
> Описался. Не скорость, а время.
Подскользнулся, упал на вилку.
И так 11 раз подряд.
--
Regards, LVT.
← →
Игорь Шевченко © (2009-11-17 16:05) [53]
> Не скорость, а время.
Что такое "время запуска программы" ?
Я к чему спрашиваю - я же тоже могу запаковать и посмотреть, например, включить компьютер, запустить незапакованную программу, выключить компьютер, включить, запустить запакованную.
Как определить, что является окончанием запуска ?
← →
Anatoly Podgoretsky © (2009-11-17 16:08) [54]> Leonid Troyanovsky (17.11.2009 15:43:52) [52]
На пострадавшем было обнаружено 44 дырки.
← →
Кто б сомневался © (2009-11-17 16:10) [55]
> Игорь Шевченко © (17.11.09 16:05) [53]
Любит Шевченко потроллить.
Время запуска - допустим это время от начала запуска проги, до отображения главной формы.
← →
Кто б сомневался © (2009-11-17 16:10) [56]Устроит? Тогда вперед на тесты.
← →
Leonid Troyanovsky © (2009-11-17 16:13) [57]
> Anatoly Podgoretsky © (17.11.09 16:08) [54]
Кста, у Мих.Веллера, в "Легендах Арбата" много подобных
саг про милиционеров.
--
Regards, LVT.
← →
Омлет © (2009-11-17 16:13) [58]> [53] Игорь Шевченко © (17.11.09 16:05)
> Что такое "время запуска программы" ?
Издеваетесь? Это время, прошедшее от двойного щелчка по пиктограмме до того, как можно начать работать с приложением (появление главной формы).
← →
Leonid Troyanovsky © (2009-11-17 16:16) [59]
> Кто б сомневался © (17.11.09 16:10) [55]
> до отображения главной формы.
Отображение - субъективно.
Нужна запись в EventLog.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2009-11-17 16:20) [60]
> Омлет © (17.11.09 16:13) [58]
> Издеваетесь? Это время, прошедшее от двойного щелчка по
> пиктограмме до того, как можно начать работать с приложением
> (появление главной формы).
Никаких щелчков!
CreateProcess & WaitForInputIdle.
--
Regards, LVT.
← →
Омлет © (2009-11-17 16:20) [61]> [59] Leonid Troyanovsky © (17.11.09 16:16)
> Отображение - субъективно.
Так и нужна только субъективная оценка.
Если невооруженным мозгом видна разница во времени, то этого достаточно для выводов.
← →
Игорь Шевченко © (2009-11-17 16:25) [62]
> Если невооруженным мозгом видна разница во времени, то этого
> достаточно для выводов.
то вооруженным оно тем более будет видно, не так ли ?
поэтому createprocess + waitforinputidle
← →
Кто б сомневался © (2009-11-17 16:27) [63]
> Отображение - субъективно.
> Нужна запись в EventLog.
Субъективно понятно. Но если время будет больше секунды, это будет заметно. Если разница не заметна значит время оч. небольшое. Сделать программно проверку очень просто, выслать сообщение в OnCreate формы -проге, которая запускала ее.
← →
Игорь Шевченко © (2009-11-17 16:39) [64]Собственно, тест:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses
ShellApi;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
StartTime, EndTime: Cardinal;
sex: SHELLEXECUTEINFO;
begin
StartTime := GetTickCount;
FillChar(sex, sizeof(sex), 0);
sex.cbSize := sizeof(sex);
sex.fMask := SEE_MASK_NOCLOSEPROCESS;
sex.Wnd := HWND_DESKTOP;
sex.lpVerb := "open";
sex.lpFile := PChar(ExpandFileName(ParamStr(1)));
ShellExecuteEx(@sex);
WaitForInputIdle(sex.hProcess, INFINITE);
EndTime := GetTickCount;
ShowMessageFmt("%d ticks to run %s", [EndTime - StartTime, ParamStr(1)]);
end;
end.
размер незапакованной программы: 1,261,056 байт. Время запуска 78 тиков
размер запакованной программы: 428,544 байта. Время запуска 157 тиков
это время ВТОРОГО запуска, если что :)
← →
Кто б сомневался © (2009-11-17 16:46) [65]Ну вот, 160 мс. чтд. Разве это много?
> это время ВТОРОГО запуска, если что :)
Всмысле? Второй раз запустили запакованную прогу?
← →
@!!ex © (2009-11-17 16:51) [66]> [65] Кто б сомневался © (17.11.09 16:46)
В смысле винда много чего кэширует и индексирует, поэтому первый запуск может сильно тормозить.
Думаю это имелось ввиду.
и я об этом писал выше. Опмлет правда мой пост благополучно проигнорировал.
← →
Игорь Шевченко © (2009-11-17 16:54) [67]Кто б сомневался © (17.11.09 16:46) [65]
Каждую запускал по два раза - приведенное время - время второго запуска
Паковал upx версии 2.03w с ключом -7
← →
Alx2 © (2009-11-17 17:01) [68]
>
> Каждую запускал по два раза - приведенное время - время
> второго запуска
А поочередно или подряд? :)
← →
Anatoly Podgoretsky © (2009-11-17 17:02) [69]> @!!ex (17.11.2009 16:51:06) [66]
А нафига для измерения времени распаковки, мерять время считывания с диска.
Или задача определить скорость диска?
← →
Игорь Шевченко © (2009-11-17 17:05) [70]Alx2 © (17.11.09 17:01) [68]
> А поочередно или подряд? :)
без разницы :)
← →
Омлет © (2009-11-17 17:06) [71]> [67] Игорь Шевченко © (17.11.09 16:54)
Второй запуск не интересен, т.к. всё уже в кэше.
Я проверил. Перезагрузился, замерил без сжатия. Перезагрузился, замерил со сжатием.
Без сжатия (1,67 МБ) - 2562 тиков.
Со сжатием (489 КБ) - 1843 тиков. Упаковщик PECompact v2.98.1, консольная упаковка (параметры по умолчанию).
Разница в 0,7 сек, что и требовалось доказать.
Если смотреть по второму и последующему запуску, то вариант со сжатием отстает на 40-50 тиков, т.к. данные достаются из свопа (который в памяти), а не с диска. Т.е. никаких, так называемых, тормозов не наблюдается.
← →
@!!ex © (2009-11-17 17:18) [72]
> [71] Омлет © (17.11.09 17:06)
Первый запуск это еще и подгрузка dllек.
первым грузишь без сжатия, он тормозит, потому что дофига dllек грузит.
после этого естественно сжатый быстро загрузится, потому что как раз все уже в кэше.
← →
Омлет © (2009-11-17 17:23) [73]> [72] @!!ex © (17.11.09 17:18)
Я перезагружался между тестами, dll тут не причем.
← →
Омлет © (2009-11-17 17:25) [74]> [72] @!!ex © (17.11.09 17:18)
Если запускать сжатый после несжатого без перезагрузки, то сжатый грузится аж на 2 секунды быстрее, а не на 0,7.
← →
Игорь Шевченко © (2009-11-17 17:27) [75]Омлет © (17.11.09 17:06) [71]
Я тоже проверил с перезагрузками. Сжатый загружается дольше.
← →
Кто б сомневался © (2009-11-17 17:28) [76]
> Омлет © (17.11.09 17:06) [71]
Это надо делать на пустом проекте. Там юзаются только системные длл. Они уже в памяти давно.
← →
Игорь Шевченко © (2009-11-17 17:30) [77]Мой проект не использует никаких DLL кроме системных (kernel,user,gdi,advapi,ole), практически все, что используется в любом дельфийском проекте с формами.
← →
Омлет © (2009-11-17 17:31) [78]> [75] Игорь Шевченко © (17.11.09 17:27)
Поэтому я и посоветовал PECompact2 в [25] :)
← →
Игорь Шевченко © (2009-11-17 17:35) [79]Омлет © (17.11.09 17:31) [78]
Это не зависит от упаковщика. Это зависит от программы в первую очередь.
← →
Омлет © (2009-11-17 17:37) [80]> [79] Игорь Шевченко © (17.11.09 17:35)
Как это зависит от программы?
Страницы: 1 2 3 вся ветка
Текущий архив: 2010.01.24;
Скачать: CL | DM;
Память: 0.64 MB
Время: 0.012 c