كمپرسور فايل Exe (PE Packer)(لطفا نظر بديد)

client

Member
کمپرسور های فایل های Exe (یا اصولا فایلهای PE و نه فقط Exe ) میتوانند مفید باشند آنهم زمانی که میخواهیم برنامه را منتشر کنیم. علاوه بر اینکه حجم برنامه را کم میکنند به نوعی میتوانند برنامه را از دستکاری توسط Resource Editor ها و بعضی دستکاری ها (مثل ویروس های قدیمی) محافظت کنند. اما این برنامه ها مشکلاتی هم برای خود دارند.
متد کاری این کمپرسور ها نسبتا ساده است (منظورم این نیست که این کار هر کسی است که این کمپرسور ها را بنویسد خود من حتی نتوانستم کد UPX را کامپایل کنم!!!) در حقیقت آنها به نوعی یک حقه را بکار میگیرند. یک قالب طراحی میکنند بعد هر وقت که بخواهند یک فایل Exe را کمپرس کنند قالب را قرار میدهند و سپس Exe واقعی را کمپرس میکنند سپس آن را با شگرد خاص خودشان در قالب جای میدهند. وقتی که PE اجرا یا فراخوانی (Load ) شود به جای اینکه مراحل عادی طی شود و تصویر (Image ) در حافظه بار گذاری شود (همانطور که در مورد همه PE ها Loader سیستم عامل اینکار را انجام می دهد ) برنامه قالب، فایل کمپرس شده را دکمپرس میکند و آن را در حافظه بار گذاری میکند. این میتواند مشکلاتی را در پی داشته باشد منجمله :
1. در هنگام اجرای برنامه (یا فراخوانی آن در صورتی که مثلا یک DLL باشد. ) اگر سیستم حافظه کمی در اختیار داشته باشد هنگام اجرای برنامه چون برنامه قالب از توابع مربوط به Memory Allocate استفاده میکند و در این موارد ممکن است سیستم از Swap فایلها استفاده کند که باعث میشود دیسک سخت به شدت کار کند. اما در حالت عادی سیستم برای کد همیشه در حافظه بالایی (منظور حافظه دسترسی سریع غیرSwap است ) فضا در نظر میگیرد.(چون به صورت عادی در این موارد سیستم عامل در مود مانیتور است و از توابع Memory Allocate استفاده نمیکند بلکه مستقیما فضا را میگیرد بنابراین هرگز ازSwap استفاده نمیکند.)
2. در صورتی که بخواهیم چند نسخه از یک برنامه را اجرا کنیم در حالت عادی فقط یک بار برای قسمت کد حافظه در نظر گرفته میشود و در دفعات بعدی دوباره از همان فضا استفاده میشود اما در مورد فایلهای کمپرس شده این اتفاق نمی افتد. و هر برنامه به صورت جداگانه یک فضا را برای خود میگیرد. مثلا اگر شما یک برنامه کمپرس نشده داشته باشید که قسمت کد آن 1 مگا بایت باشد هنگام اجرای مثلا ده نسخه از آن چیزی در حدود 9 مگا بایت فضا کمتر از زمانی که همان برنامه را ده بار به صورت کمپرس شده و همزمان استفاده میکنید هدر میشود.

در حالت کلی کمپرس کردن یک فایل PE میتواند مفید باشد اما به نظر من بهتر است تا زمانی که نیازمند حجم کم نیستید این کار را انجام ندهید.
یکی از بهترین PE کمپرسور ها را میتوانید از http://upx.sourceforge.net/ بگیرید این کمپرسور Open Source است .
 

جدیدترین ارسال ها

بالا