PDA

View Full Version : چسبیدن DLL به فایل EXE



dkhatibi
یک شنبه 21 خرداد 1385, 21:43 عصر
برنامه ای داریم که حاوی یک Dll می باشد می خواهیم فایل اجرایی که از این Dll استفاده می کند طوری با Dll ادغام شود که لزومی نداشته باشیم Dll را به عنوان یک فایل مجزا صدا کنیم
آیا راهی به ذهنتان می رسه؟!!!

Hamid_PaK
دوشنبه 22 خرداد 1385, 04:22 صبح
میتوانید تمامی توابع Exported رو خودتون بازنویسی کنید ...

یا حق ...

shobair
دوشنبه 22 خرداد 1385, 07:43 صبح
برنامه ای داریم که حاوی یک Dll می باشد می خواهیم فایل اجرایی که از این Dll استفاده می کند طوری با Dll ادغام شود که لزومی نداشته باشیم Dll را به عنوان یک فایل مجزا صدا کنیم
آیا راهی به ذهنتان می رسه؟!!!

سلام
یک Encryptor به نام MoleBox اینکار رو انجام میده، به زیبائی!!!!

شبیر

dkhatibi
دوشنبه 22 خرداد 1385, 10:08 صبح
البته من Dll ی که دارم سورسش معلوم نیست به چه زبانیه چون حجمش واقعا کمه(17kb)

dkhatibi
دوشنبه 22 خرداد 1385, 13:13 عصر
این برنامه را نصب کردم اما فایل ادغام شده به درستی کار نمی کنه(با آنکه اجرا می شه)
مثلا فایلهایی که باید کپی کنه را نمی کنه و یا اگر باید برنامه ای را اجرا کنه که با اون ادغام شده این کار را انجام نمی ده

dkhatibi
چهارشنبه 24 خرداد 1385, 18:23 عصر
دوستان گرامی آیا نظر دیگری ندارید؟

dkhatibi
یک شنبه 12 شهریور 1385, 08:24 صبح
این برنامه را نصب کردم اما فایل ادغام شده به درستی کار نمی کنه(با آنکه اجرا می شه)
مثلا فایلهایی که باید کپی کنه را نمی کنه و یا اگر باید برنامه ای را اجرا کنه که با اون ادغام شده این کار را انجام نمی ده

oVERfLOW
یک شنبه 12 شهریور 1385, 09:11 صبح
شما دو تا راه دارید
اول استفاده از همون روشی که دوستان گفتن
یعنی ادغام هر دو فایل در یک فایل دیگه
به طوری که هر دو فایل در یه مسیر موقتی باز بشن و از اونجا اجرا بشن

و روش دوم تبدیل فایل DLL به فایل Static Lib و ادغام در فایل اجرایی خودتون
البته بستگی داره که با چه زبانی دارید کار می‌کنید و اینکه بتونه فایل LIB رو داخل خودش ادغام کنه یا نه...
روش دوم یه مقداری مشکله و نیاز به کمی وقت گذاشتن داره
برنامه هم برای انجام این کار هست اسمش هم DLLtoLib هست

dkhatibi
یک شنبه 12 شهریور 1385, 12:59 عصر
لینک این برنمه رو دارید؟

oVERfLOW
دوشنبه 13 شهریور 1385, 10:36 صبح
این اولین نتیجه‌ی جستجو توی گوگل با عبارات کلیدی: dll to lib download

http://www.shareup.com/DLL_to_Lib-download-3932.html

Inprise
سه شنبه 14 شهریور 1385, 18:40 عصر
از DLLtoLib نمیتونی استفاده کنی ، چون فقط فرمت COFF ( که آبجکت فایلهای ساخته شده توسط کامپایلرهای مایکروسافت ازش تبعیت میکنن ) رو تولید میکنه . دلفی ( و البته BCB ) از فرمت OMF استفاده میکنند . پس از تولید LIB به فرمت COFF باز هم نمیتونی امیدوار باشی که استفاده از CofftoOmf بتونی از خروجی اش استفاده کنی .

اگه سورس DLL ات رو داری میتونی ازش یک Obj ( آبجکت فایل با فرمت OMF ) بسازی و استاتیک به برنامه ات لینکش کنی . اگه سورس DLL‌ ات رو نداری بهترین راه استفاده از یک Bundler هست که در زمان اجرا DLL ات رو کنار فایل اجرائی بنویسه و در دسترس باشه و پس از اجرا باز حذفش کنه . میشه روشهای پیچیده تری رو پیشنهاد کرد ، که بعید هم هست به دردت بخورن ، مثلا" میتونی در صورتی که فقط تابع ( و نه کلاس ) از DLL‌ اکسپورت شده باشه ، یک Section جدید به فایل اجرائی ات ، محتوی کد باینری DLL اضافه کنی و کد رو بهش اضافه کنی و در زمان اجرا با استفاده از اشاره گری به آفست فانکشن مورد نظرت ، کدش رو اجرا کنی ، که به اندازه کافی پیچیده هست که قابل پیشنهاد نباشه . یه راه حل ساده استفاده از چیزهائی مثل PEBundle (http://www.bitsum.com/pebundle.asp) هست .

dkhatibi
چهارشنبه 15 شهریور 1385, 13:28 عصر
من برنامه ی مذکور را گرفتم .متاسفانه با اینکه برنامه اجرا می شه و بعضی کارها رو انجام می ده اما تابغ درون dll فرا خوانی نمی شه یا حذاقل کارشو انجام نمی ده.
آیا می شه این برنامه را طوری تعریف کرد که فایل اصلی و Dll را به پ.شه ای کپی کنه؟

dkhatibi
یک شنبه 19 شهریور 1385, 15:16 عصر
من DllToLib را به کار بردم و از Dll ی که ئر اختیار داشتم ی فایل lib ساخت
چه جوری می شه از این فایل استفاده کرد؟

SoftDevCo
یک شنبه 19 شهریور 1385, 17:58 عصر
دوسته عزیز حالا هدفتون از ادغام فایل ها چیه ؟

اگه می خوان مخفیش کنین کپیش کنین به هر جایی که می خواین و بعد با Regsvr32 ثبتش کنید.

oVERfLOW
دوشنبه 20 شهریور 1385, 11:22 صبح
هر DLL رو که نمی‌شه تبدیل کرد
DLL مورد نظر نباید در تابع dllMain کاری بکنه
چون اگه این طوری باشه دیگه توی Lib اون کارا انجام نمی‌شه...

باید ببینید Dll شما از چه نوعیه و شما چه کاری می‌خواید بکنید
در نهایت ممکنه مجبور بشید که فایل lib رو یه کم ویرایش کنید

برای استفاده اش هم که کافیه با کمک برنامه‌ی link اون رو به فایل‌های obj ساخته شده اتصال بدید .

dkhatibi
دوشنبه 20 شهریور 1385, 14:19 عصر
من می خوام فایل را به کاربر بدهم که نمی خوام از وجود ِ dll مطلع بشه.
ضمنا من با برنامه ی یاد شده dll را به lib تبدیل کردم اما فایل ایجاد شده یک فایل متنب نیست چه جوری اونو ویرایش می تونم بکنم
با تشکر از همه ی دوستان

oVERfLOW
دوشنبه 20 شهریور 1385, 15:24 عصر
شما باید مشخص کنید که dll شما از چه نوعیه و شما چه کاری انجام می‌ده
تا معلوم بشه اصلا تبدیلش به lib شدنی هست یا نه...

Inprise
دوشنبه 20 شهریور 1385, 15:59 عصر
dkhatibi : اگر بجای اتلاف وقت به توضیحاتی که ارائه شده با دقت توجه کنی مسیر صحیح مشخص شده . استفاده از DLLtoLib برای مسئله تو عملی نیست و جوابهای oVERFLOW کاملا" غیر فنی و فاقد صحت هست .

باید نمونه ای کاری رو که میخواهی انجام بدی و موفق نمیشی آپلود کنی که تست بشه . معمولا برنامه هائی مثل PEBundle مسائل ساده و پیش پا افتاده ای مثل این رو راحت حل میکنند ، ولی چون گفتی که نحوهء استفاده از یک LIB رو هم نمیدونی شاید جائی در مورد یک مسئله ساده خطا کرده باشی ، پس اگه میخواهی مشکلت حل بشه روش بهتر اینه که کدت رو آپلود کنی

dkhatibi
دوشنبه 20 شهریور 1385, 18:51 عصر
جناب Inprise با تشکر از لطف شما من دستورات گفته شده را مو به مو انجام داده ام .فایل dll به برنامه پیوند می خورد چون در حین اجرای برنامه هیچ خطایی مبنی بر عدم وجود dll نداریم. ضمنا این برنامه بعضی از کارها که مربوط به dll نیست را به خوبی انجام می دهد. اما تابع فراخوان از dll را انجام نمی دهد.
ضمنا اگر ممکنه در مورد استفاده از LIB توضیح بدین یا یک مبحث جدید ایجاد کنم؟!!!

Inprise
دوشنبه 20 شهریور 1385, 19:44 عصر
روتینی که از DLL استفاده میکنه و اون رو فراخوانی میکنه رو اینجا بنویس

dkhatibi
سه شنبه 21 شهریور 1385, 10:48 صبح
این برای فراخوان



function Start(WinHandle : HWND; MsgToSend : DWORD; IsDisable: Boolean) : boolean;
stdcall external MyDLLName name 'StartFunc';

Inprise
سه شنبه 21 شهریور 1385, 11:29 صبح
اگه دفعه بعد تمام کدی که نوشتی و مشکل داره رو ضمیمه نکنی جواب دیگری از من نخواهی دید . میتونی منتظر کمک سایرین باشی .

dkhatibi
چهارشنبه 22 شهریور 1385, 14:37 عصر
راههای بهتری بدهید دوستان عزیز