Экздің көлемін қалай азайтуға болады

Мазмұны:

Экздің көлемін қалай азайтуға болады
Экздің көлемін қалай азайтуға болады

Бейне: Экздің көлемін қалай азайтуға болады

Бейне: Экздің көлемін қалай азайтуға болады
Бейне: 少女被小混混淩辱,誰知道他是議長的兒子,就連警察也是保護傘,最後被黑道大佬狠狠收拾,臺灣電影《黑白》 2024, Желтоқсан
Anonim

Бұрын дербес компьютерлердегі жедел жадының және ұзақ мерзімді сақтау құрылғыларының аздығы бағдарламалардың көлеміне өте қатаң шектеулер енгізген. Бұл проблема бүгінде жоқ. Алайда, қазірдің өзінде әзірленген қосымшаның exe-модулінің көлемін мүмкіндігінше азайту маңызды.

Экздің көлемін қалай азайтуға болады
Экздің көлемін қалай азайтуға болады

Қажетті

  • - дереккөз;
  • - құрастырушы, байланыстырушы;
  • - PE модульдерінің компрессорлары, мысалы UPX, Themida.

Нұсқаулық

1-қадам

Қосымшаның шығарылатын нұсқасын орындаңыз. IDE-де жоба параметрлерінде тиісті конфигурацияны таңдаңыз. Егер мұндай конфигурация болмаса, оны бар конфигурация негізінде жасаңыз. Тиісті директиваларды жою және қосу арқылы байланыстырушы опцияларының тізімін өзгертіңіз. Сонымен, Microsoft корпорациясының даму бумасын пайдалану кезінде / debug опциясын алып тастау керек. Сондай-ақ, бастапқы кодқа келесі директиваны қосуға болады: #pragma comment (linker, «/ RELEASE»)

2-қадам

Орындалатын файлды статикалық кітапханалармен мүмкіндігінше байланыстырмас үшін жобаны теңшеңіз. Тиісті кітапханалардың ортақ нұсқаларын пайдаланыңыз. Мысалы, сілтеме параметрін / ML немесе / MT (статикалық бір және көп ағынды кітапханалар) / MD (көп бұрандалы CRT DLL) ауыстыру арқылы C және C ++ жұмыс уақыты кітапханаларының кодын алып тастауға болады.

3-қадам

Exe модулінің әртүрлі бөлімдерін біреуіне біріктіруді қарастырыңыз. Егер файл жеткілікті үлкен болса, бұл әдіс айтарлықтай нәтиже бермейді, бірақ бастапқы модуль мөлшері 20-30 килобайт болған жағдайда, пайда айтарлықтай болуы мүмкін. / Merge linker опциясы бөлімдерді біріктіруге мүмкіндік береді. Сіз оны жоба параметрлері арқылы орната аласыз: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data немесе бастапқы кодтағы прагма директиваларын қолдана отырып: #pragma comment (linker, «/ біріктіру:.text =.data «) # прагма түсініктемесі (байланыстырушы,» /merge:.reloc=.data")#pragma түсініктемесі (linker, «/merge:.rdata=.data")#pragma түсініктемесі (сілтеме,» / біріктіру:.idata =.data «) Сонымен, алынған бөлімнің атрибуттарын анықтау мағынасы бар: #pragma comment (linker,» /section:.data, rwe «)

4-қадам

Бөлімдер тураланған шекаралар бойындағы блоктар өлшемінің минималды мәнін орнату арқылы экзенің өлшемін азайтыңыз. Жоба қасиеттерін немесе прагма директивасын өңдеу арқылы көрсетілген / 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 модуліне стуб ретінде қосылатын DOS орындалатын файлының атауы.

7-қадам

Өтінішке өзіңіздің жеке кіру нүктеңізді көрсетіңіз. Бұл статикалық жұмыс уақыты кітапханаларының инициализация кодын жояды. / Entry linker опциясын қолданыңыз, мысалы: #pragma comment (linker, «/ entry: MyStartup») void MyStartup () {:: MessageBox (NULL, «Hello!», «Message!», MB_OK);}

8-қадам

Аяқталған exe файлына UPX, ASPack, Themida, PECompact сияқты орауыш утилиталарын қолданыңыз. Модуль туралы деректер қысылады. Қосымшаны іске қосқаннан кейін олар жадтан шығарылады. Бұл әдіс энтропиясы төмен статикалық деректердің көп мөлшерін қамтитын үлкен exe файлдары үшін жақсы нәтиже береді (мысалы, ресурстар бөліміндегі DIB растерлері).

Ұсынылған: