PDA

View Full Version : نحوه ارجرای فایل های exe



rostamkhani
سه شنبه 24 بهمن 1385, 01:21 صبح
سلام
برنامه نویسان عزیز کی میدونه یه فایل exe به چه شکل اجرا میشه منظورم روش سیستم اجرای یک فایل exeاست
در واقع قصد دارم بتونم باداشتن bytes یک فایل exe در ram آن فایل رو اجرا کنم ؟
اگه مثلا تابعی یا API موجود باشه که به جای path فایل exe از ما byte های انو از ما بگیره و اجراش کنه
system shell exe هم search کردم به یه نتایجی رسیدم ولی فایده نداشته

greenway
سه شنبه 24 بهمن 1385, 08:08 صبح
نحوه اجرای فایلهای اجرایی به شدت به سیستم عامل مورد استفاده وابسته است . در سیستم عامل ویندوزهای 32 بیتی ساختاری به نام PE برای فایل اجرایی تعریف شده است . در ابتدا حافظه مورد نیاز برای اجرای برنامه از روی اندازه ای که در ساختار فایل به نام Image Size تعریف شده ( که متفاوت از سایز واقعی فایل است ) تخصیص می یابد و به صورت مجازی در آدرس مشخص شده به نام Image Base مپ می شود. بعد اگر بطور خیلی خلاصه بگوییم فایل در حافظه تخصیص یافته بارگذاری می شود ( مسایل مختلفی در این زمینه تاثیر گذار است ، مثلا اینکه نوع داده هر بخش Section از فایل چیست و ... ) . در مرحله بعد چنانچه فایل شما Relocation Table داشته باشد ، تمام آدرسهای قابل جابجا شدن در حافظه با توجه به جایی که فایل Load شده تغییر می کند . در پایان بخشی از فایل که جدول API بکار رفته در فایل اجرایی است ( Import Table ) خوانده شده و با مشخص شده آدرس مجازی مپ شدن هر تابع در حافظه ( توابع موجود در DLL های Import شده ) بخش آدرسها مقدار دهی می شود. بعد از آن اجرای برنامه به اولین دستور اجرای برنامه که در آدرس Load Address + Entry Point قرار دارد ، منتقل می شود.

morteza57
سه شنبه 24 بهمن 1385, 12:00 عصر
سلام
برنامه نویسان عزیز کی میدونه یه فایل exe به چه شکل اجرا میشه منظورم روش سیستم اجرای یک فایل exeاست
در واقع قصد دارم بتونم باداشتن bytes یک فایل exe در ram آن فایل رو اجرا کنم ؟
اگه مثلا تابعی یا API موجود باشه که به جای path فایل exe از ما byte های انو از ما بگیره و اجراش کنه
system shell exe هم search کردم به یه نتایجی رسیدم ولی فایده نداشته

منم یه زمانی دنبال این مطلب بودم ولی به این نتیجه رسیدم که امکان پذیر نیست.

rostamkhani
سه شنبه 24 بهمن 1385, 15:18 عصر
این نباید کار زیاد سختی باشه چون برنامه هایی هست که یه همچین کاری رو انجام میدن
و تو این برنامه ها از برنامه نویسی که من دنبالشم استفاده شده مثل molebox این برنامه
که در vb6 استفاده میشود قادر است هر فایل را حتی exe را داخل یک فایل قرار دهد یا با فایل exe اصلی برنامه یکجا متصل کند به طوری یک dir مجازی میسازد و شما میتوانید از آن فایلها استفاده کنید یا برای مثال فایل exe موجود در این dir مجازی را اجرا کنید بدون اینکه فایل داخل هارد کپی شود اجرا میشود به هر حال این کار شدنی و فکر نمیکنم زیادم سخت باشه
زبان برنامه نویسیشم مهم نیست اگه کسی اطلاعاتی داره ممنون میشم کمک کنه

morteza57
سه شنبه 24 بهمن 1385, 15:42 عصر
این نباید کار زیاد سختی باشه چون برنامه هایی هست که یه همچین کاری رو انجام میدن
و تو این برنامه ها از برنامه نویسی که من دنبالشم استفاده شده مثل molebox این برنامه
که در vb6 استفاده میشود قادر است هر فایل را حتی exe را داخل یک فایل قرار دهد یا با فایل exe اصلی برنامه یکجا متصل کند به طوری یک dir مجازی میسازد و شما میتوانید از آن فایلها استفاده کنید یا برای مثال فایل exe موجود در این dir مجازی را اجرا کنید بدون اینکه فایل داخل هارد کپی شود اجرا میشود به هر حال این کار شدنی و فکر نمیکنم زیادم سخت باشه
زبان برنامه نویسیشم مهم نیست اگه کسی اطلاعاتی داره ممنون میشم کمک کنه

این گونه نرم افزار هایی رو که شما مثال زدید رو من هم دیدم ، درسته که این نرم افزار ها فایلها رو به هم متصل می کنند و برای اجرای فایل EXE هم از تکنیک های خاصی استفاده می کنند ولی من فکر می کنم در هر حال فایل EXE از روی هارد دیسک Execute می شه در حالی که ما در حقیقت به دنبال این هستیم که فایل EXE رو در داخل حافظه اصلی اجرا کنیم

SYSMAN
سه شنبه 24 بهمن 1385, 18:39 عصر
این گونه برنامه ها به این شکل کار می کنند که فایل اجرایی مورد نظر رو دریافت کرده و درون یک فایل اجرایی جدید قرار می دهند و به دو صورت هستند:
Packer: که فقط فایل دریافتی رو پک می کنند.
Encrypt: که علاوه بر پک کردن فایل رو به صورت رمز در میاره.

در هنگام اجرای برنامه فایل اجرایی مورد نظر شما مستقیما روی حافظه باز می شه و در هیچ جایی روی دیسک باز نمی شه.
استفاده از این روش جهت جلوگیری از دستیابی افراد به فایل اصلی برنامه استفاده می شود.
البته طبیعی است سرعت اجرای برنامه در این حالت کمتر از حالت عادی می باشد.

rostamkhani
چهارشنبه 25 بهمن 1385, 00:18 صبح
من کاری به این نرم افزار ها ندارم برای مثال گفتم .
بیشتر بحث من همون اجرای فایل exe در ram و با در دست داشتن bytes آن فایل exe
اگه میدونید راهنمایی کنید نگین نمیشه که تو برنامه نویسی کار نشد نداره

lizbazar
سه شنبه 04 فروردین 1388, 22:50 عصر
میشه راجع به relocation table بیشتر توضیح بدین ؟؟؟؟؟