PDA

View Full Version : مخفی کردن کد با dll?



بیتافرهی
جمعه 30 مرداد 1388, 14:13 عصر
سلام
میخواستم بدونم از dll معمولا در چه مواردی استفاده می کنند؟من شنیدم که برای اینکه کدهای برنامه را در دسترس مشتری قرار ندهند،فایل ها را به صورت dll در می آورند.اگر همچنین حرفی درست است ،چطوری این کار انجام می شود؟
برای درست کردن این جور از فایلها ،در قسمت add new item چه نوع فایلی را باید add کنم؟

keivan mousavi
جمعه 30 مرداد 1388, 14:32 عصر
امروزه پرژهای بزرگ از زمان بندی خود عقب هستن بوجه زیادی صرف آن میشود و کارایی آن پایین است به همین دلیل متخصصین به فکر تولید قطعات نرم افزاری هستند

مزایای استفاده از DLL
1- زمان توسعه نرم افزار را کاهش میدهد
2- قابلیت اطمینان سیستم را افزایش میدهد
3- انعطاف پذیری افزایش میدهد
4- مالکیت قطعات حفظ میشود
5- نصب و راه اندازی قطعات ساده تر میشود
6- استاندارد را میپذیرد
7- استفاده موثر از متخصصین
8- کاهش هزینه

برای تولید فایل DLL در C#.NET از منوی NEW گزینه CALSS LIBRARY را انتخاب کنید ولا غیر

بیتافرهی
جمعه 30 مرداد 1388, 14:44 عصر
برای تولید فایل DLL در C#.NET از منوی NEW گزینه CALSS LIBRARY را انتخاب کنید ولا غیراگر روشش اینه که من یه مثال به عنوان برنامه نویسی سه لایه دارم که داخلش از class Library برای تولید فایل استفاده کردم ولی مشکلم اینجاست که تمام کدها قابل دیدن است ،یعنی اگر من این سورسو به بقیه هم بدهم ،اونا هم می تونند کدارو ببینند،
پس چه فرقی با فایلای سی شارپ معمولی داره؟

آیا باید کار دیگه ای علاوه بر این هم انجام داد؟

keivan mousavi
جمعه 30 مرداد 1388, 15:03 عصر
برای اینکه سورس های شما دیده نشه این کارو انجام بدید


گزینه new را انتخاب کنید از قسمت project types منوی Windows را کلیک کنید از منوهای ایجاد شده در قسمت Templates روی گزینه Windows Form Control Library را انتخاب کنید کدهای مورد نظر رو بنویسید و از گزینه Builld/Builld... را اجرا کنید تا فایل DLL ایجاد شود

alireza_tavakol
جمعه 30 مرداد 1388, 17:13 عصر
امروزه پرژهای بزرگ از زمان بندی خود عقب هستن بوجه زیادی صرف آن میشود و کارایی آن پایین است به همین دلیل متخصصین به فکر تولید قطعات نرم افزاری هستند

مزایای استفاده از DLL
1- زمان توسعه نرم افزار را کاهش میدهد
2- قابلیت اطمینان سیستم را افزایش میدهد
3- انعطاف پذیری افزایش میدهد
4- مالکیت قطعات حفظ میشود
5- نصب و راه اندازی قطعات ساده تر میشود
6- استاندارد را میپذیرد
7- استفاده موثر از متخصصین
8- کاهش هزینه

برای تولید فایل DLL در C#.NET از منوی NEW گزینه CALSS LIBRARY را انتخاب کنید ولا غیر

من که دیدم هر کسی DLL ساخته در واقع مالکیت اون بخش از برنامه اش رو به دیگران سپرده ، یعنی هر کسی می تونه از DLL های ساخته شده توسط دیگران استفاده کنه ولی به اسم خودش

اَرژنگ
جمعه 30 مرداد 1388, 19:00 عصر
کد دیده نشه چرا انقدر مهمه؟
مگر کسی که پول میده برایه زمانی که شما کد نوشتین پول نمیده، با این حساب کدش را هم باید حتما تحویل بدید.
اگر هم که نه، کنتراکت چیزه دیگری است کنتراکت را عوض کنید و قابلیت ندادن کد را بهشان بگید.
این روشهایه زیرزیرکنا که با دوز کلک کد برنامه را نداشته باشند یعنی چی؟
اگر برنامه‌نویسید و کارتان خوب است کدها را هم کاملا داشته باشند بازهم از شما کمک میخواهند، اگر هم که نه با قایم کردن و ندادن کد برایه کاری که از اولش قرارداد بستید هستید تا موقعی که پولتان را نگرفتید سورس پروژه کاملا مال شماست.
حالا قرارد دادتان چیه که قایم کردن براتان مهمه، شاید اصلا جواب چیزه دیگری باشه.

بیتافرهی
جمعه 30 مرداد 1388, 19:06 عصر
بله حرف شما درسته.من قصد انجام این کارو ندارم.مطلبی بود که در موردش شنیده بودم ولی عملا میدیدم که کدها هم نمایش داده می شوند.برام سوال ایجاد شد و مطرحش کردم.

keivan mousavi
جمعه 30 مرداد 1388, 19:53 عصر
بحث و جدل بین من و دوست خوبم آقای توکلی در هر تایپیک مشهوده:قهقهه:

ولی جدا از شوخی در تعریف فایلهای DLL این چنین ذکر شده:
قطعات باید به صورت باینری باشند تا بتوان از آنها استفاده کرد در این صورت دیگه نمی توان با استفاده از مهندسی معکوس سورس کد قطعات را بدست آورد
به نظر من ابتدایی ترین راه برای اینکه سورس دیده نشه همین کار هستش

اَرژنگ
جمعه 30 مرداد 1388, 19:56 عصر
بله حرف شما درسته.من قصد انجام این کارو ندارم.مطلبی بود که در موردش شنیده بودم ولی عملا میدیدم که کدها هم نمایش داده می شوند.برام سوال ایجاد شد و مطرحش کردم.

ممکنه که مطلبی که شنیده بودید منظورش یک چیزه دیگر بوده باشه؟در سطح پایین قایم کردن کد با قایم کردن کد در سطح بالا معنیهاشون با هم فرق دارند.
The term encapsulation is often used interchangeably with information hiding
http://en.wikipedia.org/wiki/Information_hiding
هدف اصلی از استفاده از دات.نت اسمبلیها (دی ال‌ال نوع فایلشان است نه اسمشان، دی.ال.ال در خارج از دات.نت معنی میده)، انکپسولیشن است (قایم کردن کد از لحاض معماری نه از جهت اینکه کد قابل دسترسی نباشد، در حقیقت کد اضافه را قایم کردن بیشتر فایده دارد).

بیتافرهی
جمعه 30 مرداد 1388, 20:18 عصر
هدف اصلی از استفاده از دات.نت اسمبلیها (دی ال‌ال نوع فایلشان است نه اسمشان، دی.ال.ال در خارج از دات.نت معنی میده)
منظورتونو متوجه نشدم.میشه لطفا بیشتر توضیح بدید.


قطعات باید به صورت باینری باشند تا بتوان از آنها استفاده کرد در این صورت دیگه نمی توان با استفاده از مهندسی معکوس سورس کد قطعات را بدست آورد
برای اینکه به صورت باینری باشند،با چه فرمتی باید اونارو ذخیره کنیم؟

keivan mousavi
جمعه 30 مرداد 1388, 20:53 عصر
برای اینکه به صورت باینری باشند،با چه فرمتی باید اونارو ذخیره کنیم؟

ما در اینجا داریم در مورد DLL صحبت میکنیم و منظور من هم فالیلهای DLL میباشد
من یکبار توضیح دادم که اگه شما یک فایل DLL را با نرم افزارهای مختلف باز کنید یک شبه کد به شما میده که برای اجرا باید روی آن کار کرد یکی از دلایلی که شبه کد میده همین هستش که کدهای درون فایل به صورت باینری هستن و هیچ وقت نمیشه این کدهارو صد رد صد درست درآورد

به شما پیشنهاد میکنم به تایپیک امنیت در C#.NET بروید اونجا بچه مباحث خیلی خوبی را توضیح دادن
http://barnamenevis.org/forum/showthread.php?t=173862

alireza_tavakol
شنبه 31 مرداد 1388, 03:59 صبح
سلام

تا اون جایی که من خبر دارم DLL هایی که 6++VC درست مکنه با DLL هایی که توسط معماری NET. تولید میشه متفاوته

یعنی امکان Resource کردن DLL های NET. بیشتر از DLL های تولید شده توسط VC است چون DLL های دات نت به IL تبدیل میشن ولی DLL های VC به زبان سطح پایین تبدیل میشن

keivan mousavi
شنبه 31 مرداد 1388, 10:58 صبح
تا اون جایی که من خبر دارم DLL هایی که 6++VC درست مکنه با DLL هایی که توسط معماری NET. تولید میشه متفاوته

یعنی امکان Resource کردن DLL های NET. بیشتر از DLL های تولید شده توسط VC است چون DLL های دات نت به IL تبدیل میشن ولی DLL های VC به زبان سطح پایین تبدیل میشن

بر منکرش لعنت

alireza_tavakol
شنبه 31 مرداد 1388, 13:41 عصر
پس فکر میکنم این تاپیک هم داره به نتیجه همون تاپیک امنیت در #C (http://www.barnamenevis.org/forum/showthread.php?t=173862) میرسه

یعنی امکان Resource کردن DLL های دات نت وجود داره ( البته این کار به سختی امکان پذیره )
ولی DLL های ی که به زبان سطح پایین تبدیل شدن امکان نداره Resource بشن

پس برای کسی که Resource شدن اهمیت داره نباید با دات نت DLL ایجاد کنه و یا اگه هم با دات نت DLL ایجاد کرد باید با برنامه های Obfuscator سعی کنه کد های Resource شده رو نا خوانا کنه