با سلام
یک مثال ساده در مورد SecureString می خواستم .
با تشکر
Printable View
با سلام
یک مثال ساده در مورد SecureString می خواستم .
با تشکر
با تشکر
آیا می تونم چند String را با استفاده از آن محافظت کنم؟
میشه یه توضیح در مورد آن بدهید(دقیقا در چه مواردی استفاده می شود؟)
(چطوری می تونم رشته ها رو در درون برنامه ذخیره کنم/آنها را بخوانم؟)
اگر نمی شود./ من فقط چند رشته در برنامه ام دارم که می خواهم از آنها محافظت کنم، و به نرم افزارهایی مثل Dotfuscator دستری ندارم، چطوری می تونم اینکار را انجام دهم؟
لطفا راهنمایی کنید.
خوب هر چند تا رشته که میخواین براش یه SecureString بسازین.نقل قول:
آیا می تونم چند String را با استفاده از آن محافظت کنم؟
جزئی ترش تو همون لینکی که دادم گفته شده که دقیقا چرا. به طور کلی وقتی میخوایم یه String داشته باشیم که encrypt شده باشه و توسط garbage collector از بین نره یه موقع و خودمون هر وقت خواستیم از بین ببریمش. در واقع یه string امن تر از string های معمولی.نقل قول:
میشه یه توضیح در مورد آن بدهید(دقیقا در چه مواردی استفاده می شود؟
بستگی داره... روش معمول نگهداری اونها تو فایل Setting پروژه هستش.نقل قول:
(چطوری می تونم رشته ها رو در درون برنامه ذخیره کنم/آنها را بخوانم؟
خوب از این روش میتونین استفاده کنین ولی راه ساده ترش اینه که string هاتون رو بصورت hashcode تو فایل Setting نگهداری کنید که فقط خودتون میدونین مقدار اصلیشون چیه.نقل قول:
من فقط چند رشته در برنامه ام دارم که می خواهم از آنها محافظت کنم، و به نرم افزارهایی مثل Dotfuscator دستری ندارم، چطوری می تونم اینکار را انجام دهم؟
اینم راهنمایی D:نقل قول:
لطفا راهنمایی کنید.
با تشکر از راهنمایی شما
من می خواهم یک آدرس رجیستری را ذخیره کنم، و بعدا از آن استفاده کنم، (در ضمن امن باشد)
چه راهی بهتر است؟
میخواین یه string رو تو رجیستری ذخیره کنید؟
اگه آره من استفاده از hashcode رو پیشنهاد میکنم (بخصوص اگه میخواین password باشه )
نه، آدرس کلید رجیستری را می خواهم ذخیره کنم (یه رشته معمولی) اما می خواهم امن باشه.
خوب واسه اینکار بهترین روش اینه که string رو encode کنی بعد بریزی تو registry
موقع خوندن هم decode کنی و ازش استفاده کنی
حالا این کار رو میتونی با کلاس های System.Text انجام بدی یا اینکه خودت یه encoding-decoding بنویسی ( من شخصا دومی رو ترجیح میدم )
اینم یه مثال :
http://www.vbforums.com/showthread.p...hreadid=287324
ظاهرا من منظورم رو خوب بیان نکردم!
من یک رشته در برنامه دارم و می خوام از اون درجاهای مختلف استفاده کنم،امنیت برنامه ام به این رشته بستگی دارد.
چون فایل اجرایی برنامه های Net. توسط Reflector ها قابل خواندن هستند، درحالت عادی این رشته خیلی راحت قابل خواندن است(کد آن Native نیست)
در ضمن بنده به نرم افزارهای Obfuscator دسترسی ندارم، در نتیجه نیاز دارم این رشته را Secure کنم، تا قابل باز خوانی نباشد.
لطفا راهنمایی کنید.
این مهمه که رشته توسط کاربر قابل تغییره یا اینکه میتونه بعدا تغییر کنه یا اینکه نه یه string ثابته؟
در صمن شما میخواین تو برنامتون (سورس) هم این رشته بصورت امن باشه یا فقط تو رجیستری امن باشه کافیه؟
رشته ثابتهنقل قول:
این مهمه که رشته توسط کاربر قابل تغییره یا اینکه میتونه بعدا تغییر کنه یا اینکه نه یه string ثابته؟
در سورس برنامهنقل قول:
در صمن شما میخواین تو برنامتون (سورس) هم این رشته بصورت امن باشه یا فقط تو رجیستری امن باشه کافیه؟
خوب این کار اصولا احتیاج به ابزارهای dotfuscator داره! چون هر کاری بکنین باز سورستون قابل decompile شدنه. یعنی هر کی بتونه یه خط از کد برنامتون رو ببینه در واقع بالاخره میفهمه که چه بلایی سر این string اومده و مقدار اصلیش لو میره.نقل قول:
در سورس برنامه
پس هیچکدوم از روش هایی که قبلا بخث کردیم به درد نمیخورن!
2 روش میتونم پیشنهاد کنم:
1- با ++C یا C کارهایی رو که قراره با این string انجام بشن رو انجام بده و اونو بصورت dllImport تو برنامه #C وارد کن و ازش استفاده کن ( چون dll نوشته شده native کده نمیشه decompile کرد به این سادگی )
2- همه کارهاتو با #C انجام بده و آخر سر برنامتو با یه packer مخصوص NET. پک کن ( این کار یه کم امنیت کد هارو زیاد میکنه )
موفق باشید
با تشکر
همانطوریکه من میتونم از این DLL استفاده کنم، بقیه هم میتونن، در نتیجه امن نیست.نقل قول:
- با ++C یا C کارهایی رو که قراره با این string انجام بشن رو انجام بده و اونو بصورت dllImport تو برنامه #C وارد کن و ازش استفاده کن ( چون dll نوشته شده native کده نمیشه decompile کرد به این سادگی )
میشه در مورد packer توضیح بدهید.نقل قول:
2- همه کارهاتو با #C انجام بده و آخر سر برنامتو با یه packer مخصوص NET. پک کن ( این کار یه کم امنیت کد هارو زیاد میکنه )
توضیحات در مورد packer : https://barnamenevis.org/showthread.php?t=20560
یه پیشنهاد:
میتونی استفاده از توابع dll ی که با c نوشته میشه رو با یه password کنترل کنی. این کار رو اگه با hashcode انجام بدی امنیت نسبتا خوبی داره.
خوب ترش اینه که هم از Dll استفاده کنی و هم pack کنی.
با تشکر
من DLL ی رو با Win32 ++C ساختم و به برنامه اضافه کردم:
[DllImport("My.dll")]
publicstaticexternstring mStrs(int a);
روی سیستم خودم کار میکنه، اما روی سیستمهای دیگه نمیتونه فایل DLL رو پیدا کنه.
فایل رو تو شاخه برنامه/ Windows / System32 هم کپی کردم اما مشکل حل نشد.
آیا باید فایل رو رجیستر کنم، اگر بلی، چطوری؟