PDA

View Full Version : مخفی کردن dll های پروژه



ali_mnkt
دوشنبه 06 مهر 1388, 23:46 عصر
سلام خدمت دوستان

همون طور که می دونید اگه از یه پروژه set up بگیریم کلیه dll های استفاده شده در پروژه

در فولدری که برنامه در اونجا قرار داره کنار فایل اجرایی برنامه قرار می گیرن.

خوب چطور می شه این dll ها را از دسترس کاربران خارج کرد و کاربران نتوانند به آنها دسترسی

داشته باشند ؟

cimiarnm
سه شنبه 07 مهر 1388, 00:01 صبح
دوست عزیز اگر شما سورس این فایلها را داشته باشید ( مثلا در حالتی که خودتان یک فایل dll را نوشته اید) میتوانید به جای اینکه کد را بصورت فایل dll قرار دهید در پروژه تان میتوانید انرا بصورت یک کلاس به پروژه خود اد کنید

Happy_davood
سه شنبه 07 مهر 1388, 08:38 صبح
یه روش بهتر هم هست که مجور نمیشید سورس DLL ها را وارد برنامه بکنید .

من خودم از این روش استفاده می کنم . با استفاده از SmartAssembly حتی اگه Smart کردن برنامه هم براتون مهم نباشه می تونید DLL هاتون رو بچسبونید به EXE . این برنامه خودش ازتون سئوال می کنه که مایل به انجام این کار هستید . خوب علاوه بر این یه سری مزایای دیگه هم داره ایم برنامه در کنار این کار میتونید ازش استفاده کنید .

ali_mnkt
چهارشنبه 08 مهر 1388, 22:43 عصر
یه روش بهتر هم هست که مجور نمیشید سورس DLL ها را وارد برنامه بکنید .

من خودم از این روش استفاده می کنم . با استفاده از SmartAssembly حتی اگه Smart کردن برنامه هم براتون مهم نباشه می تونید DLL هاتون رو بچسبونید به EXE . این برنامه خودش ازتون سئوال می کنه که مایل به انجام این کار هستید . خوب علاوه بر این یه سری مزایای دیگه هم داره ایم برنامه در کنار این کار میتونید ازش استفاده کنید .


مرسی دوست عزیز از راهنماییت فقط اگه لطف کنی و این روش رو یکم توضیح بدی ممنون

می شم

اَرژنگ
پنج شنبه 09 مهر 1388, 08:03 صبح
سلام خدمت دوستان

همون طور که می دونید اگه از یه پروژه set up بگیریم کلیه dll های استفاده شده در پروژه

در فولدری که برنامه در اونجا قرار داره کنار فایل اجرایی برنامه قرار می گیرن.

خوب چطور می شه این dll ها را از دسترس کاربران خارج کرد و کاربران نتوانند به آنها دسترسی

داشته باشند ؟

دلیل احتیاج را بیان کنید. من تاحالا کاربری ندیدم که کارش را بزارو و با اسمبلیهایه (دی‌ال‌ال ماله وین ۳۲ است) کنار برنامه بازی کنه. اگر نیاز واقعی برایه این چنین کاری را بیان کنید شاید بتونیم یک روش حرفه‌ای اراعه بدیم.

fazel-d
پنج شنبه 09 مهر 1388, 11:11 صبح
خوب شما می تونید یه فایل Batch بنویسید که شامل:

Attrib +h +r +a FileName.DLL

باشه و در فرم لود برنامه چک بشه که فایل DLL خاصیت Hidden داره یا نه که در صورت اسنکه نه هست فایل bat رو اجرا کنه (با کلاس Process )

mohsen-unique
شنبه 11 مهر 1388, 20:01 عصر
شما می تونید با استفاده از برنامه ی reflector سورس dll هاتون رو باز کنید و از کد اونها استفاده کنید
از اینجا قابل دانلوده
http://reflector.red-gate.com/
http://www.brothersoft.com/reflector-113203.html

ali_mnkt
شنبه 11 مهر 1388, 23:11 عصر
دلیل احتیاج را بیان کنید. من تاحالا کاربری ندیدم که کارش را بزارو و با اسمبلیهایه (دی‌ال‌ال ماله وین ۳۲ است) کنار برنامه بازی کنه. اگر نیاز واقعی برایه این چنین کاری را بیان کنید شاید بتونیم یک روش حرفه‌ای اراعه بدیم.

مثلا فرض کنید شما یک کنترل ساختید(dl l کردیش ) و در یک پروژه از اون استفاده کردی خوب اون

dll کنار فایل exe در set up قرار می گیره . خوب حالا اگه این برنامه set up رو به کسی بدی

اون می تونه از طریق برنامه های decompiler اون dll رو باز کنه و به کدهای داخلش دسترسی

پیدا کنه . خوب حالا چطوری می شه این dll ها رو از دید کاربر مخفی کرد ؟

abi_sarab
دوشنبه 13 مهر 1388, 08:01 صبح
سلام.
این یکی از سؤالات من هم هست.
ولی متأسفانه هیچ کس جوابی براش نداره.
اگه تونستید جواب پیدا کنید خیلی خوبه.

اَرژنگ
دوشنبه 13 مهر 1388, 08:19 صبح
مثلا فرض کنید شما یک کنترل ساختید(dl l کردیش ) و در یک پروژه از اون استفاده کردی خوب اون

dll کنار فایل exe در set up قرار می گیره . خوب حالا اگه این برنامه set up رو به کسی بدی

اون می تونه از طریق برنامه های decompiler اون dll رو باز کنه و به کدهای داخلش دسترسی

پیدا کنه . خوب حالا چطوری می شه این dll ها رو از دید کاربر مخفی کرد ؟
این را به شما گفتن یا اینکه میدانید همچین چیزی هست؟
خودتان امتحان کردید؟
اگر ممکن است، صحت اینکه با این روش میشه که کمپوننت را سورس کدش را کامل بدست آورد را نشان بدید.

اَرژنگ
دوشنبه 13 مهر 1388, 08:21 صبح
سلام.
این یکی از سؤالات من هم هست.
ولی متأسفانه هیچ کس جوابی براش نداره.
اگه تونستید جواب پیدا کنید خیلی خوبه.
از چه لحاض ؟
مشکل اصلیتان همین است که نمیخواهید به این روش به سورس کمپوننتان دسترسی داشته باشند؟

xvision
پنج شنبه 14 آبان 1388, 11:55 صبح
دوست عزيز
ممكنه من از dll هايي استفاده كنم كه بابتش هزينه كرده باشم و نخوام ديگران بهش دسترسي پيدا كنن
و از همه اينها گذشته كسي مثل من ميخواد بدونه چطوري ميشه dll ها رو كاري باهاشون كرد كه برنامه براي دسترسي بهشون مشكلي نداشته باشه ولي ديگران نتونن اونها رو ببينن يا درنهايت ازشون استفاده كنن

ممنون ميشم راهنمايي كنن اساتيد

اَرژنگ
پنج شنبه 14 آبان 1388, 16:48 عصر
ممكنه من از dll هايي استفاده كنم كه بابتش هزينه كرده باشم و نخوام ديگران بهش دسترسي پيدا كنن
و از همه اينها گذشته كسي مثل من ميخواد بدونه چطوري ميشه dll ها رو كاري باهاشون كرد كه برنامه براي دسترسي بهشون مشكلي نداشته باشه ولي ديگران نتونن اونها رو ببينن يا درنهايت ازشون استفاده كنن

ممنون ميشم راهنمايي كنن اساتيد

فرض کنیم که این اسمبلیها ها کاملا در دسترس باشند، ۲ تا سوال دارم
۱.این چه نوع اسمبلیهایی هستند که انقدر مهمند کسی بهشان دسترسی نداشته باشد؟
۲.تا حالا حالتی که یکی اسمبلی را به این شکلی که میخواهید از دسترسی بهش جلوگیری کنید شده اصلاً استفاده کنه؟ با اینکه تمام اسمبلیهایه دات‌نت کاملا در اختیار هستند، با تمام کتابها و متنهایه کمکی که موجود است بازهم برایه استفاده ازشان خیلیها اشکال دارند، حالا یک اسمبلی بخصوص معلوم نیست چه کاری انجام میده را کدام کاربر میاد ازش استفاده کنه؟

باید ببخشید ولی در مورد اهمیت داشتن این مطلب من اصلاً قانع نیستم که به صرف کردن وقت برایه پیدا کردن جواب بیارزه، اگر کسی مثال واضحتری دارد که این حالت واقعا مهم است و یک لینک و یا مقاله‌ای را نشان بده ، در اون حالت به فکر کردن بر روش میارزه.

موفق باشید

xvision
پنج شنبه 14 آبان 1388, 17:10 عصر
جناب ارژنگ عزيز
شما يا جواب سوال رو مي دونيد يا نمي دونيد
فكر نمي كنم اين تاپيك براي اين ايجاد شده باشه كه در مورد اهميت يا بي اهميت بودن مخفي كردن dll ها بحث بشه بنابراين بيشتر لطف كنيد و به جواب موضوع فكر كنيد
ببينيد براي شخص من همين كه بتونم dll هام رو از توي برنامه جمع كنم و بفرستمشون توي پوشه system32 هم رضايت بخشه چون ديگه توي چشم نيستن ولي نمي دونم بايد چيكار كنم كه هم برنامه بهشون دسترسي داشه باشه و هم توي اون پوشه خاص باشن
البته ميشه موقع نصب اونها رو هر جايي فرستاد ولي چطور بايد برنامه اونها رو پيدا كنه؟!
حداقل در اين مورد جوابي اگه دارين لطف كنيد و بفرماييد

اَرژنگ
جمعه 15 آبان 1388, 00:49 صبح
جناب ارژنگ عزيز
شما يا جواب سوال رو مي دونيد يا نمي دونيد
فكر نمي كنم اين تاپيك براي اين ايجاد شده باشه كه در مورد اهميت يا بي اهميت بودن مخفي كردن dll ها بحث بشه بنابراين بيشتر لطف كنيد و به جواب موضوع فكر كنيد
ببينيد براي شخص من همين كه بتونم dll هام رو از توي برنامه جمع كنم و بفرستمشون توي پوشه system32 هم رضايت بخشه چون ديگه توي چشم نيستن ولي نمي دونم بايد چيكار كنم كه هم برنامه بهشون دسترسي داشه باشه و هم توي اون پوشه خاص باشن
البته ميشه موقع نصب اونها رو هر جايي فرستاد ولي چطور بايد برنامه اونها رو پيدا كنه؟!
حداقل در اين مورد جوابي اگه دارين لطف كنيد و بفرماييد

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

برنامه‌نویسی به خودی خود یک کار پیچیده است، با اضافه کردن کارهایه بی‌دلیل و بیمنطق و بی‌فلسفه نباید بیشتر پیچیده بشه.

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

حالا دلیل استفاده برایه چنین روشی واقعا چی هست؟

دلیل اینکه میپرسم این است که در هیچ جایه معبتری احتیاج به چنین روشی اشاره نشده، اگر دلیل معتبر برایه اینکار هست اونوقت به پیدا کردن جوابش میارزه اگر نیست زمان و عمر کوتاه است و بیخودی نمیشه هدر داد.

xvision
جمعه 15 آبان 1388, 01:21 صبح
ببينيد
شما اينطور فرض كنيد كه من ميخوام dll هام رو بريزم توي پوشه System32 و خلاص نمي خوام كنار فايل exe برنامه باشن چطوري بايد برنامه اونها رو پيدا كنه ؟!
اصلا از بقيه بگذريد و لطفا همين رو براي من توضيح بدين كه آيا ميشه اين كار رو كرد يا نه و اگر ميشه چطور همين و ممنون

اَرژنگ
جمعه 15 آبان 1388, 02:23 صبح
ببينيد
شما اينطور فرض كنيد كه من ميخوام dll هام رو بريزم توي پوشه System32 و خلاص نمي خوام كنار فايل exe برنامه باشن چطوري بايد برنامه اونها رو پيدا كنه ؟!
اصلا از بقيه بگذريد و لطفا همين رو براي من توضيح بدين كه آيا ميشه اين كار رو كرد يا نه و اگر ميشه چطور همين و ممنون

من فکر کنم شما دنبال داشتن اسمبلیهاتان در GAC هستید. اینکه نمیشه قایم کردن! روش معمولی است که قدیمیش همان داشتن دی‌ل‌ال‌ال در فلدر سیستم۳۲ بود. در همین تالار در مورد استفاده کردن از GAC قبلاً بحث شده بود.

xvision
جمعه 15 آبان 1388, 11:10 صبح
براي من فرق زيادي نميكنه فقط ميخوام تا حد امكان dll هام دور از دسترس كاربر و متمركز باشنو ظاهرا منطقي ترين راه همينه كه مثلا توي فولدر System32 باشن !


در همین تالار در مورد استفاده کردن از GAC قبلاً بحث شده بود.
خيلي سرچ كردم GAC رو ولي متاسفانه چيزي پيدا نكردم
ممكنه ايراد از موتور جستجوي سايت باشه هرچند من از گوگل هم كمك گرفتم !
در هر حال اگر آدرس مبحث رو دارين لطف كنيد آدرس رو بگذاريد

seniamail
جمعه 15 آبان 1388, 15:29 عصر
بهترین گزینه استفاده از نرم افزار Reactor است
با این نرم افزار میتونید dllها و برنامتون رو یکی کنید

xvision
جمعه 15 آبان 1388, 17:03 عصر
بهترین گزینه استفاده از نرم افزار Reactor است
با این نرم افزار میتونید dllها و برنامتون رو یکی کنید
دوست خوبم كمي توضيح بده و ضمنن اگر ميشناسي يه آدرسي چيزي براي دانلود برنامه هم بده فقط گفتن يك كلمه كه مشكل رو حل نمي كنه !

xvision
جمعه 15 آبان 1388, 19:05 عصر
من برنامه رو پيدا و دانلود كردم البته تريال هستش ( فعلا ) ولي براي تست كافيه
اگر كسي از دوستان با اين برنامه كار كردن 1 توضيح مختصي اگه ميتونن بدن ممنون ميشم

seniamail
جمعه 15 آبان 1388, 19:18 عصر
دوست خوبم كمي توضيح بده و ضمنن اگر ميشناسي يه آدرسي چيزي براي دانلود برنامه هم بده فقط گفتن يك كلمه كه مشكل رو حل نمي كنه !

این هم آدرس وب سایت این برنامه
http://www.eziriz.com/

کار با برنامه بسیار ساده است نیاز به آموزش خاصی نداره

esmartiz_red
جمعه 15 آبان 1388, 19:23 عصر
دوست عزیز به نظر من هم بهترین گزینه استفاده از SmartAssembly
در ضمن این دوست خوبمون آقای آژرنگ بیشتر دنبال اینه که چرا دوستان دیگه می یان اینجا و می خوان کاری رو انجام بدن و فقط می خواد دلیل رو بدونه ( ماشالله خیلی کنجکاوه :بامزه:)

xvision
جمعه 15 آبان 1388, 20:04 عصر
کار با برنامه بسیار ساده است نیاز به آموزش خاصی نداره

ببين من فايل Merg رو ميسازم خوب با اين بايد چه كنم ؟!
يا مثلا وقتي فايل EXE و dll ها رو يكي ميكنه حالا چطوري بايد ازش استفاده كرد من وقتي روش كليك ميكنم ( روي فايل ساخته شده ) ميگه اين فايل protect شده همين !
در همين موردها اگه ميتونيد كمي توضيح بدين
ممنون

misoft.ir
شنبه 16 آبان 1388, 00:56 صبح
سلام
چند تا برنامه در این رابطه میتونید از وبلاگ یکی از دوستان به آدرسhttp://freecomponents.blogfa.com/
دانلود کنید

اَرژنگ
شنبه 16 آبان 1388, 13:10 عصر
دوست عزیز به نظر من هم بهترین گزینه استفاده از SmartAssembly
در ضمن این دوست خوبمون آقای آژرنگ بیشتر دنبال اینه که چرا دوستان دیگه می یان اینجا و می خوان کاری رو انجام بدن و فقط می خواد دلیل رو بدونه ( ماشالله خیلی کنجکاوه :بامزه:)
سلام دوست عزیز
بهتر این است که یکی دلایل را بدانه، چونکه بارها پیش آمده که مشکل اصلی چیزه دیگری بوده و خیلیها که همینطوری بدانه درک مشکل اصلی یک جواب انداختن بیشتر ضرر داشتن تا فایده.
بدانه دانستن دلایل یک آدم حرفه‌ای همینطوری چیزی را پیشنهاد نمیکنه، باید مشکل اصلی را دانست و جواب داد.

اَرژنگ
شنبه 16 آبان 1388, 13:11 عصر
براي من فرق زيادي نميكنه فقط ميخوام تا حد امكان dll هام دور از دسترس كاربر و متمركز باشنو ظاهرا منطقي ترين راه همينه كه مثلا توي فولدر System32 باشن !


خيلي سرچ كردم GAC رو ولي متاسفانه چيزي پيدا نكردم
ممكنه ايراد از موتور جستجوي سايت باشه هرچند من از گوگل هم كمك گرفتم !
در هر حال اگر آدرس مبحث رو دارين لطف كنيد آدرس رو بگذاريد
http://en.wikipedia.org/wiki/Global_Assembly_Cache

masoud.rhb
دوشنبه 09 بهمن 1391, 22:56 عصر
وارد کردن محتویات فایل dll به پروژه فقط صورت مسئله رو پاک می کنه؛هدف dll کم کردن حجم برنامه ایه که تو حافظه لود میشه اگه کلاس بشه که فرقی نداره
منم این مشکلو داشتم و در نهایت یک تابع داخل dll گذاشتم یکی هم داخل برنامم که کارشون معرفی خودشون به هم دیگس و تا اینکار انجام نشه هیچی کار نمیکنه
البته چیزیم که حتما بدونید اینه که مقادیر ثابت مثل اعداد یا رشته ها که عینا داخل dll نوشته میشن به راحتی قابل دسترسند پس از فکر پسورد بیاید بیرون
امیدوارم کمکی کرده باشم

khokhan
دوشنبه 09 بهمن 1391, 23:32 عصر
بهترین گزینه استفاده از نرم افزار Reactor است
با این نرم افزار میتونید dllها و برنامتون رو یکی کنید
http://ilmergegui.codeplex.com/