PDA

View Full Version : معایب کم کردن حجم با استفاده از ASPACK



Graphical
سه شنبه 05 شهریور 1387, 19:25 عصر
با سلام و احترام حضور اساتید محترم
فایل کامپایل شده ی بنده 8 مگابایت است
ASPack حجم اونو به 2 مگابایت تبدیل کرد.
سئوال من اینه که :
کم کردن حجم با این برنامه و یا برنامه های مشابه آیا معایبی هم داره؟
یا بهتر است فرمها و توابع رو توی dll و Package به منظور کم کردن حجم بسازم؟

Hsimple11
سه شنبه 05 شهریور 1387, 23:39 عصر
َُُASPACK، UPX و اساسا هر نوع Compressor دیگری به هرحال یکسری معایب و مزایا دارد. فرضا اگه یک فایل EXE را فشرده کرده اید، در زمان اجرا به ناچار در حافظه Unpack خوهد شد و طبیعتا فضای بیشتری از حافظه شما را اشغال خواهد کرد در حالی که در مورد فایل مشابه ولی غیرفشرده، این لود شدن از روی دیسک انجام خواهد گرفت. به همین علت هم هر نسخه از برنامه شما فضای خودش را در حافظه اشغال خواهد کرد ولی برنامه های معمول از روی دیسک بارگذاری شده و کد برنامه تنها یک واحد و یک قسمت حافظه را به خود اختصاص خواهد داد.

vcldeveloper
چهارشنبه 06 شهریور 1387, 00:50 صبح
فرضا اگه یک فایل EXE را فشرده کرده اید، در زمان اجرا به ناچار در حافظه Unpack خوهد شد و طبیعتا فضای بیشتری از حافظه شما را اشغال خواهد کرد در حالی که در مورد فایل مشابه ولی غیرفشرده، این لود شدن از روی دیسک انجام خواهد گرفت. به همین علت هم هر نسخه از برنامه شما فضای خودش را در حافظه اشغال خواهد کرد ولی برنامه های معمول از روی دیسک بارگذاری شده و کد برنامه تنها یک واحد و یک قسمت حافظه را به خود اختصاص خواهد داد.
حجم حافظه اشغال شده یک برنامه پک شده و همان برنامه بصورت پک نشده، تقریبا یکسان هست. یعنی مقدار حافظه ایی که پکر اشغال میکنه بسیار ناچیز و در حدی هست که می تونید آن را در نظر نگیرید. از نظر سرعت اجرا، یک پکر باعث میشه زمان لود اولیه برنامه به مقدار ناچیزی افزایش پیدا کنه، ولی وقتی برنامه لود شد، سرعتش با برنامه پک نشده فرقی نمیکنه.


یا بهتر است فرمها و توابع رو توی dll و Package به منظور کم کردن حجم بسازم؟
فشرده سازی با پکر با تقسیم برنامه بین چند ماجول فرق میکنه. شما می تونید حتی DLLها و Packageهاتون رو هم پک کنید. پک کردن بیشتر راهی برای افزایش ضریب امنیت برنامه دربرابر کرک هست.

Hsimple11
چهارشنبه 06 شهریور 1387, 11:24 صبح
حجم حافظه اشغال شده یک برنامه پک شده و همان برنامه بصورت پک نشده، تقریبا یکسان هست. یعنی مقدار حافظه ایی که پکر اشغال میکنه بسیار ناچیز و در حدی هست که می تونید آن را در نظر نگیرید. از نظر سرعت اجرا، یک پکر باعث میشه زمان لود اولیه برنامه به مقدار ناچیزی افزایش پیدا کنه، ولی وقتی برنامه لود شد، سرعتش با برنامه پک نشده فرقی نمیکنه.

آقای کشاورز مطمئن هستین؟ چون من این مطلب رو جاهای مختلفی خوندم که لود برنامه پک شده - بخصوص اگه حجم اون بالا باشه - حجم زیادی از RAM رو اشغال میکنه.

MFiRE
چهارشنبه 06 شهریور 1387, 16:13 عصر
سلام
چه عیبی !؟
وقتی حجمه برنامه تون رو کم می کنه !

وقتی سرعته اجرایه برنامه تون رو زیاد می کنه !

وقتی از برنامه تون در مقابل کرکها تا حدودی محافظت می کنه !

دوست عزیز زیاد به فکر این چیزا نباشید !

حالا یه سوال از Graphical عزیز !؟
ایا برنامه ی شما از برنامه های شرکت های بزرگی که الان تمام دنیا دارن ازش استفاده می کنن ، مهمتره ؟
الان خیلی از شرکت ها دارن از پکرهای مختلفی استفاده می کنن که تا حالا هم مشکلی براشون پیش نیومده !!!!
فقط باید یه کار بکنید ! برنامه تون رو بعد از هر بار پک کردن چک کنید و ببینید درست کار می ده یا نه !
در ضمن اگه نمی خوایید به برنامه تون امنیت بدین ، از UPX استفاده کنین تا خیالتون راحتتر باشه!

:لبخندساده:

vcldeveloper
چهارشنبه 06 شهریور 1387, 18:56 عصر
وقتی سرعته اجرایه برنامه تون رو زیاد می کنه !
سرعت اجرا را افزایش نمیده!


آقای کشاورز مطمئن هستین؟ چون من این مطلب رو جاهای مختلفی خوندم که لود برنامه پک شده - بخصوص اگه حجم اون بالا باشه - حجم زیادی از RAM رو اشغال میکنه.
یک پکر فقط در زمان اجرا برنامه را به سایز اصلی بر میگردونه. یک پکر بخشی از حافظه را به عنوان بافر استفاده میکنه و فایل EXE را بصورت بخش به بخش در اون بافر لود میکنه و داده موجود در بافر را Unpack میکنه و در فضای حافظه Process قرار میده، پس مقدار فضای حافظه ایی که یک برنامه پک شده اشغال میکنه، در لحظه لود شدن مساوی هست با: حجم برنامه Unpack شده + حجم کد پکر (بسیار ناچیز) + حجم بافر استفاده شده برای Unpack کردن. و حجم این برنامه بعد از unpack شدن مساوی هست با: حجم برنامه unpack شده. پس یک پکر فقط مقدار کمی حافظه بیشتر از حافظه اشغال شده توسط برنامه unpack شده اشغال میکنه، اون هم فقط در زمان لود کردن برنامه در حافظه، نه در کل زمانی که برنامه در حافظه قرار داره.
البته اینها بستگی به خود پکر داره، مثلا یک پکری ممکن هست خوب نوشته نشده باشه و بجای استفاده از بافر، کل برنامه پک شده را در حافظه لود کنه، بعد اون رو Unpack کنه، یعنی: حجم برنامه Pack شده + حجم برنامه Unpack شده + حجم کد پکر. مسلما این روش روش خوبی نیست و پکرهای درست و حسابی و حرفه ایی از همچین روشی استفاده نمی کنند.

MFiRE
چهارشنبه 06 شهریور 1387, 20:54 عصر
یک پکر باعث میشه زمان لود اولیه برنامه به مقدار ناچیزی افزایش پیدا کن
بد منظورمو رسوندم ! منظورم ...


یک پکر فقط در زمان اجرا برنامه را به سایز اصلی بر میگردونه. یک پکر بخشی از حافظه را به عنوان بافر استفاده میکنه و فایل EXE را بصورت بخش به بخش در اون بافر لود میکنه و داده موجود در بافر را Unpack میکنه و در فضای حافظه Process قرار میده، پس مقدار فضای حافظه ایی که یک برنامه پک شده اشغال میکنه، در لحظه لود شدن مساوی هست با: حجم برنامه Unpack شده + حجم کد پکر (بسیار ناچیز) + حجم بافر استفاده شده برای Unpack کردن. و حجم این برنامه بعد از unpack شدن مساوی هست با: حجم برنامه unpack شده. پس یک پکر فقط مقدار کمی حافظه بیشتر از حافظه اشغال شده توسط برنامه unpack شده اشغال میکنه، اون هم فقط در زمان لود کردن برنامه در حافظه، نه در کل زمانی که برنامه در حافظه قرار داره.
موافقم !