تبدیل فایلهای اجراییEXE به dll و روش استفاده از آنها

moortak

New Member
با سلام خدمت دوستان عزیز و پیشکسوتان و بزرگواران انجمن

این اولین پست منه
ایشالله از این به بعد زیاد مزاحم بشیم!

اصل مطلب:
آیا برنامه ای و یا پلاگین ای هست (که مطمئن م هست) که فایلهای اجرایی رو به فایل های دی ال ال تبدیل کنه؟
و اگر هست لطفا با توضیح کامل و روش استفاده ش بزارین

و این که چطور بتونیم توی پروژه استفاده کنیم

لازم به ذکر هست که فایلهای اجرایی هم با استفاده از خود ام ام بی ساخته شده اند.(سورس هم داریم در صورت نیاز به ایجاد تغییرات)
 

Silver Soft

کاربر متخصص مولتی مدیا بیلدر
:rose:سلام ، ورودتون رو به جمع بچه های بیلدری خوش آمد میگم ،

فکر میکنم شما با ساختار فایلهای DLL آشنایی ندارید که این سوال رو پرسیدید ، اول بگم که این کار امکان پذیر نیست ، DLL مخفف Dynamic Link Library هست که معنیش هم میشه " کتابخانه پیوند پویا " که دوستانی که آشنایی کمی با این نوع فایل ها دارن فقط میدونن که این فایل ها حاوی یکسری کد هستند ، ولی در اصل اسکلت این ساختار با فایل اجرایی exe فرق میکنه ، DLL ها به خودی خود قابل اجرا نیستند و نیاز به یک فرمانده که یک فایل Exe هست دارند ، ویندوز از این نوع فایل های برای مدیریت بهتر منابع و حافظه استفاده میکنه ، خوب با توجه به این توضیحات که دادم باید فهمیده باشید فایل های DLL ساختار خاص خودشون رو دارن و هیچ وقت نمیشه یه فایل اجرایی exe رو با یه برنامه تبدیلش کرد به DLL ، در ضمن اگر هم میشد فایلها ی بیلدر این امکان رو نداشت چون فرایند تولیدشون با فایلهای اجرایی استاندارد ویندوز فرق میکنه .

اگر خواستید بگید بیشتر توضیح بدم ، موفق باشید .
 
آخرین ویرایش:

BEHESHT

Well-Known Member
تمام فرموده های آقا مجتبی صحیح بود ، این کار در واقع به طور اتوماتیک غیر ممکن هستش ، ولی به صورت دستی اگر به زبون اسمبلی مسلط باشی ( یعنی واقعآ بخوریش اسمبلی رو) می تونی کد های اسمبلی رو از یک فایل exe با کلی زحمت و تلاش و هفته ها وقت Rip کنی و بعد بشنی کد های Rip شده ات رو در یک Dll در یک اسمبلر آماده استفاده کنی فک کنم یه پروژه خیلی خیلی کوچولو یه 6 ماهی وقت بگیره تازه اگه زبون اسمبلی رو از فارسی هم روون تر بلد باشی بخونی و تفسیر کنی،

اما به جای این که فایل های exe ات رو بخوای Dll کنی بشین فایل های MBD رو Dll کن فک کنم منظورم رو فهمیده باشی یعنی حالا که اونا با MMB نوشته شده به جای این از سورس های مورد نظر استفاده کن یه جور هایی واست کار Dll رو انجام می دن یعنی به جای کامپایل کردن فایل ترو export کن بعد با دستور زیر لود کن:

کد:
RunMBD("<SrcDir>\X.mbd","")
 

moortak

New Member
فکر منظور دوسومون همون dll های خود بیلدر باشه ( که به صورت دستی میشه درست کرد )
کافیه موقع ذخیره سازی پسوند رو dll کنی

واقعا ایول دارن کل بچه های فروم (به مولا!)

این آخریه تایید شد.
فقط یه چیز دیگه (با یه مثال ساده بگم بهتره)
این راه آخری رو گرفتم چطور باید دی ال ال کرد

اما برای لود کردنش چطور ؟

به فرض من یه مجموعه نرم افزاری دارم طراحی میکنم که برای هر دسته از نرم افزار ها به صورت جداگانه (آنتی ویروس، ابزار کمکی، شبکه ای، مسنجر ها و ....) میخوام یه فایل دی ال ال داشته باشم (که تا اینجاشو اوکی شده.)

حالا فرض کنیم که بخوایم اون فایلهای dll ساخته شده(که در اصل exe هستند.) رو داخل یه فایل اصلی exe لود کنیم .

چطور ممکنه ؟

توضیح:
یادمه یه چند سال قبلها (2005-2004) مجموعه KING یه همچین کاری رو کرده بود. و چند روز پیش هم یه نرم افزار نوشته شده با MMB رو دیدم که از همین روش استفاده کرده بود.(M30 Win Assistant 1.6)

برای همین خواستم دنبالش رو بگیرم....
نمیدونم منظورم رو گرفتید یا نه!!!:green:
 

BEHESHT

Well-Known Member
اما به جای این که فایل های exe ات رو بخوای Dll کنی بشین فایل های MBD رو Dll کن فک کنم منظورم رو فهمیده باشی یعنی حالا که اونا با MMB نوشته شده به جای این از سورس های مورد نظر استفاده کن یه جور هایی واست کار Dll رو انجام می دن یعنی به جای کامپایل کردن فایل ترو export کن بعد با دستور زیر لود کن:

کد:
RunMBD("<SrcDir>\X.mbd","")

به متن بالا دقت کن توضیح دادم صفحه رو که طراحی می کنی از منوی file بعد گزینه ی Compress & Export فایل هات رو هر جوری دلت می خواد همراه با پسورد یا ... انتخاب کن بعد موقع save به جای مثلا X.mbd اینجوری Save کن X.dll بعد طبق روشی که بالا گفتم تو برنامه ات لودش کن:wink:

بازم مشکلی بود در خدتیم:rose:
 
سلام

من این کار رو کردم و یک برنامه ساده با مولتی مدیا بیلدر ساختم و به صورت dll ذخیره کردم . تو یک برنامه دیگه هم همون طور که behesht گرامی فرمودند لودش کردم و جواب داد ( چون توی پوشه تمپ فایل dll رو میدیدم ) ولی توی خود برنامه اجرایی خبری نبود صفحه سفید دیده میشد . میشه لطف کنید اشکال کارم رو بگید با یک نمونه ساده درست کنید و اینجا بزارید ؟

راستی این روش میتونه قسمتی از پروژه رو که ارزش بیشتری داره رو محافظت کنه ( برا جلوگیری از دیکامپایل شدن ) .

ممنون از راهنماییتون :rose:
 
آخرین ویرایش:

Silver Soft

کاربر متخصص مولتی مدیا بیلدر
راستی این روش میتونه قسمتی از پروژه رو که ارزش بیشتری داره رو محافظت کنه ( برا جلوگیری از دیکامپایل شدن ) .
خیر ،بارها و بارها دیگر دوستان و خود من گفتیم ، بیلدر یک کامپایلر نیست ، کامپایلر یعنی نرم افزاری که کد نوشته شده توسط برنامه نویس را به کد قابل درک برای اسمبر تبدیل میکنه و اسمبلر هم کد اسمیلی رو به ماشین ...

:-?این رو به یاد داشته باشید چیزی به نام کامپایلر جدید دیگه هیچ وقت به وجود نمیاد ، یعنی کامپایلر جدیدی با نام X چون نوشتن یک کامپایلر اگر چند صد نفر متخصص روش کار کنن در بهترین شرایط چند ده سال طول میکشه و کامپایلرهای فوق العاده قدرتمندی که الان داریم از اونها استفاده میکنیم مثل C ، Pascal همه حاصل ده ها سال برنامه نویسی متخصصان و ... هستند تا به اینجا رسیدند ، پس بحث کامپایلر برای همیشه منتفی شده ... ، این زبان هایی هم که جدیدا داره میاد و شدیدا منتقدشون هستم مثل : VB.Net و #C یا ... کامپایلر نیستن بلکه مفسر هستن و بحثشون کلا جداس ...

در ضمن با توجه به اینکه بیلدر یک کامپایلر نیست پس در هر صورت به دست آوردن سوسرس کدش کار چند دقیقه وقت گزاشتن است :wink:
 

evil_gates

اين نيز بگذرد ...
سلام

من این کار رو کردم و یک برنامه ساده با مولتی مدیا بیلدر ساختم و به صورت dll ذخیره کردم . تو یک برنامه دیگه هم همون طور که behesht گرامی فرمودند لودش کردم و جواب داد ( چون توی پوشه تمپ فایل dll رو میدیدم ) ولی توی خود برنامه اجرایی خبری نبود صفحه سفید دیده میشد . میشه لطف کنید اشکال کارم رو بگید با یک نمونه ساده درست کنید و اینجا بزارید ؟

راستی این روش میتونه قسمتی از پروژه رو که ارزش بیشتری داره رو محافظت کنه ( برا جلوگیری از دیکامپایل شدن ) .

ممنون از راهنماییتون :rose:

دوست عزیز

لطفا نمونه ای که ساختید و این اشکال رو داره بزارید تا رفعش کنیم.

در ضمن فکر میکنم منظور جناب behesht رو کامل متوجه نشدید یا روشی که ایشون گفتن رو اشتباه به کار گرفتید.

شما وقتی میخواید یه پروژه با mmb تولید کنید با توجه به حجم و نوع برنامتون باید صفحات متفاوتی رو ایجاد کنید. این صفحات وقتی ذخیره میشن پسوند mbd میگیرن و فقط با نرم افزار بیلدر قابل اجرا هستن.

پس برای اینکه کاربران دیگه هم بتونن این برنامه رو اجرا کنن لازمه شما حداقل یکی از فایلهای mbd که تولید کردید رو با گزینه Compile این نرم افزار exe کنید. و برای فراخوانی بقیه فایلها از فرمان RunMbd استفاده کنید.

اگه مسیرها رو درست تعریف کرده باشید میتونید تمام صفحات برنامتون رو به این ترتیب تو همون فایل exe لود کنید.

روشی که جناب behesht گفتن فقط به شما کمک میکنه که کمی ظاهر برنامه رو حرفه ای تر کنید. به این معنی که شما همون فایل mbd رو با Compress and Export با پسوند dll ذخیره می کنید. اما در باطن اتفاق خاصی نمیفته

در مورد سوال دومتون هم حداکثر کاری که می تونید انجام بدید اینه که برای این فایلها موقع export کردن پسورد بزارید یا گزینه add source layer رو فعال کنید.

موفق باشید
 

moortak

New Member
پس برای اینکه کاربران دیگه هم بتونن این برنامه رو اجرا کنن لازمه شما حداقل یکی از فایلهای mbd که تولید کردید رو با گزینه Compile این نرم افزار exe کنید. و برای فراخوانی بقیه فایلها از فرمان RunMbd استفاده کنید.

در آخر سر هم باید به جای x.mbd از x.dll استفاده کنید:green:(البته اگر در پسوند dll ذخیره کرده باشید)
 

mehrangan

New Member
ببخشید نمی دونم این پست مال کی است اما گفتم تایپک جدید نزنم

من تمام مراحل رو رفتم در قسمت کمپایل نوشتم x.dll و در قسمتی که خواستم این پروژه رو صدا بزنم نوشتم RunMBD("<SrcDir>\X.mbd","")
البته خودم هم نفهمیدم این چی می شه
چون که فایل با پسوند dll ذخیره می شه و فایل dll قابل اجرا نیست و دوم اینکه فایل با پسوند mbd فراخوانی می شه و ربطی به x.dll نداره
لطفا دوستان حرفه ای راهنمایی کنند.
 

the_king

مدیرکل انجمن
ببخشید نمی دونم این پست مال کی است اما گفتم تایپک جدید نزنم

من تمام مراحل رو رفتم در قسمت کمپایل نوشتم x.dll و در قسمتی که خواستم این پروژه رو صدا بزنم نوشتم RunMBD("<SrcDir>\X.mbd","")
کدوم مراحل، کدوم کامپایل، گفنته شده بود بجای کامپایل Export کنید :
یعنی حالا که اونا با MMB نوشته شده به جای این از سورس های مورد نظر استفاده کن یه جور هایی واست کار Dll رو انجام می دن یعنی به جای کامپایل کردن فایل ترو export کن بعد با دستور زیر لود کن:

کد:
RunMBD("<SrcDir>\X.mbd","")

همانطور که خودتون هم اشاره کردید، تغییر نام یک فایلی که ذاتا EXE است به DLL کاربردی نداره.
 

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

بالا