PDA

View Full Version : مقاله: ادغام خروجی چند Project در یک Solution { ادغام Dllها و Exeها در یک فایل Exe} آموزش نرم افزار IL



mhsmity
شنبه 30 شهریور 1392, 09:01 صبح
ادغام سازی خروجی چند Project در یک Solution


{ ادغام Dllها و Exeها در یک فایل Exe}


آموزش نرم افزار ILMerge.exe
با عرض سلام و خسته نباشید.
دلیل این ادغام سازی برای من: به این دلیل، امر ادغام سازی رو انجام می دهیم که تک تک این فایل ها برای ما ارزشمند بود و باید یک سری عملیات رمزنگار بر روی این فایل ها انجام شود با ادغام این فایل ها یک بار علمیات رمز نگاری خود را بر روی یک فایل انجام خواهیم داد.
طبق تصویر وقتی چند عدد Project در برنامه خودمان داشته باشیم. خروجی Build شده در پوشه bin\Debug به این شکل می باشد.


111024111023



file:///C:\Users\Smity\AppData\Local\Temp\msohtmlclip1\01\ clip_image002.gif


file:///C:\Users\Smity\AppData\Local\Temp\msohtmlclip1\01\ clip_image004.gif

همان طور که مشخص است به ازای هر Project ما یک خروجی درایم. برای ادغام این فایل ها در یک فایل باید از برنامه ILMerge.exe استفاده کنیم.
برنامه ILMerge.exe را نصب کرده و به مسیر زیر بروید: دانلود (http://www.microsoft.com/en-us/download/details.aspx?id=17630)


C:\Program Files\Microsoft\ILMerge
در این مسیر فایل نصب شده ILMerge.exe را کپی کرده و در پوشه دیباک خود کپی نماید.
فایل Run.Bat ایجاد کرد و داخل آن بنویسد cmd.exe و آن را ذخیره نماید. بعد از اجرای Run.Bat از پوشه Debug شما Cmd.exe در مسیر Debugپروژه فعلی شما باز خواد شود.


111025


file:///C:\Users\Smity\AppData\Local\Temp\msohtmlclip1\01\ clip_image006.gif
خط زیر را کپی و در Cmd.exe با موس خود جهت راحتی کار و تایپ نکردن پیست نماید.


ilmerge Merg.exe A.exe B.exe C.dll /out:All.exe /target:winexe
:Merg.exeنام پروژه اصلی که به صورت پررنگ در Solution وجود دارد.
A.exe B.exe C.dll: به ترتیب Exeها و Dllهای هستند که باید بافایل Merg.exe ادغام شوند.
/out: : این پارامتر نام فایل جدید ایجاد شده خروجی را مشخص می نماید.
همان طور که مشاهده کردین چند فایل را به یک فایل اجرای تبدیل کردیم، حالت های دیگر هم وجود دارد مثلا این چند فایل را تبدیل به یک Dll نماییم.
نکته: اگه تعداد Dllهای شما زیاد بود برای راحتی کار می توانید از پارامتر تتتت به صورت زیر استفاده نماید.

ilmerge Merg.exe A.exe B.exe *.dll /out:All.exe /target:winexe /wildcards
نکته: شما می توانید به راحتی تمام برنامه های WindowsFormsApplicatio خود را به نوع ClassLibrary تبدیل نماید فقط برای انجام این کا طبق تصویر زیر عمل نماید.(از Project خودتون Properties بگرید.)


111026


file:///C:\Users\Smity\AppData\Local\Temp\msohtmlclip1\01\ clip_image008.jpg
حال اگر فایل All.exe را با نرم افزار .NET Reflector 8.2 باز کنیم شکل زیر را خواهیم داشت.


file:///C:\Users\Smity\AppData\Local\Temp\msohtmlclip1\01\ clip_image010.gif




111027

barnamenevisjavan
یک شنبه 31 شهریور 1392, 16:59 عصر
یک سوال:
به فرض من توی برنامه A میگم که با شروع شدنش برنامه B رو باز بکنه(process.start(application.startup + "\\B.exe");
حالا اگر برنامه B داخل برنامه A مرگ شده باشه بازم برنامه B اجرا میشه؟

mhsmity
یک شنبه 31 شهریور 1392, 22:15 عصر
یک سوال:
به فرض من توی برنامه A میگم که با شروع شدنش برنامه B رو باز بکنه(process.start(application.startup + "\\B.exe");
حالا اگر برنامه B داخل برنامه A مرگ شده باشه بازم برنامه B اجرا میشه؟
با سلام از سوال شما متشکرم
نحوه اجرای برنامه b کاملا اشتبا ه می باشد.چون با روش زیر می توان خیلی مانور بیشتری داشت.
برای اجرای برنامه B کافی است بعد از اضافه کردن رفرنص برنامه B به برنامه A از دستوراتی شبیح دستورات زیر استفاده کنید.
B.Program p = new B.Program();
p.f("Ali");

خوب فکر کنم که مسئله شما از اینجا مطرح میشه.
بعد از این که برنامه A یک وابستگیDependencies به برنامه B پیدا کرد دیگر نمی توانیم برای برنامه B یک وابستگیDependencies از A ایجاد کنیم. یعنی هر دو از هم دیگر استفاده کنند.
و خطای زیر مواج خواهیم شد.
This dependency cannot be added because it will create a circular
dependency


حالا اگر برنامه B داخل برنامه A مرگ شده باشه بازم برنامه B اجرا میشه؟
اگر از مرگ منظور شما وابستگی Dependencies باشه.
بله.

perkas
دوشنبه 01 مهر 1392, 00:27 صبح
دلیل این ادغام سازی برای من: به این دلیل، امر ادغام سازی رو انجام می دهیم که تک تک این فایل ها برای ما ارزشمند بود و باید یک سری عملیات رمزنگار بر روی این فایل ها انجام شود با ادغام این فایل ها یک بار علمیات رمز نگاری خود را بر روی یک فایل انجام خواهیم داد.من با نظر شما زیاد موافق نیستم

این راه چطوره :
dll ها رو تو پوشه نرم افزار قرار نده و هر کدام رو جایی قرار بده
مثلا یکی تو پوشه ویندوز - یکی تو پوشه سیستم32 و ....
اینجوری امنیت نرم افزار بالاتر میره ( حد اقل در مقابل کرکرهای غیر حرفه ای )

mhsmity
دوشنبه 01 مهر 1392, 01:08 صبح
اگه صحبت از کرک های غیره حرفه ای باشه پس همون ابتدای کار حالشون رو بگیریم بهتره


dll ها رو تو پوشه نرم افزار قرار نده و هر کدام رو جایی قرار بده

چند تا اشکال داره:
1- هر دفعه که ویندوز عوض بشه باید برنامه دوباره نصب بشه؟
2- رمزنگاری این فایل ها چطوری انجام بشه؟
یعنی بعد از کد کردن و حفاظت کردن. برنامه می تونه به این فایل ها دسترسی داشته باشه؟ از چه روشی استفاده می کنید؟
3- اگه سورس برنامه رو بیرون بکشن مسیر پیدا کردن که کاری نداره
در وحله اول باید سورس فایل اصلی شکسته بشه پس این کپی در وحله دوم قرار داره
اگه صحبت از کرک های غیره حرفه ای باشه پس همون ابتدای کار حالشون رو بگیریم بهتره

perkas
دوشنبه 01 مهر 1392, 01:33 صبح
اگه صحبت از کرک های غیره حرفه ای باشه پس همون ابتدای کار حالشون رو بگیریم بهتره

چند تا اشکال داره:
1- هر دفعه که ویندوز عوض بشه باید برنامه دوباره نصب بشه؟
2- رمزنگاری این فایل ها چطوری انجام بشه؟
یعنی بعد از کد کردن و حفاظت کردن. برنامه می تونه به این فایل ها دسترسی داشته باشه؟ از چه روشی استفاده می کنید؟
3- اگه سورس برنامه رو بیرون بکشن مسیر پیدا کردن که کاری نداره
در وحله اول باید سورس فایل اصلی شکسته بشه پس این کپی در وحله دوم قرار داره
اگه صحبت از کرک های غیره حرفه ای باشه پس همون ابتدای کار حالشون رو بگیریم بهتره

جواب سوال 1 که معلومه .
جواب سوال 2 : کلی نرم افزار فری - کرک شده و پولی هست وشما قبل از کد کردن و حفاظت کردن مسیر رو براش مشخص میکنی ( آدرس فایل dll رو از تو سورس برنامه به سیستم 32 تغییر بده )
جواب3 : اگه از نرم افزار ضد دیباگ و کد کردن و گیج کننده خوبی استفاده بشه و خودتون هم یه الگویتم خوب برای وابسته کردنش به سخت افزار استفاده کنید تا حدی کار رو سخت میکنه

برای ششکستن سورس اصلی :
اگه فایل exe برای اجرا شرط خاصی داشته باشه و dll ها هم همین طور مراحل کرک بیشتر میشه
تازه اگه یکی از این dll ها پیدا نشه اون موقع قسمتی از برنامه کار نمیکنه ( بستگی به dll داره که چه کاری میکنه )

در ضمن
شما برنامه رو کد کردین ؟ پس مهندسی معکوس و اطلاعات رم و پشته سی پی یو چی ؟

shahryari
چهارشنبه 03 مهر 1392, 16:47 عصر
با تشکر از شما دوست عزیز که این برنامه رو معرف کردید و آموزشش رو گذاشتید
باعث شده که ایده کوچکی به ذهنم برسه و یک نرم افزار کوچک رو با توابع همین برنامه ilmerge (در کمتر از 3 ساعت) نوشتم امیدوارم به درد دوستان بخوره

111185

111186

دوستان عزیز برنامه نویس هرچه قدر فایل اگزه و دی ال ال دارید را بریزید درون یک پوشه و مسیرش رو به برنامه بدید
سپس اون فایل اجرایی اصلی را از دیتا گرید انتخاب کرده و دکمه select main exe file رو بزنید تا هم بعنوان فایل اجرایی اصلی انتخاب بشه و هم ورنش به فایل خروجی نسبت داده بشه
بعد هم پوشه خروجی برنامه رو انتخاب کنید و اسم فایل خروجی نهایی رو به برنامه بدید و دکمه create file رو بزنید

این هم لینک دانلود
http://arazsoft.hostraygan.com/Merge_engine/Arassoft_merg_engin.rar

hosein_h
پنج شنبه 04 مهر 1392, 11:41 صبح
با تشکر از شما دوست عزیز که این برنامه رو معرف کردید و آموزشش رو گذاشتید
باعث شده که ایده کوچکی به ذهنم برسه و یک نرم افزار کوچک رو با توابع همین برنامه ilmerge (در کمتر از 3 ساعت) نوشتم امیدوارم به درد دوستان بخوره

111185

111186

دوستان عزیز برنامه نویس هرچه قدر فایل اگزه و دی ال ال دارید را بریزید درون یک پوشه و مسیرش رو به برنامه بدید
سپس اون فایل اجرایی اصلی را از دیتا گرید انتخاب کرده و دکمه select main exe file رو بزنید تا هم بعنوان فایل اجرایی اصلی انتخاب بشه و هم ورنش به فایل خروجی نسبت داده بشه
بعد هم پوشه خروجی برنامه رو انتخاب کنید و اسم فایل خروجی نهایی رو به برنامه بدید و دکمه create file رو بزنید

این هم لینک دانلود
http://arazsoft.hostraygan.com/Merge_engine/Arassoft_merg_engin.rar
سلام
دوست عزيز دي ال ال هاي مربوط به استيمول ريپورت رو ساپورت نميكنه
توي تصوير هم شما از اين دي ال ال ها استفاده كردين اما موقع استفاده خطا ميده
لطفا راهمنايي بفرماييد

shahryari
پنج شنبه 04 مهر 1392, 18:48 عصر
سلام
دوست عزيز دي ال ال هاي مربوط به استيمول ريپورت رو ساپورت نميكنه
توي تصوير هم شما از اين دي ال ال ها استفاده كردين اما موقع استفاده خطا ميده
لطفا راهمنايي بفرماييد
دوست عزیز
در این تصویر که میبینید تعدادی از دی الا ال ها کم است و باید 5 یا 6 تا دی ال ال مربوط به استیمول را به برنامه اضافه کنید و من فکر نمیکنم خطایی رخ بدهد
در صورت بروز خطا ، متن خطا و یا تصویر خطا را بذارید تا برررسی بشه
یک کار دیگر هم بکنبد
همانند پست یک از کامند لاین استفاده کنید ببینید باز همان خطا را میدهد
متاسفانه من ویندوز مجازی ندارم تا فایل اجرایی را تست کنم ولی در ویندوز خودم تست کردم و بخوبی کار کرد البته شاید به دلیل اینکه استیمول نصب است

علی فتحی
چهارشنبه 16 اردیبهشت 1394, 01:12 صبح
کار دومی خیلی راحته ولی فایل ساخته شده اجرا نمیشه