Пакувальник pe-файлів (exe, dll)
Днями завершив великий комерційний проект, тільки збирався витратити виручені кошти на покупку чергового ноутбука Alienware і поїздку на Гаваї, як до мене в гості зайшов Каямі (з нехарактерно розширеними зіницями) і сказав, щоб я що-небудь написав у свій блог, мовляв не солідно як-то нічого не запостити перед Новим Роком. Сам-то він нібито зайнятий, але я підозрюю, що він насправді займається. Загалом, його прохання я виконав. Каямі, судячи з усього, залишився задоволений і в відповідь на посилання на пост скинув мені в аську скріншот стати якоюсь-то партнерки. Так що він теж їде на Гаваї! Тому в найближчі пару тижнів нових постів можна, мабуть, не чекати.
Можливості пакувальника:
[+] Підтримка exe, dll-файлів. Драйвера (sys-файли) не пакувати.
[+] Дерьмовое ступінь стиснення, так як використовуються RtlCompressBuffer / RtlDecompressBuffer - чисто заради прикладу. Крім того, упаковується кожна секція окремо, що не зліплюються разом, як це робить UPX, це теж впливає на ступінь стиснення.
[+] Підтримка експортом (по ордіналов, по імені, а також форвардів в інші dll).
[+] Само собою, підтримка імпорту (по ордіналов і по імені).
[+] Підтримка і вміння упаковувати секцію ресурсів (з неї переміщаються іконки, інформація про версії і маніфест, так що упакований файл зовні нічим не відрізняється від оригіналу).
[+] Підтримка релокацій (фіксапов / переміщуються елементів / назвіть їх як хочете).
[+] Зміна вирівнювання файлу.
[+] Можливість упаковки тільки конкретних секцій
[+] Підтримка TLS (локальна пам'ять потоку) (крім TLS callbacks, які жоден компілятор не вміє робити, наскільки мені відомо).
[+] Видалення rich overlay'а від Visual C ++.
[+] Можливість упаковки PE-заголовка в DOS-заголовок.
[+] Підтримка бінарників Visual C ++, Borland C ++ / Delphi, MinGW, MASM32 (інше не перевірялося, але, швидше за все, теж запрацює).
Пакувальник підтримує тільки PE32.
Приклад використання:
pack.exe test_exe.exe
Додаткові опції командного рядка: