Готова версия 1.0 для Windows, для Kolibri-версии немного подождите...
Основная модификация - добавлен алгоритм LZMA. Для справки: это основной алгоритм, используемый в архивах 7z.
Теперь пакует все лучше mxp*, в том числе free3d04 (для которого, кстати, нужен ключ /0) и docpak.
http://shade.msu.ru/~msu-se/mtappack.exe
http://shade.msu.ru/~msu-se/mtappack_src.rar
Упаковщик KPack
А как насчёт скорости распаковки? Ведь программы такого рода должны нен только хорошо запаковывать, но и быстро распаковывать.
aPLib и LZMA (как и все LZ-based алгоритмы) характеризуются очень быстрой распаковкой.
Скачайте заново со ссылок выше Windows-версию - там есть пара небольших изменений.
Kolibri-версия:
http://shade.msu.ru/~msu-se/mtappack
http://shade.msu.ru/~msu-se/mtappack_kolibri_src.rar
Kolibri-версия:
http://shade.msu.ru/~msu-se/mtappack
http://shade.msu.ru/~msu-se/mtappack_kolibri_src.rar
diamond
Обнаружил такое ограничение - FASM упакованный MTAPPACK отказывается компилировать. На доске отладке пишет, что не хватает памяти.
Обнаружил такое ограничение - FASM упакованный MTAPPACK отказывается компилировать. На доске отладке пишет, что не хватает памяти.
Вероятно, MTAPPACK выделяет распакованному FASM недостаточно памяти
А может дело в самом FASM'е?
mike.dld
При упаковке MXP такой проблемы нету, по этому это глюк не фасм, а упаковщика.
При упаковке MXP такой проблемы нету, по этому это глюк не фасм, а упаковщика.
Используйте ключ /0 Windows-версии, эквивалентный ключу -0 Kolibri-версии и флажку "force memory size increase".
Это увеличивает размер памяти, используемой приложением, но неинициализированные данные зануляются (без ключа в неинициализированных данных будет мусор). У других упаковщиков этого нет, поскольку они безусловно добавляют память.
Это увеличивает размер памяти, используемой приложением, но неинициализированные данные зануляются (без ключа в неинициализированных данных будет мусор). У других упаковщиков этого нет, поскольку они безусловно добавляют память.
diamond
А несложно в Колибри версию добавить управляющих элементов для выбора параметров в графическом виде?
А несложно в Колибри версию добавить управляющих элементов для выбора параметров в графическом виде?
Да, действительно, после упаковки с помощью MXP программа требует примерно на 200-400 байт больше
Вот stub для MXP-LZO... У NRV почти такой же.
Вот stub для MXP-LZO... У NRV почти такой же.
Code: Select all
; ===========================================================================
; Menuet eXecutable Packer 0.10
; ===========================================================================
; Coded by Ivan Poddubny
; Based on picoLZO for C-- by Kai-Hong Chen
;
; miniLZO -- mini subset of the LZO real-time data compression library
;
; Markus F.X.J. Oberhumer
; <markus@oberhumer.com>
; http://www.oberhumer.com/opensource/lzo/
;
; ===========================================================================
; ===[ IDEA ]================================================================
;
; 1) copy [decompression routine + compressed program]
; out of the original program memory area
; 2) decompress all the stuff RIGHT to the header (i.e. offset = 0x0)
; 3) set the new stack to [stack_ptr] from the restored header
; 4) free memory used by moved & compressed image, decompressor remains there
; 5) jump to [entry_point] from the decompressed header
;
; ===[ HEADER ]==============================================================
use32
org 0x0
include "MACROS.INC"
db 'MENUET01'
temp_value dd 1
entry_point dd START
file_size dd 0 ; stub + compr
memory_size dd 0 ; stub + compr + oldmem + 0x1000
stack_ptr dd 0 ; stub + compr + oldmem + 0x1000
param_area dd 0 ; this stub doesn't use parameters
tmp_area dd 0 ; oldmem
compr_size dd 0
; ===[ CODE ]================================================================
START:
xor eax, eax
mov ecx, decompr_size
mov [eax], ecx
add ecx, [eax + compr_size]
mov esi, decompressor
mov edi, [eax + tmp_area]
push edi
rep movsb
jmp dword [esp]
decompressor:
pop esi
add esi, [eax]
xor edi, edi
include "UNPACK.ASM"
xor eax, eax
mov esp, [eax + stack_ptr]
mov ecx, decompr_size
add ecx, [eax + memory_size]
inc eax ; eax equaled 0, now it contains 1
xchg eax, ebx ; ebx = 1
mov eax, 64 ; eax = 64 - resize memory
int 0x40
; 0x40 should return zero in eax
jmp [eax+entry_point]
decompr_size = $ - decompressor
compr_ptr:
Mario79
Каких параметров?
Иван Поддубный
Дополнительная память требуется не только для stub'а, но и для упакованных данных, а их обычно существенно больше, чем 200-400 байт
Каких параметров?
Иван Поддубный
Дополнительная память требуется не только для stub'а, но и для упакованных данных, а их обычно существенно больше, чем 200-400 байт
[offtop]
Кстати о глюках fasm'a: Kolibri-версия при компиляции формата PE не записывает в файл MZ-заглушку (обнаружено при тестировании эмулятора на исходниках эмулятора)
[/offtop]
Кстати о глюках fasm'a: Kolibri-версия при компиляции формата PE не записывает в файл MZ-заглушку (обнаружено при тестировании эмулятора на исходниках эмулятора)
[/offtop]
diamond
А как ты думаешь - ведь неудобно запускать каждый раз из консоли твой упаковщик с параметром. Может быть, стоит для Колибри сделать выбор и в графическом виде.
А как ты думаешь - ведь неудобно запускать каждый раз из консоли твой упаковщик с параметром. Может быть, стоит для Колибри сделать выбор и в графическом виде.
Mario79
Так уже давно есть соответствующий флажок "force memory size increasing, zero uninit data"...
Так уже давно есть соответствующий флажок "force memory size increasing, zero uninit data"...
Who is online
Users browsing this forum: No registered users and 25 guests