Кіріспе

Орындалатын файлды сығыстыру тәсілдері

Орындалатын файлды сығыстыру – орындалатын файлды сығыстырудың және сығылған деректерді декомпрессиялау кодымен біріктірудің кез келген тәсілі. Сығылған орындалатын файл орындалғанда, декомпрессиялау коды сығылған кодтан бастапқы кодты қайта жасайды, содан кейін оны орындайды. Көп жағдайда бұл процесс қолданушыға көрінбейді, сондықтан сығылған орындалатын файлды түпнұсқасымен бірдей пайдалануға болады. Орындалатын файлдарды сығыстыру құралдары жиі орындалатын файлдарды пактеушілер, орындалу кезінде пактеушілер, бағдарламалық қамтамасты пактеушілер, бағдарламалық қамтамасты қорғаушылар, тіпті «полиморфты пактеушілер» және «құпиялау құралдары» деп аталады. Сығылған орындалатын файлды өзін-өзі ашуға болатын архив ретінде қарастыруға болады, онда сығылған орындалатын файл тиісті декомпрессиялау кодымен бірге орындалатын файлға жинақталады. Кейбір сығылған орындалатын файлдарды тікелей орындамай-ақ бастапқы бағдарлама файлын қайта құру үшін декомпрессиялауға болады. Бұл үшін CUP386 және UNP бағдарламаларын пайдалануға болады. Көптеген сығылған орындалатын файлдар бастапқы кодты жадта декомпрессиялайды және көбіне орындалуы үшін сәл көбірек жад қажет етеді (өйткені оларға декомпрессор кодын, сығылған деректерді және декомпрессияланған кодты сақтау қажет). Сонымен қатар, кейбір сығылған орындалатын файлдар қосымша талаптарға ие болуы мүмкін, мысалы, оларды орындау алдында декомпрессияланған орындалатын файлды файлдық жүйеге жазу қажеттігі. Орындалатын файлдарды сығыстыру екілік орындалатын файлдармен ғана шектелмейді, сонымен қатар JavaScript сияқты сценарийлерге де қолданылуы мүмкін. Көптеген сценарийлік тілдер адам оқи алатын кодпен жұмыс істеуге арналғандықтан, онда маңызды артық ақпарат бар, сондықтан сығыстыру өте тиімді болуы мүмкін және айнымалылар мен функцияларды анықтау үшін қолданылатын ұзын атауларды қысқа нұсқалармен ауыстыру және/немесе бос орынды жою сияқты қарапайым болуы мүмкін.

Артықшылықтары мен кемшіліктері

Бағдарламалық жасақтама таратушылар орындалатын файлдарды сығуды әртүрлі себептермен пайдаланады, ең алдымен бағдарламалық жасақтамаларының қосымша сақтау көлемдерін азайту үшін; орындалатын файлдарды сығушылар орындалатын кодты сығу үшін арнайы жасалғандықтан, олар көбінесе gzip, zip немесе bzip2 сияқты стандартты деректерді сығу құралдарына қарағанда жақсы сығу қатынасына жетеді. Бұл бағдарламалық жасақтама таратушыларға таңдаған тарату ортасының (мысалы, CD ROM, DVD ROM немесе дискета) шектеулерінде қалуға немесе клиенттерге интернет арқылы таратылған бағдарламалық жасақтамаға қол жеткізу үшін қажетті уақытты және трафикті азайтуға мүмкіндік береді. Орындалатын файлдарды сығу жиі кері инженерия жасаудан қорғау үшін немесе орындалатын файлдың мазмұнын жасыру үшін (мысалы, антивирустық сканерлерден құпия бағдарламаның болуын жасыру үшін) сығудың авторлық құқықтық әдістерімен және/немесе қосымша шифрлау арқылы қолданылады. Орындалатын файлдарды сығу тікелей декомпиляциялауды болдырмау, мәтіндік тұрақтыларды жасыру және қолтаңбаларды өзгерту үшін пайдаланылуы мүмкін. Бұл кері инженерия жасау мүмкіндігін жоймаса да, оны қымбатқа түсіруі мүмкін. Сығылған орындалатын файл файлдық жүйеде аз орын алады, демек файлдық жүйеден жадқа деректерді көшіруге аз уақыт кетеді. Екінші жағынан, орындалу басталғанға дейін деректерді декомпрессиялауға біраз уақыт қажет. Дегенмен, әртүрлі сақтау құралдарының жылдамдығы процессордың орташа жылдамдығымен қатар жүрмейді, сондықтан сақтау көбінесе шектеуші фактор болып табылады. Сондықтан сығылған орындалатын файл көптеген жүйелерде жылдамырақ жүктеледі. Қазіргі заманғы десктоптық компьютерлерде бұл көбінесе байқалмайды, егер орындалатын файл тым үлкен болмаса, сондықтан жүктеу жылдамдығы орындалатын файлды сығудың маңызды себебі емес. Дискіден қажет болғанда орындалатын бейнелерді бетке шығаратын операциялық жүйелерде сығылған орындалатын файлдар бұл процесті тиімсіз етеді. Декомпрессорлық модуль сығылған деректерді сақтау үшін жадтың бөлігін бөледі, ол орындалатын файл жүктеліп тұрған кезде бөлінген күйде қалады, пайдалы емес болса да, басқа қолданбалармен жад ресурстары үшін бәсекелеседі. Егер операциялық жүйе ауыстыру файлын қолданса, декомпрессияланған деректерді жадты босату үшін оған жазылуы керек, пайдаланылмаған дерек блоктарын қарапайым түрде жоюдың және қажет болған жағдайда оларды орындалатын файлдан қайта жүктеудің орнына. Бұл көбінесе байқалмайды, бірақ орындалатын файл бірнеше рет бір уақытта жүктелгенде мәселе туындайды - операциялық жүйе ол жүктеген дерек блоктарын қайта пайдалана алмайды, деректерді жаңа жад блогына декомпрессиялау керек, және пайдаланылмаса, ол жеке ауыстырылады. Қосымша сақтау және уақыт талаптары сығылған орындалатын файлдарды бірнеше рет бір уақытта іске қосылатын жағдайда сығуға бола ма, жоқ па, соны мұқият қарастыру қажеттігін білдіреді. Тағы бір кемшілігі - кейбір құралдар енді орындалу уақытындағы кітапханаларға тәуелділікті анықтай алмайды, өйткені тек статикалық байланыстырылған декомпрессорлық модуль көрінеді. Сондай-ақ, кейбір ескі антивирустық сканерлер барлық сығылған орындалатын файлдарды вирустар деп хабарлайды, өйткені декомпрессорлық модульдердің кейбір ерекшеліктері осылармен сәйкес келеді. Көптеген қазіргі заманғы антивирустық сканерлер ішіндегі нақты орындалатын файлды тексеру үшін бірнеше сығу қабаттарын аша алады, бірақ кейбір танымал антивирустық және зиянды бағдарламаларға қарсы сканерлер сығылған орындалатын файлдарда қате оң дабылдармен қиындықтарға тап болды. Іске асыру кезіндегі пакеттер көмегімен жасырындырылған құпия бағдарламалардың мәселесін шешу үшін IEEE Industry Connections Security Group бағдарламалық қамтамасыз етуді таңбалау жүйесін енгізді. Орындалатын файлдарды сығу компьютерлер дискеталардың және кішкентай қатты дискілердің сақтау сыйымдылығымен шектелген кезде көбірек танымал болды, олар баяу және аз сыйымдылыққа ие болды; ол компьютерге бағдарламалық жасақтаманы бірдей көлемде сақтауға мүмкіндік берді, пайдаланушы бағдарламалық жасақтаманы пайдаланған сайын архивті қолмен ашудың ыңғайсыздығын болдырмады. Дегенмен, компьютерлердегі сақтау сыйымдылығының артуына байланысты орындалатын файлдарды сығу азайып барады. Ол демо-сценада қолданылады, онда демолар өлшем шегінде болуы керек, мысалы, 64 килобайттық кіріспе. Тек өте күрделі сығу форматтары ғана жүктелу уақытын ұзартады, орындалатын файлды осы конкурстарға қатысу үшін жеткілікті кішкентай етіп сақтауға мүмкіндік береді.

CP/M және MSX-DOS орындалатын файлы

CP/M 80 / MSX DOS COM файлдары үшін танымал орындалатын қысымдағыштар:

PMexe (1990 жылдан бері, Yoshihiko Mino жазған, PMARC. COM+PMEXE. CPM, қолтаңбасы "pms")