كيف يتم ضغط الملفات التنفيدية ؟
#2

بسم الله الرحمن الرحيم

كيف يتم ضغط الملفات التفيذية ؟
الفكرة بسيط :
1- ضغط الملف حسب خواريزمية ضغط مختارة
2-اضافة اوامر/كود لفك الضغط بالذاكرة + التنفيذ

طبعا الضغط هو تحويل الملف من شكل الى شكل اخر اصغر حجما باستخدام خواريزمية معينة
وهناك الكثير من الخواريزميات المعروفة والمشهورة والمستخدمة في شتى الميادين
مثلا عائلة الخواريزميات المشتقة من اعمال Lempel-Ziv اختصارا LZ او LZ77 باضافة سنة 1977
LZW المستعملة في الصور من صيغة GIF
LZX المستخدمة في ملفات التصيب من مايكرزفت بصيغة CAB
LZMA المستخدمة في برنامج الضغط 7Zip
DEFLATE دمج بين LZ77 و Huffman والمستخدمة في Zip وايضا في الصور PNG
خواريزميات اخرى مثل:
RLE المستخدمة في الصور BMP
NRV المستخدمة في برنامج الضغط UPX
PPM التي هي اصل PAQ المستخدمة في KGB و غيره...
عدد الخواريزميات وخاصة المتغيرات و التعديلات على الخواريزميات السابقة وجعل نسبة الضغط احسن


فك الضغط يتم حسب الخواريزمية بالذاكرة ثم يتم تنفيذ البرنامج اي بالذاكرة
طبعا هناك طرق كثيرة وتختلف حسب المبرمج وحسب طبيعة الملف التنفيذي المراد ضغطه وهذه قصة اخرى يطول شرحها وتتطلب معرفة بنية الملف التنفيذي Win32 PE وكيفية عمل مترجمات لغات البرمجة المنتشرة...

بريمجي الصغير mPack كان فقط تجربة صغيرة
في الاصدار 0.0.2 استخدمت خواريزمية UCL
في الاصدار 0.0.3 استخدمت zlib
في الاصدار 0.0.4 قريبا ان شاء الله LZMA

والسلام عليكم ورحمة الله وبركاته
الرد


الردود في هذا الموضوع
كيف يتم ضغط الملفات التنفيدية ؟ - بواسطة محمد عبد العزيز - 20-02-2008, 04:45 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم