| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Exe - SFX или нет. (продолжение) |
| Автор: Elfebet 10.8.2006, 09:21 | ||
Snowy мне показал код как можно определить exe - это SFX или нет. Вот данная функция отлично работает, но если в архиве есть комментарии, то эта функция уже не работоспособна. Подскажите пожалуйста что мне тут нужно передлать, чтобы эта функция работала и в том случае если в архиве есть комментарии?
|
| Автор: dvamaster 10.8.2006, 09:24 |
| Посмотри HEX код sfx с комментарием отыщи в конце буквы PK, там с ориентируешься |
| Автор: Romikgy 10.8.2006, 09:30 |
| ищи сзаду файла , 3 подряд нуля, и левее его PS комментарии записываются в конец файла |
| Автор: Snowy 10.8.2006, 10:51 |
| Самый простой способ - просто увеличить 32 до, например, 1024. Но далеко не сомый грамотный. Здесь нужно подумать... |
| Автор: Snowy 10.8.2006, 14:33 | ||
Модифицировал функцию.
|
| Автор: Elfebet 10.8.2006, 15:22 | ||
интересно...., а я так попробывал, но сразу видна функция не надежная
самое интересное что длина коментариев в винзипе 64 000, а в винраре 30 000, и я поставил 65 000. Добавлено @ 15:24 хотя работает сто процентов..... |
| Автор: Snowy 10.8.2006, 15:55 |
| Код не зависит от длины комментариев. Если читать по 64 кило, то долго будет при обработке большого количества файлов. Да и ненадёжно - возможны ложные срабатывания. Мой новый код гораздо надёжнее. |
| Автор: imageman 11.8.2006, 22:40 |
| а что если попробовать разобрать заголовок exe файла? Там должна быть такая фишка, как длина exe файла. У SFX архива длина файла должна быть больше соответсвующего значения в заголовке. |
| Автор: Snowy 12.8.2006, 00:06 |
| В том-то и фикус, что в заголовке exe нет никакой информации. Он заранее знает, где находится заголовок архива. А мы не знаем, т.к. производителей sfx мягко говоря много. Вот и приходится искать по хвосту - так быстрее и надёжней. |