PDA

View Full Version : حرفه ای: ساخت فایل اجرایی (exe)



AlgorithmX
سه شنبه 30 آذر 1389, 15:45 عصر
سلام بر آینده سازان جامعه برنامه نویسی...!

آیا میشه برنامه ای ساخت که بتواند خود فایل اجرایی طراحی کند مانند خود VB ؟ بله
چطوری ؟ !! Error !!

میشه راهنمایی کنید

pcdownload.bloghaa.com
چهارشنبه 01 دی 1389, 01:12 صبح
اول باید فهمید که منظور از ساخت فایل اجرایی چیست؟

1.ساختن کل یک فایل اجرایی توسط برنامه شما
1.نوشتن کل برنامه به صورت hex یا زبان ماشین
2.در دست داشتن کد اسمبلی و تبدیل آن به فایل اجرایی
3.در دست داشتن کد ویژوال بیسیک و تبدیل آن به فایل اجرایی
4.در دست داشتن کد زبان دیگر و تبدیل آن به فایل اجرایی توسط وی بی
5.ساختن یک زبان برنامه نویسی جدید و تبدیل کد های آن فایل اجرایی
6.ساخت فرمت اجرایی خصوصی مانند جاوا یا فلش.
2.تغییرات در برنامه ای که وجود دارد
1.تغییرات در ریسورس برنامه
2.تغییرات در خصوصیات اشیای برنامه
3.تغییرات در کد برنامه در حال اجرا
4.تغییرات در کد فایل اجرایی


1.1-شما میتوانید کل یک فایل اجرایی را که قصد ساخت آن را دارید.به صورت باینری در یک فایل
ذخیره کنید و برنامه را براحتی اجرا کنید.اما این کار نیاز به داشتن اطلاعات کافی از زبان ماشین و اطلاعات تخصصی سخت افزاری
دارد(البته برای کار های سیستمی).
1.2-پس برای ساخت یک فایل اجرایی تحت هر شرایط نیاز به کد های hex آن داریم حال اگر شما معادل hex دستورات اسمبلی را بدانید
در این صورت کار ساخت فایل اجرایی راحت تر خواهد شد.
1.3-در حالتی هم امکان دارد شما کد ویژوال بیسیکی دارید و می خواهید برنامه شما آن را تبدیل به
فایل exe کند برای این کار بهترین راه کمک گرفتن از خود کامپایلر وی بی است.
1.4-اما اگر شما کد زبان دیگر را در دست دارید و می خواهید آن را به فایل اجرایی تبدیل کنید
باز هم بهتر است از کامپایلر همان زبان استفاده کنید و اگر کامپایلر آن را ندارید کد ها را به کد های وی بی تبدیل کرده
و ازکامپایلر وی بی استفاده کنید.
1.5-اما برای ساخت زبان جدید وتبدیل کد های آن به فایل اجرایی یک راه این است که آنها را به زبان
اسمبلی معادل نویسی کرده و سپس آن را به hex وسپس در هارد ذخیره کنید.اگر یک روز شما شما موفق به چنین کاری شدید
در آن صورت شما یک کامپایلر و یک زبان جدید ساخته اید.
1.6-ساختن فرمت اجرایی جدید در این روش شما یک مفسر نیاز دارید و مسئولیت اجرای فرمت جدید شما به عهده مفسرتان خواهد
بود نه سیستم عامل و این کار محدودیت اجرا روی یک سیستم عامل خاص را از بین میبرد مانند جاوا و فلش.
در این روش مفسر شما که یک برنامه عادی می باشد خط به خط کد ها را خوانده و آنها را تحلیل و اجرا می کند.
ساخت چنین مفسر هایی چندان هم سخت نیست.

2.1-اما برای تغییر در ریسورس برنامه روش هایی در وی بی وجود دارد.به وسیله ریسورس
در بهترین حالت می توان ظاهر و منوها و آیکون ها ی یک فایل اجرایی را تغییر داد.
2.2-برای تغییر در خصوصیات اشیای برنامه در حال اجرا توابع api گوناگونی وجود دارد.
برای این کار هندل شی را به دست آورده و با ارسال یک پیغام به آن دستور تغییر خصوصیات را صادر می کنیم.
2.3-ولی تغییر در کد های یک برنامه در حال اجرا باید زبان اسمبلی یا ماشین بلد باشیم.چون کدها در ram فقط
برای ارسال به cpu نگه داری میشوند.و cpu هم فقط زبان ماشین می فهمد.
2.4-تغییر کد یک فایل exe روی هارد معمولا برای اجرا فایل exe دیگری که به انتهای فایل اصلی چسبیده استفاده
میشود که برای این کار هم باید زبان سطح پایین دانست اگر چه روش راحتتری هم برای این کار وجود دارد.


از این که امکان توضیح مفصل مطالب بالا امکان پذیر نیست عذر می خواهم.
چون هر یک از مطالب بالا فلسفه خاص خود را دارند که با چند سطر نوشتن فهمشان امکان پذیر نیست.

البته شما دوست عزیز اگه یک نمونه عملی ساده می خواهید چنیدین مورد در سایت وجود دارد.(جستجو کنید).

Slytherin
چهارشنبه 01 دی 1389, 08:23 صبح
یک نمونه ساده و عملی:
اینجا (http://barnamenevis.org/showthread.php?81542-%D8%A2%D8%B1%D8%B4%DB%8C%D9%88-%D8%B3%D9%88%D8%B1%D8%B3-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D9%88-%D8%A8%D8%AF%D8%B1%D8%AF%D8%A8%D8%AE%D9%88%D8%B1&p=1113377&viewfull=1#post1113377)

AlgorithmX
چهارشنبه 01 دی 1389, 12:21 عصر
Wwo.owW ممنونم از پاسخ گلتون :تشویق:
منظورم از این سوال این بود که بشه برنامه ای نوشت که به طور مثال با فشردن یک کامند و پر کردن 2 تکس باکس (گرفتن طول و عرض) برنامه در کنار خود یک فایل اجرایی (exe) بسازه که یک فرم در آن باز بشه که طول و عرضش برابر با همان طول و عرضی باشد که خودمان تعریف کردیم. یا برنامه ای که در زمان اجرا برنامه ی کوچک دیگری بسازد (خدایا منظورم رو چطوری بگم ؟؟) امید وارم متوجه شده باشید.
می دونم کار سختیه و زمام زیادی هم می خواهد و باید خیلی چیز ها در مورد کامپایلر ها بدونیم اما اگر یک راهنمایی مثال درست و حسابی که چطوری به کامپایلر ها نفوز کنیم و بهشون دستور بدیم بزنید ممنون میشم.(میدونم خیلی مطلب سنگینیه و توی این تایپیک جای توضیحات زیاد نیست!!)

محسن شامحمدی
چهارشنبه 01 دی 1389, 16:50 عصر
دوست عزيز براي اين كاري كه شما مي خواي انجام بدي حتما نيازي نيست كه خودت بشيني يك كامپايلر بنويسي Wow!
شما مي توني چيزي كه ساخته مي شه رو تبديل كني به كدهاي يك زبان خاص؛(مثلا دلفي , Vb,vc و ...) حالا تنها كاري كه لازمه انجام بدين اينه كه اين كدها رو به كامپايلر اون زبان بفرستين تا كامپايلرش واستون فايل اجرايي رو بسازه.
اين سيستم كاري تمامي نرم افزارهاي اتوران سازي نيز هست.
مي دونيد چرا اونا خودشون كامپايلر نمي نويسن.
چون براي نوشتن كامپايلر نياز به يك تيم فوق حرفه اي 50 يا 60 نفره هست كه بايد 1 سال يا بيشتر وقت بذارن.

AlgorithmX
پنج شنبه 02 دی 1389, 09:01 صبح
پس يک راهنمايي کنيد که چطوري بسازم؟؟؟

soheil_programmer
جمعه 10 دی 1389, 15:56 عصر
پس يک راهنمايي کنيد که چطوري بسازم؟؟؟

با سلام

شما میتونید هر دفعه که برنامتون اجرا در رخداد LOAD فرم طول و عرض فرمتون را از یک جایی مثلاً رجیستری یا حتی یک فایل تکست بخونید.

BlackPawn
شنبه 11 دی 1389, 10:41 صبح
برای انجام چنین کاری یه روش ساده هم وجود داره!
می تونی یه فایل اجرایی درست کنی که طبق دستورات جدیدش عمل کنه! یعنی در انتهای فایل اجرایی اصلی اطلاعاتی مربوط به کد های جدید رو بنویسی (یا در یه فایل کمکی) که توسط برنامه اصلی خونده و اجرا بشه

مثلا یه فایل کمکی ایجاد می کنی که برنامه اصلی بایت به باید بخونه و اجراش کنه
به عنوان مثال
بایت
1 خروج از برنامه
2 beep
3 تغیر رنگ فرم به صورت RGB با بایت های 4 و 5 و 6
4
5
6
7 ماکسیمایز
8 مینی مایز
...

pcdownload.bloghaa.com
دوشنبه 13 دی 1389, 01:51 صبح
سلام
یکی از بهترین روش ها همونی بود که آقایsoheil_programmer گفتند.
به نظر من هر قدر که یک روش رو خصوصی تر کنید کنترل بهتری روی آن دارید مثلا روشهای آماده ای مثل استفاده از property bag هم وجود دارد.

علیرضا110
دوشنبه 16 شهریور 1394, 14:03 عصر
از اين تايپيك خيلي گذشته ولي گفتم شايد كمك كنه

توي دلفي يكسري كامپوننت هستش كه مي تونه كمك كنه
شبيه مثالي كه براتون ميزارم مي توانيد حتي كد نويسي هم بكنيد

http://s3.picofile.com/file/8210751076/code_delphi_to_form.rar.html

دانلود (http://s3.picofile.com/file/8210751076/code_delphi_to_form.rar.html)