Урьд нь персонал компьютер дээрх бага хэмжээний RAM, удаан хугацааны хадгалалтын төхөөрөмжүүд програмын хэмжээнд маш хатуу хязгаарлалт тавьдаг байсан. Энэ асуудал өнөөдөр байхгүй байна. Гэсэн хэдий ч одоо ч гэсэн боловсруулсан програмын exe-модулийн хэмжээг аль болох багасгах нь чухал юм.
Шаардлагатай
- - эх сурвалж;
- - хөрвүүлэгч, холбогч;
- - UPX, Themida зэрэг PE модулийн компрессорууд.
Зааварчилгаа
1-р алхам
Хэрэглээний програмын хувилбарыг бүтээх. IDE дээрх төслийн тохиргооноос тохирох тохиргоог сонгоно уу. Хэрэв ийм тохиргоо байхгүй бол одоо байгаа тохиргоонд үндэслэн үүсгээрэй. Холбогдох зааврыг хасах, нэмэх замаар холбогч сонголтуудын жагсаалтыг өөрчлөх. Тиймээс, Microsoft-аас хөгжүүлэлтийн багцыг ашиглахдаа / дибаг хийх сонголтыг хасах хэрэгтэй. Та дараахь удирдамжийг эх код дээр нэмж оруулах боломжтой: #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 comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Үр дүнгийн хэсгийн шинж чанаруудыг тодорхойлох нь бас утга учиртай: #pragma comment (linker," /section:.data, rwe ")
Алхам 4
Хэсгүүдийг хооронд нь уялдуулсан хилийн дагуух блокуудын хамгийн бага утгыг тохируулж exe-ийн хэмжээг багасгана. Төслийн шинж чанарууд эсвэл прагма удирдамжийг засах замаар тодорхойлсон / filealign linker сонголтыг ашиглана уу: #pragma comment (linker, "/ filealign: 0x200") Энэ арга нь жижиг модулиудад тохиромжтой.
Алхам 5
Машины кодын хэмжээг багасгахын тулд exe файлыг оновчлолын сонголтуудаар барьж хэмжээг нь багасгахыг хичээ. / O2 эсвэл / Od хөрвүүлэгчийн сонголтыг / O1-ээр солино уу.
Алхам 6
Exe-модуль дахь стандарт DOS шүүлтүүрийг хамгийн бага хэмжээтэйгээр өөрчил. / Stub linker сонголтыг ашиглана уу: #pragma comment (linker, "/stub:mystub.exe") Энд 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 файлд хэрэглэнэ. Модулийн өгөгдлийг шахах болно. Програмыг ажиллуулсны дараа тэдгээрийг санах ойд задлах болно. Энэ арга нь энтропи багатай статик өгөгдлийг их хэмжээгээр агуулсан том exe файлуудын хувьд сайн үр дүн өгдөг (жишээлбэл, нөөцийн хэсэгт байгаа DIB rasters).