Атқарылатын файлдарды қысу – кодты кіріктіріп, өзімен бірге ашу кодын қосатын әдіс. Қорғау, өлшемді кішірету үшін қолданылады. Паковщиктер туралы біліңіз!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Орындалатын файлды сығыстыру тәсілдері
Means of compressing an executable file
Орындалатын файлды сығыстыру – орындалатын файлды сығыстырудың және сығылған деректерді декомпрессиялау кодымен біріктірудің кез келген тәсілі. Сығылған орындалатын файл орындалғанда, декомпрессиялау коды сығылған кодтан бастапқы кодты қайта жасайды, содан кейін оны орындайды. Көп жағдайда бұл процесс қолданушыға көрінбейді, сондықтан сығылған орындалатын файлды түпнұсқасымен бірдей пайдалануға болады. Орындалатын файлдарды сығыстыру құралдары жиі орындалатын файлдарды пактеушілер, орындалу кезінде пактеушілер, бағдарламалық қамтамасты пактеушілер, бағдарламалық қамтамасты қорғаушылар, тіпті «полиморфты пактеушілер» және «құпиялау құралдары» деп аталады. Сығылған орындалатын файлды өзін-өзі ашуға болатын архив ретінде қарастыруға болады, онда сығылған орындалатын файл тиісті декомпрессиялау кодымен бірге орындалатын файлға жинақталады. Кейбір сығылған орындалатын файлдарды тікелей орындамай-ақ бастапқы бағдарлама файлын қайта құру үшін декомпрессиялауға болады. Бұл үшін CUP386 және UNP бағдарламаларын пайдалануға болады. Көптеген сығылған орындалатын файлдар бастапқы кодты жадта декомпрессиялайды және көбіне орындалуы үшін сәл көбірек жад қажет етеді (өйткені оларға декомпрессор кодын, сығылған деректерді және декомпрессияланған кодты сақтау қажет). Сонымен қатар, кейбір сығылған орындалатын файлдар қосымша талаптарға ие болуы мүмкін, мысалы, оларды орындау алдында декомпрессияланған орындалатын файлды файлдық жүйеге жазу қажеттігі. Орындалатын файлдарды сығыстыру екілік орындалатын файлдармен ғана шектелмейді, сонымен қатар JavaScript сияқты сценарийлерге де қолданылуы мүмкін. Көптеген сценарийлік тілдер адам оқи алатын кодпен жұмыс істеуге арналғандықтан, онда маңызды артық ақпарат бар, сондықтан сығыстыру өте тиімді болуы мүмкін және айнымалылар мен функцияларды анықтау үшін қолданылатын ұзын атауларды қысқа нұсқалармен ауыстыру және/немесе бос орынды жою сияқты қарапайым болуы мүмкін.
Executable compression is any means of compressing an executable file and combining the compressed data with decompression code into a single executable. When this compressed executable is executed, the decompression code recreates the original code from the compressed code before executing it. In most cases this happens transparently so the compressed executable can be used in exactly the same way as the original. Executable compressors are often referred to as executable packers, runtime packers, software packers, software protectors, or even "polymorphic packers" and "obfuscating tools". A compressed executable can be considered a self extracting archive, where a compressed executable is packaged along with the relevant decompression code in an executable file. Some compressed executables can be decompressed to reconstruct the original program file without being directly executed. Two programs that can be used to do this are CUP386 and UNP. Most compressed executables decompress the original code in memory and most require slightly more memory to run (because they need to store the decompressor code, the compressed data and the decompressed code). Moreover, some compressed executables have additional requirements, such as those that write the decompressed executable to the file system before executing it. Executable compression is not limited to binary executables, but can also be applied to scripts, such as JavaScript. Because most scripting languages are designed to work on human readable code, which has a high redundancy, compression can be very effective and as simple as replacing long names used to identify variables and functions with shorter versions and/or removing white space.
Артықшылықтары мен кемшіліктері
Бағдарламалық жасақтама таратушылар орындалатын файлдарды сығуды әртүрлі себептермен пайдаланады, ең алдымен бағдарламалық жасақтамаларының қосымша сақтау көлемдерін азайту үшін; орындалатын файлдарды сығушылар орындалатын кодты сығу үшін арнайы жасалғандықтан, олар көбінесе gzip, zip немесе bzip2 сияқты стандартты деректерді сығу құралдарына қарағанда жақсы сығу қатынасына жетеді. Бұл бағдарламалық жасақтама таратушыларға таңдаған тарату ортасының (мысалы, CD ROM, DVD ROM немесе дискета) шектеулерінде қалуға немесе клиенттерге интернет арқылы таратылған бағдарламалық жасақтамаға қол жеткізу үшін қажетті уақытты және трафикті азайтуға мүмкіндік береді. Орындалатын файлдарды сығу жиі кері инженерия жасаудан қорғау үшін немесе орындалатын файлдың мазмұнын жасыру үшін (мысалы, антивирустық сканерлерден құпия бағдарламаның болуын жасыру үшін) сығудың авторлық құқықтық әдістерімен және/немесе қосымша шифрлау арқылы қолданылады. Орындалатын файлдарды сығу тікелей декомпиляциялауды болдырмау, мәтіндік тұрақтыларды жасыру және қолтаңбаларды өзгерту үшін пайдаланылуы мүмкін. Бұл кері инженерия жасау мүмкіндігін жоймаса да, оны қымбатқа түсіруі мүмкін. Сығылған орындалатын файл файлдық жүйеде аз орын алады, демек файлдық жүйеден жадқа деректерді көшіруге аз уақыт кетеді. Екінші жағынан, орындалу басталғанға дейін деректерді декомпрессиялауға біраз уақыт қажет. Дегенмен, әртүрлі сақтау құралдарының жылдамдығы процессордың орташа жылдамдығымен қатар жүрмейді, сондықтан сақтау көбінесе шектеуші фактор болып табылады. Сондықтан сығылған орындалатын файл көптеген жүйелерде жылдамырақ жүктеледі. Қазіргі заманғы десктоптық компьютерлерде бұл көбінесе байқалмайды, егер орындалатын файл тым үлкен болмаса, сондықтан жүктеу жылдамдығы орындалатын файлды сығудың маңызды себебі емес. Дискіден қажет болғанда орындалатын бейнелерді бетке шығаратын операциялық жүйелерде сығылған орындалатын файлдар бұл процесті тиімсіз етеді. Декомпрессорлық модуль сығылған деректерді сақтау үшін жадтың бөлігін бөледі, ол орындалатын файл жүктеліп тұрған кезде бөлінген күйде қалады, пайдалы емес болса да, басқа қолданбалармен жад ресурстары үшін бәсекелеседі. Егер операциялық жүйе ауыстыру файлын қолданса, декомпрессияланған деректерді жадты босату үшін оған жазылуы керек, пайдаланылмаған дерек блоктарын қарапайым түрде жоюдың және қажет болған жағдайда оларды орындалатын файлдан қайта жүктеудің орнына. Бұл көбінесе байқалмайды, бірақ орындалатын файл бірнеше рет бір уақытта жүктелгенде мәселе туындайды - операциялық жүйе ол жүктеген дерек блоктарын қайта пайдалана алмайды, деректерді жаңа жад блогына декомпрессиялау керек, және пайдаланылмаса, ол жеке ауыстырылады. Қосымша сақтау және уақыт талаптары сығылған орындалатын файлдарды бірнеше рет бір уақытта іске қосылатын жағдайда сығуға бола ма, жоқ па, соны мұқият қарастыру қажеттігін білдіреді. Тағы бір кемшілігі - кейбір құралдар енді орындалу уақытындағы кітапханаларға тәуелділікті анықтай алмайды, өйткені тек статикалық байланыстырылған декомпрессорлық модуль көрінеді. Сондай-ақ, кейбір ескі антивирустық сканерлер барлық сығылған орындалатын файлдарды вирустар деп хабарлайды, өйткені декомпрессорлық модульдердің кейбір ерекшеліктері осылармен сәйкес келеді. Көптеген қазіргі заманғы антивирустық сканерлер ішіндегі нақты орындалатын файлды тексеру үшін бірнеше сығу қабаттарын аша алады, бірақ кейбір танымал антивирустық және зиянды бағдарламаларға қарсы сканерлер сығылған орындалатын файлдарда қате оң дабылдармен қиындықтарға тап болды. Іске асыру кезіндегі пакеттер көмегімен жасырындырылған құпия бағдарламалардың мәселесін шешу үшін IEEE Industry Connections Security Group бағдарламалық қамтамасыз етуді таңбалау жүйесін енгізді. Орындалатын файлдарды сығу компьютерлер дискеталардың және кішкентай қатты дискілердің сақтау сыйымдылығымен шектелген кезде көбірек танымал болды, олар баяу және аз сыйымдылыққа ие болды; ол компьютерге бағдарламалық жасақтаманы бірдей көлемде сақтауға мүмкіндік берді, пайдаланушы бағдарламалық жасақтаманы пайдаланған сайын архивті қолмен ашудың ыңғайсыздығын болдырмады. Дегенмен, компьютерлердегі сақтау сыйымдылығының артуына байланысты орындалатын файлдарды сығу азайып барады. Ол демо-сценада қолданылады, онда демолар өлшем шегінде болуы керек, мысалы, 64 килобайттық кіріспе. Тек өте күрделі сығу форматтары ғана жүктелу уақытын ұзартады, орындалатын файлды осы конкурстарға қатысу үшін жеткілікті кішкентай етіп сақтауға мүмкіндік береді.
Software distributors use executable compression for a variety of reasons, primarily to reduce the secondary storage requirements of their software; as executable compressors are specifically designed to compress executable code, they often achieve better compression ratio than standard data compression facilities such as gzip, zip or bzip2 This allows software distributors to stay within the constraints of their chosen distribution media (such as CD ROM, DVD ROM, or floppy disk), or to reduce the time and bandwidth customers require to access software distributed via the Internet. Executable compression is also frequently used to deter reverse engineering or to obfuscate the contents of the executable (for example, to hide the presence of malware from antivirus scanners) by proprietary methods of compression and/or added encryption. Executable compression can be used to prevent direct disassembly, mask string literals and modify signatures. Although this does not eliminate the chance of reverse engineering, it can make the process more costly. A compressed executable requires less storage space in the file system, thus less time to transfer data from the file system into memory. On the other hand, it requires some time to decompress the data before execution begins. However, the speed of various storage media has not kept up with average processor speeds, so the storage is very often the bottleneck. Thus the compressed executable will load faster on most common systems. On modern desktop computers, this is rarely noticeable unless the executable is unusually big, so loading speed is not a primary reason for or against compressing an executable. On operating systems which page executable images on demand from the disk, compressed executables make this process less efficient. The decompressor stub allocates a block of memory to hold the decompressed data, which stays allocated as long as the executable stays loaded, whether it is used or not, competing for memory resources with other applications all along. If the operating system uses a swap file, the decompressed data has to be written to it to free up the memory instead of simply discarding unused data blocks and reloading them from the executable image if needed again. This is usually not noticeable, but it becomes a problem when an executable is loaded more than once at the same time—the operating system cannot reuse data blocks it has already loaded, the data has to be decompressed into a new memory block, and will be swapped out independently if not used. The additional storage and time requirements mean that it has to be weighed carefully whether to compress executables which are typically run more than once at the same time. Another disadvantage is that some utilities can no longer identify run time library dependencies, as only the statically linked extractor stub is visible. Also, some older virus scanners simply report all compressed executables as viruses because the decompressor stubs share some characteristics with those. Most modern virus scanners can unpack several different executable compression layers to check the actual executable inside, but some popular anti virus and anti malware scanners have had troubles with false positive alarms on compressed executables. In an attempt to solve the problem of malware obfuscated with the help of runtime packers the IEEE Industry Connections Security Group has introduced a software taggant system. Executable compression used to be more popular when computers were limited to the storage capacity of floppy disks, which were both slow and low capacity media, and small hard drives; it allowed the computer to store more software in the same amount of space, without the inconvenience of having to manually unpack an archive file every time the user wanted to use the software. However, executable compression has become less popular because of increased storage capacity on computers. It has its use in the demoscene where demos have to stay within a size limit, e. g. 64k intro. Only very sophisticated compression formats, which add to load time, keep an executable small enough to enter these competitions.
CP/M және MSX-DOS орындалатын файлы
CP/M 80 / MSX DOS COM файлдары үшін танымал орындалатын қысымдағыштар:
Known executable compressors for CP/M 80 / MSX DOS COM files: