Эксенин көлөмүн кантип азайтуу керек

Мазмуну:

Эксенин көлөмүн кантип азайтуу керек
Эксенин көлөмүн кантип азайтуу керек

Video: Эксенин көлөмүн кантип азайтуу керек

Video: Эксенин көлөмүн кантип азайтуу керек
Video: HIDE AND SEEK [SONIC.EXE - Full SFM Animation - Halloween Special] 2024, Ноябрь
Anonim

Мурда жеке компьютерлердеги оперативдик эс тутумдун жана узак мөөнөттүү сактагычтардын аздыгы программалардын көлөмүнө өтө катуу чектөөлөрдү киргизген. Бул көйгөй бүгүнкү күндө жок. Бирок, азыркы учурда дагы, кээде иштелип чыккан тиркеменин exe-модулунун көлөмүн мүмкүн болушунча азайтуу маанилүү.

Эксенин көлөмүн кантип азайтуу керек
Эксенин көлөмүн кантип азайтуу керек

Зарыл

  • - Баштапкы код;
  • - түзүүчү, байланыштыруучу;
  • - PE модулдарынын компрессорлору, мисалы UPX, Themida.

Нускамалар

1 кадам

Колдонмонун чыгаруу версиясын аткарылуучу куруңуз. IDEдеги долбоор орнотууларынан ылайыктуу конфигурацияны тандаңыз. Эгер андай конфигурация жок болсо, анда бар конфигурациянын негизинде түзүңүз. Тиешелүү директиваларды алып салуу жана кошуу аркылуу шилтеме параметрлеринин тизмесин өзгөртүңүз. Ошентип, Майкрософттун иштеп чыгуу топтомун колдонуп жатканда, / оңдоо параметрин алып салышыңыз керек. Ошондой эле баштапкы кодго төмөнкү директиваны кошсоңуз болот: #pragma comment (linker, "/ RELEASE")

2-кадам

Аткарылуучу файлды статикалык китепканалар менен байланыштырбоо үчүн долбоорду конфигурациялаңыз. Тийиштүү китепканалардын жалпы нускаларын колдонуңуз. Мисалы, C жана C ++ иштөө убактысынын китепканаларынын кодун / ML же / MT (статикалык бир жана көп тармактуу китепканаларды) / MD (көп жиптүү CRT DLL) менен алмаштыруу жолу менен алып салсаңыз болот.

3-кадам

Exe модулунун ар кандай бөлүмдөрүн бир бөлүмгө бириктирүүнү карап көрүңүз. Эгерде файл жетиштүү көлөмдө болсо, бул ыкма байкалаарлык натыйжа бербейт, бирок баштапкы модулдун көлөмү 20-30 килобайт болгондо, пайда чоң болушу мүмкүн. / Merge linker параметри бөлүмдөрдү бириктирүүгө мүмкүндүк берет. Аны долбоордун параметрлери аркылуу орното аласыз: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data же булак кодундагы прагма директиваларын колдонуу менен: #pragma comment (linker, "/ бириктирүү:.text =.data ") # прагма комментарий (шилтеме," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker,") / merge:.idata =.data ") Жыйынтыкталган бөлүмдүн атрибуттарын аныктоонун мааниси бар: #pragma comment (linker," /section:.data, rwe ")

4-кадам

Бөлүктөр тегизделген чек аралардагы блоктордун өлчөмүнүн минималдуу маанисин орнотуу менен, exe көлөмүн кичирейт. Долбоордун касиеттерин же прагма директивасын түзөтүү менен көрсөтүлгөн / filealign шилтемеси параметрин колдонуңуз: #pragma comment (linker, "/ filealign: 0x200") Бул ыкма чакан модулдар үчүн ылайыктуу.

5-кадам

Exe файлынын көлөмүн азайтып, аны машинанын кодун азайтуу үчүн оптималдаштыруу жолдору менен жасаңыз. / O2 же / Od компиляторунун параметрлерин / O1 менен алмаштырыңыз.

6-кадам

Exe-модулдагы стандарттык DOS стубун өзүңүздүн ордуна коюңуз, ал минималдуу өлчөмгө ээ болот. / Stub linker параметрин колдонуңуз: #pragma comment (linker, "/stub:mystub.exe")Here mystub.exe - exe модулуна stub катары кошула турган DOS аткарылуучу файлдын аталышы.

7-кадам

Арызга өз кирүү чекитиңизди көрсөтүүнү ойлонуп көрүңүз. Бул статикалык иштөө убактысы китепканаларынын баштоо кодун жок кылат. / Entry linker параметрин колдонуңуз, мисалы: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

8-кадам

UPX, ASPack, Themida, PECompact сыяктуу таңгактоочу утилиттерди даяр эксе файлына колдонуңуз. Модулдун маалыматтары кысылат. Колдонмону ишке киргизгенден кийин, алар эс тутумга чыгарылат. Бул ыкма энтропиясы төмөн статикалык маалыматтарды камтыган чоң exe файлдары үчүн жакшы натыйжаларды берет (мисалы, ресурстар бөлүмүндөгү DIB растерлери).

Сунушталууда: