Si Të Zvogëloni Madhësinë E Një Exe

Përmbajtje:

Si Të Zvogëloni Madhësinë E Një Exe
Si Të Zvogëloni Madhësinë E Një Exe

Video: Si Të Zvogëloni Madhësinë E Një Exe

Video: Si Të Zvogëloni Madhësinë E Një Exe
Video: Красивая летняя женская кофточка с очень интересным дизайном рукава! Вяжем спицами. Часть 1. 2024, Mund
Anonim

Sasia e vogël e RAM dhe pajisjeve ruajtëse afatgjata në kompjuterët personalë në të kaluarën imponuan kufizime shumë të rrepta për madhësinë e programeve. Ky problem nuk ekziston sot. Sidoqoftë, edhe tani ndonjëherë është e rëndësishme të minimizohet madhësia e exe-modulit të aplikacionit të zhvilluar sa më shumë që të jetë e mundur.

Si të zvogëloni madhësinë e një exe
Si të zvogëloni madhësinë e një exe

E nevojshme

  • - burimi;
  • - përpilues, lidhës;
  • - kompresorët e moduleve PE, të tilla si UPX, Themida.

Udhëzimet

Hapi 1

Krijoni versionin e lëshimit të ekzekutueshëm të aplikacionit. Zgjidhni konfigurimin e duhur në cilësimet e projektit në IDE. Nëse nuk ka një konfigurim të tillë, krijojeni atë bazuar në atë ekzistues. Modifikoni listën e opsioneve të lidhësit duke hequr dhe shtuar direktivat e duhura. Pra, kur përdorni një paketë zhvillimi nga Microsoft, duhet të hiqni opsionin / debug. Gjithashtu mund të shtoni direktivën e mëposhtme në kodin burimor: #pragma comment (linker, "/ RELEASE")

Hapi 2

Konfiguroni projektin për të shmangur lidhjen e ekzekutueses me bibliotekat statike sa më shumë që të jetë e mundur. Përdorni versione të përbashkëta të bibliotekave përkatëse. Për shembull, mund të përjashtoni kodin e bibliotekave të ekzekutimit C dhe C ++ duke zëvendësuar opsionin e lidhësit / ML ose / MT (biblioteka statike me një dhe me shumë fije) me / MD (CRT me shumë fije DLL).

Hapi 3

Merrni parasysh bashkimin e seksioneve të ndryshme të modulit exe në një. Kjo metodë nuk do të japë një rezultat të dukshëm nëse skedari është mjaft i madh, por me madhësinë fillestare të modulit prej 20-30 kilobajt, fitimi mund të jetë i konsiderueshëm. Opsioni / bashkoni lidhësin ju lejon të bashkoni seksionet. Mund ta vendosni përmes parametrave të projektit: / bashkoni:.text =.data /merge:.reloc=.data /merge:.rdata=.data ose duke përdorur direktivat pragma në kodin burimor: #pragma comment (linker, "/ bashkoni:.text =.data ") # koment pragma (lidhës," /merge:.reloc=.data")#pragma koment (lidhës, "/merge:.rdata=.data")#pragma koment (lidhës," / bashko:.idata =.data ") Gjithashtu ka kuptim të përcaktojmë atributet e seksionit që rezulton: #pragma comment (linker," /section:.data, rwe ")

Hapi 4

Zvogëloni madhësinë e exe duke vendosur vlerën minimale të madhësisë së blloqeve përgjatë kufijve të të cilave përafrohen seksionet. Përdorni opsionin / filealign linker të specifikuar duke redaktuar pronat e projektit ose direktivën pragma: #pragma comment (linker, "/ filealign: 0x200") Kjo metodë është e përshtatshme për module të vogla.

Hapi 5

Mundohuni të zvogëloni madhësinë e skedarit exe duke e ndërtuar atë me opsione optimizimi për të zvogëluar sasinë e kodit të makinës. Zëvendësoni opsionet e përpiluesit / O2 ose / Od me / O1.

Hapi 6

Zëvendësoni cungun standard DOS në modulin exe me tuajin, i cili do të ketë madhësinë minimale. Përdorni opsionin lidhës / cung: #pragma koment (lidhës, "/stub:mystub.exe")Këtu mystub.exe është emri i skedarit të ekzekutueshëm DOS që do t'i shtohet modulit exe si cung.

Hapi 7

Merrni parasysh të specifikoni pikën tuaj të hyrjes në aplikacion. Kjo do të eliminojë kodin fillestar të bibliotekave statike të kohës së funksionimit. Përdorni opsionin / linker linker, për shembull: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Hapi 8

Zbatoni shërbimet e paketimit si UPX, ASPack, Themida, PECompact në skedarin e përfunduar exe. Të dhënat e modulit do të kompresohen. Ata do të shpaketohen në kujtesë pasi të fillojnë aplikimin. Kjo metodë jep rezultate të mira për skedarët e mëdhenj exe që përmbajnë një sasi të madhe të të dhënave statike me entropi të ulët (për shembull, rasters DIB në seksionin e burimeve).

Recommended: