PDA

View Full Version : رمزنگاری فایل های DLL



navidkhalilian
یک شنبه 25 فروردین 1392, 22:39 عصر
سلام دوستان.فرض کنید با استفاده از معماری سه لایه یه برنامه نوشتیم.حالا وقتی برنامه رو کامپایل می کنیم دو تا فایل DLL از لایه های DAL و BLL کنار فایل اجرایی ساخته میشه.من می خواستم بدونم چه راهکاری وجود داره که کسی نتونه از این DLL ها در برنامه خودش استفاده کنه.یعنی فقط توی برنامه ما قابل استفاده باشند.تشکر

SHD.NET
یک شنبه 25 فروردین 1392, 22:56 عصر
سلام دوستان.فرض کنید با استفاده از معماری سه لایه یه برنامه نوشتیم.حالا وقتی برنامه رو کامپایل می کنیم دو تا فایل DLL از لایه های DAL و BLL کنار فایل اجرایی ساخته میشه.من می خواستم بدونم چه راهکاری وجود داره که کسی نتونه از این DLL ها در برنامه خودش استفاده کنه.یعنی فقط توی برنامه ما قابل استفاده باشند.تشکر

سلام. با استفاده از نرم افزار Smart Assembly اون ها رو رمز نگاری کنید تا از Obfuscate شدن اون ها جلوگیری بشه .

موفق باشید/

FastCode
یک شنبه 25 فروردین 1392, 23:34 عصر
این کار فایده نداره.
همه هنر شما اینه که این فایل ها رو اینقدر درست طراحی کنی که اگر کسی هم استفاده کرد.نتونه باهاشون خرابکاری کنه.

amir_pro
یک شنبه 25 فروردین 1392, 23:59 عصر
این کار فایده نداره.
همه هنر شما اینه که این فایل ها رو اینقدر درست طراحی کنی که اگر کسی هم استفاده کرد.نتونه باهاشون خرابکاری کنه.

دوست عزیز منظورت از درست طراحی کردن چیه؟ یعنی دیگه چه جوری باید نوشت؟

FastCode
دوشنبه 26 فروردین 1392, 00:09 صبح
دوست عزیز منظورت از درست طراحی کردن چیه؟ یعنی دیگه چه جوری باید نوشت؟
یعنی اینقدر درست بنویسی که جرات داشته باشی DAL رو کدباز منتشر کنی.
سطح دسترسی ها رو درست بنویسی.
Authentication/Authorization رو سمت سرور انحام بدی.....

amir_pro
دوشنبه 26 فروردین 1392, 12:18 عصر
یعنی اینقدر درست بنویسی که جرات داشته باشی DAL رو کدباز منتشر کنی.
سطح دسترسی ها رو درست بنویسی.
Authentication/Authorization رو سمت سرور انحام بدی.....

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

FastCode
دوشنبه 26 فروردین 1392, 12:49 عصر
یعنی همه سطح دسترسی ها سمت سرور در DAL چک بشه.
کاربر ها برای login به سرور پیغام بدن و جواب بگیرن که آیا login شد یا نه.
کاربر ها هیچگونه سطح دسترسی اجرای مستقیم SQL روی database نداشته باشن و همه عملیات از طریق DAL باشه.

خیلی خیلی ساده میتونم بگم رمز SQL رو روی سیستم کلاینت نگهداری نکنید.اگر بتونید این رو انجام بدید حله.

UfnCod3r
دوشنبه 26 فروردین 1392, 13:03 عصر
نمیشه .
تنها راهش همون نامفهوم کردن توابع و .. هست که اونم خیلی جاها نمیشه استفاده کرد .
درضمن هرکی بخواد با یه دیکامپایلر راحت کد ها رو از دی ال ال شما برمی داره یا ...
دات نته دیگه .:قهقهه:

danialafshari
دوشنبه 26 فروردین 1392, 17:01 عصر
سلام
فکر می کنم مثل این dll میخواید :

FastCode
دوشنبه 26 فروردین 1392, 17:11 عصر
نمیشه .
تنها راهش همون نامفهوم کردن توابع و .. هست که اونم خیلی جاها نمیشه استفاده کرد .
درضمن هرکی بخواد با یه دیکامپایلر راحت کد ها رو از دی ال ال شما برمی داره یا ...
دات نته دیگه .:قهقهه:
اصلا هم اینطور نیست.تنها راهش طراحی درسته که میشه انجام داد و من انجام دادم و هیچ ترسی هم از لو رفتن DAL ندارم.
و اگر کسی درخواست کنه به جز راهنمایی کدش رو هم بهش میدم.

amir_pro
دوشنبه 26 فروردین 1392, 18:46 عصر
اصلا هم اینطور نیست.تنها راهش طراحی درسته که میشه انجام داد و من انجام دادم و هیچ ترسی هم از لو رفتن DAL ندارم.
و اگر کسی درخواست کنه به جز راهنمایی کدش رو هم بهش میدم.

شما یه برنامه کلاینت سروری رو مثال زدین و میگین که هیچ عملیاتی روی کلاینت انجام نشه و DAL روی سرور هست و درخواست لاگین به همراه یوزر و پسورد به سرور فرستاده بشه و برنامه سرور لاگین کنه و یه تاییده لاگین به برنامه کلاینت بده. تا اینجاش درست. ولی حالا شما دارین میگین که DAL برنامتون رو به همراه راهنمایی های کدش به من میدین؟ مگه تو DAL پسورد بانک چک نمیشه و کارهای دیگه پس چه طوری ریسک می کنید این کارا می کنید. شاید من یه جای صحبتتون رو درست متوجه نشدم. لطفا راهنماییم کنیم چون برنامم آماده تحویل و میخوام از این مورد هم مطمئن بشم. خیلی ممنون

FastCode
سه شنبه 27 فروردین 1392, 09:34 صبح
شما یه برنامه کلاینت سروری رو مثال زدین و میگین که هیچ عملیاتی روی کلاینت انجام نشه و DAL روی سرور هست و درخواست لاگین به همراه یوزر و پسورد به سرور فرستاده بشه و برنامه سرور لاگین کنه و یه تاییده لاگین به برنامه کلاینت بده. تا اینجاش درست. ولی حالا شما دارین میگین که DAL برنامتون رو به همراه راهنمایی های کدش به من میدین؟ مگه تو DAL پسورد بانک چک نمیشه و کارهای دیگه پس چه طوری ریسک می کنید این کارا می کنید. شاید من یه جای صحبتتون رو درست متوجه نشدم. لطفا راهنماییم کنیم چون برنامم آماده تحویل و میخوام از این مورد هم مطمئن بشم. خیلی ممنون
پسورد بانک نباید HardCode بشه.

میتونید یکی از این روشها رو پیش بگیرید:
۱.مشخصات لاگین کاربر همون مشخصات کاربر SQL باشه.
۲.DAL با کاربر sa وارد بشه و رمز ها رو با یک table مقایسه کنه.

vahid_dadaism
دوشنبه 06 مرداد 1393, 12:06 عصر
من با FastCodeموافق هستم. با این وجود نظرم اینه:
شما DLL های مایکروسافتم نگاه کنید. هیچکدوم کد نشدن. به چه دردی میخوره کد بشه؟ مهم اینه طراحی کد مناسب باشه. نرم افزار JetBraind dotPeek هم برای نمایش داخل dll ها هست. نرم افزار خوبیه. میتونید ببنید داخل dll برای مثال System.Data چه خبره و چطور پیاده شدن!
برای مثال: شما یه وب اپلیکیشن دارید تولید مکیند. لایه کسب و کار و داده رو هم درست نوشتید. حالا برای connection string برای مثال از وب کانفیگ استفاده کنید و این connection رو بعنوان پارامتر ورودی به سازنده کلاساتون تو کسب و کار و سپس لایه داده ارسال کنید و کار کنید. الان رشته اتصالی با پایگاه داده روی وب سرور هست و کسی اگر DLL هارو هم برداره نمیتونه با دیتابیس شما کار کنه. تنها شرط ایجاد ارتباط یک برنامه خارجی با دیتابیس رشته اتصالی هست که اون رو شما تو وب کانفیگ ذخیره کردید. اشتباه بزرگ اینجاست که ما میاییم و رشته اتصالی رو برای امنیت بیشتر(فک میکنیم کار خوبی میکنیم اما نمیکنیم) میبریم میزاریم تو لایه داده و اونجا هم با n تا الگوریتم مختلف کدش میکنیم. غافل از اینکه اگه یه نفر dllلایه داده رو برداره و بره دیگه رفته...
////
خلاصه به نظر من اگر معماری که دارید طراحی میکنید رو درست پیاده کنید هیچ نگرانی از بایت دیده شدن کدهاتون یا لو رفتن DLL ها نداشته باشید.

Abbas Naghdi
دوشنبه 06 مرداد 1393, 15:14 عصر
با سلام ... در استفاده از SmartAssembly شک نکنید که dll ها رو نا خانا میکنه ... من تست کردم نرم افزارم نتونست اتباط بگیرهدر معماری سه لایه انتقال کد ها به سرور باید بگم شاید در مورد سرور به کلاینت کار ساز باشه اما در مورد نرم افزاری که سرور نداره یه چیز مسخره هست (مگه سایته)دوستان من خوم زیاد دنبال همچین کاریم اما فعلا تنها راهی که به ذهنم میرسه ایه که dll ها رو داخل فایل اجرایی ذخیره کنیم با برنامه های خاص ... اون موقع میشه با SmartAssembly هم پک کرد ... در واقع امنیتش بیشتر میشه ...

mehrabi1
دوشنبه 06 مرداد 1393, 18:17 عصر
دوستان عزیز راه های زیادی برای Obfuscate کردن کدهایی که تحت .net نوشتید هستش. مثل SmartAssembly ، Xenocode ، Agile.NET ، CryptoObfuscator ، Dotfuscator و موارد دیگر .
ولی حقیقتش با این روشها هم که کدهارو ناخوانا کنید فایده نداره همیشه یه راهی هست برای مهندسی معکوس. :چشمک: