PDA

View Full Version : گفتگو: امنیت در #C



system32
شنبه 24 مرداد 1388, 00:03 صبح
سلام به همگی.

دوستان هدف از راه اندازی این تاپیک این است تا با هم دیگر شیوه های برقراری امنیت در برنامه نویسی به این زبان را بررسی کنیم. چونکه این مبحث بسیار گسترده است ابتدا از این سوال شروع می کنیم که:

چکار کنیم که دستیابی به کدهای برنامه بوسیله نرم افزارهایی همانند Reflector سخت تر انجام شود؟ |---------------------------------------------------------|

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

Sociant
شنبه 24 مرداد 1388, 02:24 صبح
گویا dotfuscator که نسخه ی Community ورژن 4 همراه vs 2008 نصب میشه واسه همین کاره



Dotfuscator is an obfuscator (http://www.preemptive.com/obfuscator.html), pruner, linker, and watermarker for .NET applications. It is a key component of a Secure .NET Software Development Life Cycle Process. It adds a new level of protection and application efficiency to any .NET application.


PreEmptive Solutions’ Dotfuscator is the leading .NET Obfuscator, Compactor and Watermarker that helps protect programs against reverse engineering while making them smaller and more efficient. Dotfuscator Professional Edition is designed to stop even the best of decompilers from producing useful output. It provides comprehensive and efficient .NET code development and deployment.

system32
شنبه 24 مرداد 1388, 12:29 عصر
دوستان کسی می تونه نحوه کار این برنامه dotfuscator را توضیح بده. در ضمن آیا نرم افزاری ضد این نرم افزار وجود داره یا نه؟ (آیا نرم افزاری برای از بین بردن کارایی این برنامه وجود داره یا نه؟) ممنون می شم اگه جواب بدید.

saeed2rele
شنبه 24 مرداد 1388, 19:55 عصر
این نرم افزار در منوی تولز ویژوال استدیو هست کارشم اینه که اسامی متغیرها و فرم ها و کلاس ها رو عوض میکنه. ضدش هم وجود نداره یعنی اگه شما یه متغیر رو Customer گذاشته باشید و بعدی رو Product این نرم افزار اسم اولی رو میکنه A و دومی رو میکنه B همین به همین ترتیب تمام متغیرها و فرم ها و کلاسها رو تغییر نام میده تا نا خونا تر بشه و کار دیگه ای انجام نمیده

system32
شنبه 24 مرداد 1388, 20:25 عصر
اگه منظور شما را درست متوجه شده باشم یعنی به فرض می توانیم نام کلاس MessageBox را به هر چیزی که خواستم تغییر بدیم مثلا بزاریم payam. تا طرف نتونه تشخیص بده ما از چه کلاسی استفاده کردیم. اگه درست گفتم بگید. در ضمن لطف کنید نحوه استفاده از این برنامه را نیز توضیح بدهید. ممنون.

saeed2rele
شنبه 24 مرداد 1388, 21:21 عصر
اگه منظور شما را درست متوجه شده باشم یعنی به فرض می توانیم نام کلاس MessageBox را به هر چیزی که خواستم تغییر بدیم مثلا بزاریم payam. تا طرف نتونه تشخیص بده ما از چه کلاسی استفاده کردیم. اگه درست گفتم بگید. در ضمن لطف کنید نحوه استفاده از این برنامه را نیز توضیح بدهید. ممنون.

نه دوست من فقط اسم متغیرها و کلاس های تعریفی شما رو به صورت خودکار تغییر میده نه کلاسهای پایه دات نت رو
روش کار: اول باید پروژه اصلی رو ترجمه کنید و فایل exe بسازید و بعد در برنامه Dotfus... کریت نیو پروجکت رو انتخاب میکنید
حالا باید حداقل دو گزینه رو مشخص کنید یکی فایل های trigger و دیگری مسیر فایل مقصد (فایل ناخوانا شده
در زبانه trigger فایل اجرایی خودتون رو انتخاب کنیدو بعد بر روی زبانه build کلیک کنید و مسیر مقصد رو وارد کنید.
بعداز منوی فایل سیو پروجکت رو انتخاب کنید.
برای انجام کار و ساختن فایل ناخوانا از منوی فایل build رو انتخاب کنید.
تنظیمات دیگه هم داره اما من همینقدرشو بلدم.

system32
شنبه 24 مرداد 1388, 21:37 عصر
ممنون از راهنمایی شما.

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

Nima NT
شنبه 24 مرداد 1388, 22:04 عصر
میتونید از Smart Assembly استفاده کنید.
تاحدی سخت تر از بقیه هست.

system32
شنبه 24 مرداد 1388, 23:37 عصر
می شه لطفا در مورد این Smart Assembly توضیح بدید. ممنون.

Nima NT
یک شنبه 25 مرداد 1388, 01:21 صبح
این یک برنامه Obfuscator هست که سورس رو تا 60% نامفهوم میکنه و البته فایل رو در برابر کرک شدن تا حدی محافظت میکنه.

system32
یک شنبه 25 مرداد 1388, 11:06 صبح
سلام.

من بالاترین نسخه آن را دانلود کردم. و آن را نیز تست کردم. ولی فایده ای نداشت کدها به راحتی توسط برنامه Reflector قابل مشاهده بود. کسی برنامه یا طرحی برای محافظت از کدها سراغ نداره؟

Nima NT
یک شنبه 25 مرداد 1388, 12:07 عصر
من بالاترین نسخه آن را دانلود کردم. و آن را نیز تست کردم. ولی فایده ای نداشت کدها به راحتی توسط برنامه Reflector قابل مشاهده بود. کسی برنامه یا طرحی برای محافظت از کدها سراغ نداره؟
حتما" درست ازش استفاده نکردید یا از نسخه دمو استفاده کردید , همچین چیزی امکان نداره.

system32
یک شنبه 25 مرداد 1388, 12:26 عصر
دوست عزیز این دو عکس صحت گفتار بنده را تایید می کند. یکی نسخه استفاده شده از نرم افزار را نشان می ده و یکی دیگه نتیجه کار را بوسیله نرم افزار Reflector نمایش می ده.


http://barnamenevis.org/forum/attachment.php?attachmentid=35420&stc=1&d=1250411095


http://barnamenevis.org/forum/attachment.php?attachmentid=35421&stc=1&d=1250411095

من در واقع برنامه ای نوشتم همراه با یک کلید که اگه روی کلید کلیک کنم پیغام Hello را نمایش بده. مشاهده می شود که کدها به راحتی قابل نمایش هستند. راه حل چیست؟

system32
یک شنبه 25 مرداد 1388, 14:20 عصر
دوستان می شه کمی در مورد این CLI Header توضیح بدید. در ضمن آیا راهی هست که بتوان ان را از روی برنامه های تحت نت حذف کرد تا دیگر برنامه Reflector قادر به شناسایی آن نباشد؟

Nima NT
یک شنبه 25 مرداد 1388, 14:39 عصر
بازم میگم شاید نسخه دمو بوده , عکس گفته شما رو تائید میکنه ولی عملکرد نرم افزار این گونه نیست.
چون حتی کلاس ها رو ناقص Obfuscate کرده.

system32
یک شنبه 25 مرداد 1388, 17:51 عصر
دوستان یعنی هیچ راهی برای جلوگیری از دسترسی به کدهای برنامه وجود نداره؟ یا لا اقل دسترسی به کدها را سخت تر کنه؟ خواهشا اگه کسی راهی بلده بگه. ممنون.:ناراحت:

alireza_tavakol
یک شنبه 25 مرداد 1388, 18:34 عصر
http://barnamenevis.org/forum/showthread.php?t=174013

saeed2rele
یک شنبه 25 مرداد 1388, 19:04 عصر
دوست عزیز چیزی که شما میخواید امکان نداره.
کامپایلر C# به زبان میانی IL ترجمه میکنه حالا اگه کد IL به روشی که شما میخواید نا مفهوم باشه پس چطوری توسط CLR به زبان ماشین ترجمه بشه.
برای اینکه برنامه توسط CLR اجرا بشه باید کلاس ها ی پایه دات نت خوانا و واضح باشه و در اینصورت برنامه های دیگه نیز میتونن از این کد واضح برای نشون دادن سورس استفاده کنن.
چیزی که شما میخواید برنامه IL to Native هست که من نمونه ای از اون سراغ ندارم

system32
دوشنبه 26 مرداد 1388, 21:48 عصر
به نظر شما می توان به این نرم افزار xenocode postbuild 2008 که هکرها تونستند کرکش رو بسازند در حالی که خودش تضمین می کنه می تونه جلوی نفوذ هکرها را به نرم افزار ما را بگیره اعتماد کرد. لطفا نظرتون رو درباره این نرم افزار بدید. در ضمن در جواب کاربر عزیز saeed2rele باید بگویم این کار شدنی است چون یکی از همین کاربران عزیز سایت تونستند با حذف این هیدر جلوی نفوذ به نرم افزارشان را توسط Reflector بگیرند ولی روششان را فاش نکردند اگه خواستید فایل مربوطه را می گذارم تا خودتان امتحان کنید با این توضیحات لطفا اگه کسی روشی دیگر چه از راه برنامه نویسی و چه از راه نرم افزار های مربوطه می دونه لطف کنه و جواب بده. ممنون.

saeed2rele
دوشنبه 26 مرداد 1388, 22:21 عصر
به نظر شما می توان به این نرم افزار xenocode postbuild 2008 که هکرها تونستند کرکش رو بسازند در حالی که خودش تضمین می کنه می تونه جلوی نفوذ هکرها را به نرم افزار ما را بگیره اعتماد کرد. لطفا نظرتون رو درباره این نرم افزار بدید. در ضمن در جواب کاربر عزیز saeed2rele باید بگویم این کار شدنی است چون یکی از همین کاربران عزیز سایت تونستند با حذف این هیدر جلوی نفوذ به نرم افزارشان را توسط Reflector بگیرند ولی روششان را فاش نکردند اگه خواستید فایل مربوطه را می گذارم تا خودتان امتحان کنید با این توضیحات لطفا اگه کسی روشی دیگر چه از راه برنامه نویسی و چه از راه نرم افزار های مربوطه می دونه لطف کنه و جواب بده. ممنون.


نه دوست عزیز تا اونجایی که من میدونم تمام برنامه های گذاشته شده کرک شدند.
اونی هم که میگی اینجا کرک (http://barnamenevis.org/forum/showthread.php?t=174013)شد دوست من.
بازم میگم هیچ راهی برای محافظت از کد .net وجود نداره
فقط میشه اونرو ناخوانا کرد. به همون دلیلی که در پست قبلی گفتم.

system32
دوشنبه 26 مرداد 1388, 22:44 عصر
saeed2rele (http://barnamenevis.org/forum/member.php?u=42063)
بازم میگم هیچ راهی برای محافظت از کد .net وجود نداره

آیا دوستان دیگه هم با سخن این دوست عزیز موافقند؟ اگه کسی مخالفه لطفا راه حل خودش رو ذکر کنه. در ضمن بهترین نرم افزاری که می تونه کدها را ناخوانا کنه چیه؟ در واقع این یه نظر سنجیه که معلوم بشه بهترینشون کدومه. لطفا نام نرم افزار را به همراه مزیت استفاده از آن را توضیح دهید. ممنون

Open-Source
سه شنبه 27 مرداد 1388, 09:31 صبح
میشه از پکرهای موجود استفاده کرد.

من خودم هنوز روی .net تست نکردم ببینم که آیا پکر جواب میده یا نه.

ولی Exe های vb و delphi رو باهاش پک کردم.

از دسترسی این جوجه کرکرها فایل رو محافظت میکنه.

ولی برای جلو گیری از کرک شدن هیچ راهی وجود نداره(در هیچ زبونی).

system32
سه شنبه 27 مرداد 1388, 19:45 عصر
دوستان سلام.

دیشب تو اینترنت گشت می زدم با نرم افزار Eazfuscator.NET 2.5 آشنا شدم. این نرم افزار نمرش روی فایل های Exe به نظر من 15 است ولی متاسفانه روی فایل های dll به خوبی جواب نمی ده. (می تونید امتحان کنید) نرم افزار دیگه ای که خواستم امتحان کنم xenocode postbuild 2008 بود ولی متاسفانه نتونستم شماره سریال برنامه مربوطه را بدست آورم. شاید اینجا جای مناسبی برای مطرح کردن این موضوع نباشه. پیشاپیش عذر می خواهم. لطفا اگه کسی شماره سریال این برنامه را داره لطفا به من هم بگه.

کلام آخر:
دوستان برنامه نویس پس شما چطوری از کدهاتون محافظت می کنید. یعنی بعد از طراحی برنامتون کدها رو دو دستی تقدیم طرف می کنید. قطعا راهی بلدید که دسترسی به کدها را سخت تر کنه. لطف کنید و روشتان را اینجا ارائه دهید تا دوستان شما هم بتوانند از ایده شما استفاده کنند. قطعا برای هر مشکلی راه حلی وجود داره.


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

http://d01.megashares.com/dl/4d451cc/Crack_Me.zip

بالاخره هک شد یا نه؟ :لبخندساده:

Nima NT
چهارشنبه 28 مرداد 1388, 00:22 صبح
سلام
توصیه میکنم اصلا" از این روش استفاده نکنید , فایل ضمیمه اصلا" امنیتی نداره.


قطعا برای هر مشکلی راه حلی وجود داره.حتما" همین طوره , من خودم اول برنامه نویس دات نت بودم ولی به خاطر راه حل دات نت رو رها کردم و رفتم سراغ Delphi :لبخند:
شوخی کردم , نمیگم زبان مورد علاقه خودتون رو رها کنید ولی به یاد داشته باشید وقتی دیدید که Xenecode کرک شد نگید که بیخیال , اینم که کرک شد.
به یاد داشته باشید که همیشه امنیت سطح 1 خیلی بهتر از امنیت سطح صفر هست.
زیاد با MMB تلاش نکنید چون اصلا" امنیت قابل قبولی نداره , حتی سورس اسکریپت های برنامه های MMB رو هم میشه استخراج کرد.


میشه از پکرهای موجود استفاده کرد.
پکرها بیشتر کارشون فشرده سازی است نه امنیتی و معمولا" برای دات نت هم کار نمیکنن , بهتره از همون Obfuscator ها استفاده بشه.

سورس مربوط به بررسی کد :

Private Sub button1_Click (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Activate:1.0.0.0/Activate.Form1/button1_Click%28Object,System.EventArgs%29)(ByVal sender As Object (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object), ByVal e As EventArgs (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.EventArgs))
If (Not Me.textBox1 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Activate:1.0.0.0/Activate.Form1/textBox1:System.Windows.Forms.TextBox).Text (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.Control/property:Text:String) Is Nothing) Then
Dim num As Long (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int64)
Dim a As Long (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int64) = Convert (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Convert).ToInt64 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Convert/ToInt64%28String%29:Int64)(Me.textBox1 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Activate:1.0.0.0/Activate.Form1/textBox1:System.Windows.Forms.TextBox).Text (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.Control/property:Text:String))
Dim b As Long (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int64) = Convert (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Convert).ToInt64 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Convert/ToInt64%28String%29:Int64)(a.ToString (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int64/ToString%28%29:String).Substring (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/Substring%28Int32,Int32%29:String)(0, 1))
a = (Convert (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Convert).ToInt64 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Convert/ToInt64%28Int64%29:Int64)(Math (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Math).DivRem (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Math/DivRem%28Int64,Int64,Int64&%29:Int64)(a, b, num)) * Me.textBox1 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Activate:1.0.0.0/Activate.Form1/textBox1:System.Windows.Forms.TextBox).Text (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.Control/property:Text:String).Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/property:Length:Int32))
If (Me.textBox2 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Activate:1.0.0.0/Activate.Form1/textBox2:System.Windows.Forms.TextBox).Text (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.Control/property:Text:String) = a.ToString (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int64/ToString%28%29:String)) Then
MessageBox (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.MessageBox).Show (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.MessageBox/Show%28String%29:System.Windows.Forms.DialogResult )(ChrW(1576) & ChrW(1575) & ChrW(1576) & ChrW(1575) & " " & ChrW(1575) & ChrW(1740) & ChrW(1608) & ChrW(1604) & " " & ChrW(1578) & ChrW(1608) & " " & ChrW(1583) & ChrW(1740) & ChrW(1711) & ChrW(1607) & " " & ChrW(1705) & ChrW(1740) & " " & ChrW(1607) & ChrW(1587) & ChrW(1578) & ChrW(1740))
Else
MessageBox (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.MessageBox).Show (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Windows.Forms:2.0.0.0:b77a5c561934e089/System.Windows.Forms.MessageBox/Show%28String%29:System.Windows.Forms.DialogResult )(ChrW(1606) & ChrW(1575) & " " & ChrW(1575) & ChrW(1605) & ChrW(1740) & ChrW(1583) & " " & ChrW(1606) & ChrW(1588) & ChrW(1608) & " " & ChrW(1576) & ChrW(1575) & ChrW(1586) & ChrW(1605) & " " & ChrW(1578) & ChrW(1604) & ChrW(1575) & ChrW(1588) & " " & ChrW(1705) & ChrW(1606))
End If
End If
End Sub

Armin060
چهارشنبه 28 مرداد 1388, 05:23 صبح
Nima NT جان راه هایی هم وجود داره كه از Dump شدن برنامه جلوگيری كنه؟

Nima NT
چهارشنبه 28 مرداد 1388, 10:44 صبح
هدف آنتی دامپ بودن برنامه نیست که اصلا" نشه ازش دامپ گرفت و ... , هدف این هست که کراکر نتونه به سورس کد برنامه دسترسی داشته باشه که برای این امر هم من Smart Assembly نسخه 4 رو توصیه میکنم که البته باید نسخه کرک شده اون رو پیدا کنید , این برنامه کدها رو به شکلی نامفهوم میکنه که حتی اگر کراکر حرفه ای باشه و بتونه کد اصلی رو استخراج کنه فقط 30% رو میتونه برگردونه.

Armin060
چهارشنبه 28 مرداد 1388, 12:33 عصر
هدف آنتی دامپ بودن برنامه نیست که اصلا" نشه ازش دامپ گرفت و ... , هدف این هست که کراکر نتونه به سورس کد برنامه دسترسی داشته باشه

خوب من می خواستم ببينم كه اگر راه هایی واسه جلوگيری از Dump شدن هست كه هست، می تونيم برنامه رو بزاريم تو يه برنامه Native و از اون جا برنامه رو Load كنيم.

اگر زحمتی نيست اين فايل رو هم نگاه كنيد، ببينيد Smart Assembly هم همين كار رو میكنه؟

اَرژنگ
چهارشنبه 28 مرداد 1388, 12:40 عصر
saeed2rele (http://barnamenevis.org/forum/member.php?u=42063)
بازم میگم هیچ راهی برای محافظت از کد .net وجود نداره

آیا دوستان دیگه هم با سخن این دوست عزیز موافقند؟ اگه کسی مخالفه لطفا راه حل خودش رو ذکر کنه. در ضمن بهترین نرم افزاری که می تونه کدها را ناخوانا کنه چیه؟ در واقع این یه نظر سنجیه که معلوم بشه بهترینشون کدومه. لطفا نام نرم افزار را به همراه مزیت استفاده از آن را توضیح دهید. ممنون
دوباره معنی امنیت با مهندسی معکوس قاطی شد!
به همه اونهایی که میگن میتونند کد یک برنامه دات نت را کاملا بدست بیارند میگم:
یک برنامه که با دات‌نت نوشته شده را (برنامه درست حسابی، نه یک مثال یک فرمی مانند نت‌پد)، را بیزحمت کدش را تبدیل به یک پروژه کنند بزاند اینجا با دادن آدرس به برنامه اصلی که ببینیم.
اگر هم که نه، فقط فکر میکنند شدنی هست، بله در فکر همه چی ممکن هست، ولی در عمل داستان چیز دیگریست. من بلادرنگ منتظر یک پروژه همچنینی هستم.
این هم یک برنامه که قبلا سورسش کاملا در دست همه بود ولی دیگر نیست، اگر ممکن هست یک سلوشن کامل که من بتوانم باهاش کار کنم بفرستید: http://www.getpaint.net (http://www.getpaint.net/)
تا موقعی که سلوشن این برنامه را به شکلی که بشه باهش کار کرد فرستاده نشده، لطفا از امنیت بودن و یا نبودن کد بحث نکنید :قهقهه:

Nima NT
چهارشنبه 28 مرداد 1388, 12:54 عصر
یک برنامه که با دات‌نت نوشته شده را (برنامه درست حسابی، نه یک مثال یک فرمی مانند نت‌پد)، را بیزحمت کدش را تبدیل به یک پروژه کنند بزاند اینجا با دادن آدرس به برنامه اصلی که ببینیم.
صحبت سر به دست آوردن کد و ... نیست , هدف کرک کردن برنامه هستش , موضوع سر این هست که من با خوندن کد های IL نرم افزار شما رو کرک کنم یا با خوندن کدهای اصلی برنامه.

اگر هم که نه، فقط فکر میکنند شدنی هست، بله در فکر همه چی ممکن هست، ولی در عمل داستان چیز دیگریست. من بلادرنگ منتظر یک پروژه همچنینی هستم.
این هم یک برنامه که قبلا سورسش کاملا در دست همه بود ولی دیگر نیست، اگر ممکن هست یک سلوشن کامل که من بتوانم باهاش کار کنم بفرستید: http://www.getpaint.net (http://www.getpaint.net/)
تا موقعی که سلوشن این برنامه را به شکلی که بشه باهش کار کرد فرستاده نشده، لطفا از امنیت بودن و یا نبودن کد بحث نکنید :قهقهه:
در مورد برنامه های شما شاید این موضوع اهمیت نداشته باشه ولی در مورد بعضی برنامه ها لو نرفتن الگوریتم خیلی مهمه , در مورد استخراج سورس لزومی نداره که یک باره فایل پروژه تولید بشه , کسی که میخواد از قسمتی از سورس بهره برداری کنه , مسلما" یک نیازی نداره که کل پروژه رو اتوماتیک بدست بیاره , فقط به بخشهایی نیاز داره و همون بخش ها رو کپی میکنه.
در مورد برنامه ای هم که گذاشتید به نظر میاد هدف شما نیاز خودتون نیست و بحث رو به کل کل سوق میدید , اگر مایل باشید میتونید از برنامه Reflector استفاده کنید و هر جا که نیاز داشتید سورس رو استخراج کرده و استفاده کنید.!

Nima NT
چهارشنبه 28 مرداد 1388, 12:57 عصر
خوب من می خواستم ببينم كه اگر راه هایی واسه جلوگيری از Dump شدن هست كه هست، می تونيم برنامه رو بزاريم تو يه برنامه Native و از اون جا برنامه رو Load كنيم.این کار اصلا" درست نیست و امنیت نداره.

اگر زحمتی نيست اين فايل رو هم نگاه كنيد، ببينيد Smart Assembly هم همين كار رو میكنه؟ مزیت این برنامه همین هست که این کار رو نمیکنه.
همون طوری هم که گفتم در این حالت درصد خوانایی کد پائین میاد , برای مثال این کد از فایل شما بدست اومد.

<MethodImpl (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplAttribut e/.ctor%28System.Runtime.CompilerServices.MethodImpl Options%29)(MethodImplOptions (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions) .Synchronized (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Runtime.CompilerServices.MethodImplOptions/Synchronized))> _
Public Shared Function  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%02%28Int32%29:String)(ByVal  As Integer (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32)) As String (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String)
Dim str As String (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String)
If Not  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%02:System.Collections.Generic.Dictionary%3CInt32, String%3E).TryGetValue (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.Generic.Dictionary%3C,%3E/TryGetValue%28%3C%210%3E,%3C%211%3E&%29:Boolean)(, str) Then
Dim buffer As Byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)()
If ( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader) Is Nothing) Then
Dim executingAssembly As Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) = Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly).GetExecutingAssembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/GetExecutingAssembly%28%29:System.Reflection.Assem bly)
Dim callingAssembly As Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly) = Assembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly).GetCallingAssembly (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/GetCallingAssembly%28%29:System.Reflection.Assembl y)
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%07:Boolean) = False
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader) = New BinaryReader (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/.ctor%28System.IO.Stream%29)(executingAssembly.Get ManifestResourceStream (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/GetManifestResourceStream%28String%29:System.IO.St ream)(ChrW(8194) & ChrW(8203) & ChrW(8198) & ChrW(8203) & ChrW(8199) & ChrW(8192) & ChrW(8202) & ChrW(8194) & ChrW(8199)))
Dim num As Short (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int16) = CShort(( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadInt16 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadInt16%28%29:Int16) Xor &H3A9B))
If (num = 0) Then
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%08:Int16) = CShort(( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadInt16 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadInt16%28%29:Int16) Xor &H4D82))
Else
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%05:Byte%5b%5d) =  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadBytes (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadBytes%28Int32%29:Byte%5b%5d)(num)
End If
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d) = callingAssembly.GetName (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.Assembly/GetName%28%29:System.Reflection.AssemblyName).GetP ublicKeyToken (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Reflection.AssemblyName/GetPublicKeyToken%28%29:Byte%5b%5d)
If ((Not  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d) Is Nothing) AndAlso ( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d).Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Array/property:Length:Int32) = 0)) Then
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d) = Nothing
End If
End If
Dim num2 As Integer (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32) = ( Xor &H155B0323)
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).BaseStream (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/property:BaseStream:System.IO.Stream).Position (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.Stream/property:Position:Int64) = num2
If (Not  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%05:Byte%5b%5d) Is Nothing) Then
buffer =  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%05:Byte%5b%5d)
Else
Dim num3 As Short (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int16)
If ( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%08:Int16) = -1) Then
num3 = CShort((( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadInt16 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadInt16%28%29:Int16) Xor -7133) Xor num2))
Else
num3 =  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%08:Int16)
End If
If (num3 = 0) Then
buffer = Nothing
Else
buffer =  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadBytes (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadBytes%28Int32%29:Byte%5b%5d)(num3)
End If
End If
Dim count As Integer (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32) = (( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadInt32 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadInt32%28%29:Int32) Xor num2) Xor -1661214256)
Dim flag As Boolean (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Boolean) = ((count And -2147483648) <> 0)
If flag Then
count = (count And &H7FFFFFFF)
End If
Dim bytes As Byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)() =  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%05). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%05/%02%28Byte%5b%5d,Byte%5b%5d%29:Byte%5b%5d)(buffer,  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).ReadBytes (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/ReadBytes%28Int32%29:Byte%5b%5d)(count))
If ((Not  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d) Is Nothing) <>  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%07:Boolean)) Then
Dim i As Integer (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32)
For i = 0 To count - 1
Dim num6 As Byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte) =  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d)((i And 7))
num6 = CByte(((num6 << 3) Or (num6 >> 5)))
bytes(i) = CByte((bytes(i) Xor num6))
Next i
End If
If (flag AndAlso Not  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%07:Boolean)) Then
Dim chArray As Char (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Char)() = New Char (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Char)(count - 1) {}
Dim j As Integer (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32)
For j = 0 To count - 1
chArray(j) = DirectCast(bytes(j), Char (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Char))
Next j
str = New String (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/.ctor%28Char%5b%5d%29)(chArray)
Else
str = Encoding (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Text.Encoding).Unicode (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Text.Encoding/property:Unicode:System.Text.Encoding).GetString (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Text.Encoding/GetString%28Byte%5b%5d,Int32,Int32%29:String)(byte s, 0, bytes.Length (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Array/property:Length:Int32))
End If
If  (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%07:Boolean) Then
str = (( + count) Xor &HE4A78).ToString (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32/ToString%28String%29:String)("X")
End If
str = String (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String).Intern (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.String/Intern%28String%29:String)(str)
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%02:System.Collections.Generic.Dictionary%3CInt32, String%3E).Add (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.Generic.Dictionary%3C,%3E/Add%28%3C%210%3E,%3C%211%3E%29)(, str)
If ( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%02:System.Collections.Generic.Dictionary%3CInt32, String%3E).Count (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.Generic.Dictionary%3CInt32,Stri ng%3E/property:Count:Int32) = 11) Then
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader).Close (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.IO.BinaryReader/Close%28%29)
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%03:System.IO.BinaryReader) = Nothing
 (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%05:Byte%5b%5d) = DirectCast( (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03). (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DatabaseAssistant:1.0.0.0/%03/%06:Byte%5b%5d) = Nothing, Byte (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Byte)())
End If
End If
Return str
End Function

اَرژنگ
چهارشنبه 28 مرداد 1388, 13:15 عصر
صحبت سر به دست آوردن کد و ... نیست , هدف کرک کردن برنامه هستش , موضوع سر این هست که من با خوندن کد های IL نرم افزار شما رو کرک کنم یا با خوندن کدهای اصلی برنامه.


اگر بحث بر کرک کردن برنامه است، چه ربطی به سی‌شارپ و یا دات نت دارد؟ همه نوع برنامه‌هایی که با هر زبانی نوشته شده کرک میکنند، این ادعایه اینکه دات نت امنیت ندارد معنی ندارد، هیچ برنامه‌ای امنیت ندارد، و این بحث مطعلق به این تالار نیست، بیزحمت انتقالش بدن به تالار امنیت و مهندسی معکوس.


در مورد برنامه های شما شاید این موضوع اهمیت نداشته باشه ولی در مورد بعضی برنامه ها لو نرفتن الگوریتم خیلی مهمه , در مورد استخراج سورس لزومی نداره که یک باره فایل پروژه تولید بشه , کسی که میخواد از قسمتی از سورس بهره برداری کنه , مسلما" یک نیازی نداره که کل پروژه رو اتوماتیک بدست بیاره , فقط به بخشهایی نیاز داره و همون بخش ها رو کپی میکنه.
در مورد برنامه ای هم که گذاشتید به نظر میاد هدف شما نیاز خودتون نیست و بحث رو به کل کل سوق میدید , اگر مایل باشید میتونید از برنامه Reflector استفاده کنید و هر جا که نیاز داشتید سورس رو استخراج کرده و استفاده کنید.!
با تشکر از راهنمائی شما، منظور من را متوجه نمیشید.
فرق بین مهندسی معکوس و امنیت را واقعا نمیدانید؟
شما که اهمیت لو نرفتن الگریتمها را میدانید، یک الگریتم مهم که به این شکل لو رفته را اسم ببرید. (جواب اینکه برو فلان برنامه را با فلکتر نگاه کن قابل قبول نیست)، الگریتمهایه ۲ قرانی که با رفلتر معلوم هستند هم حساب نمیشند.
اینجا با ترساندن همه که دات‌نت امنیت ندارد توپیک زدن، اگر امنیت ندارد، یک مثال امنیت نداشتن که اتفاق افتاده (که برنامه یک شرکت معتبر لو رفته) را بفرمائید.
برایه هر برنامه دات‌نت که کرک شده حداقل ۱۰۰ برنامه غیره دات‌نت که کرک شده را میشه مثال زد.
پس بر این نتیجه، امنیت نبودن در دات‌نت به دلیل اینکه با رفلتور میشه کد برنامه را دید کل کل است، نه اینکه من میگم حرفهایه این توپیک ربطی به سی شارپ ندارد و باید به تالار مهندسی معکوس انتقال داده بشه.
بلادرنگ منتظر ِ مثال شما از لو شدن یک الگریتم با ارزش به وسیله رفلتر نشستم! اگر من کل‌کل میکنم، اکر اساس دارد شما حرفت را ثابت کن! :)

Nima NT
چهارشنبه 28 مرداد 1388, 13:22 عصر
شما که اهمیت لو نرفتن الگریتمها را میدانید، یک الگریتم مهم که به این شکل لو رفته را اسم ببرید. (جواب اینکه برو فلان برنامه را با فلکتر نگاه کن قابل قبول نیست)، الگریتمهایه ۲ قرانی که با رفلتر معلوم هستند هم حساب نمیشند.شرکت اسرائیلی که نرم افزار SecureLM رو با هدف توسعه امنیت در دات نت با فناوری مربوطه به VM تولید کرده بود به خاطر استفاده از دات نت به عنوان loader مربوطه به راه اندازی VM دچار ورشکستگی شد چرا که در صورتی که کد لو نمیرفت تحلیل VM کاری بسیار سخت میشد ولی از آنجا که سیستم امنیتی به کار رفته در مبهم سازی کدها امنیت چندانی نداشت 100% با شکست مواجه شد.

برایه هر برنامه دات‌نت که کرک شده حداقل ۱۰۰ برنامه غیره دات‌نت که کرک شده را میشه مثال زد.علت این هست که کرک کردن برنامه های دات نت رو افراد کمی بلد هستن ولی برنامه های win32 به واسطه عمر بیشترشون , بیشتر مورد تهدید و حمله قرار گرفتن و این نوع مقایسه صحیح نیست , چون اینجا قصد مقایسه نداریم.

پس بر این نتیجه، امنیت نبودن در دات‌نت به دلیل اینکه با رفلتور میشه کد برنامه را دید کل کل است، نه اینکه من میگم حرفهایه این توپیک ربطی به سی شارپ ندارد و باید به تالار مهندسی معکوس انتقال داده بشه.قبلا" بحث شده , جستجو کنید .
در آخر هم بی نتیجه ماند.
به عنوان راه حل همیشه گفتم Obfuscation ولی اگر از حرفه ای های این زمینه بپرسید بهتون میگن که کدهای Obfuscate شده رو هم میشه 100% به کد اصلی تبدیل کرد و در نهایت برنامه رو کرک کرد , حالا به عنوان لو رفتن الگوریتم هم میشه بهش نگاه کرد.

اینجا با ترساندن همه که دات‌نت امنیت ندارد توپیک زدنفکر نمیکنم اینطوری باشه , چون دوستان بیشتر به دنبال راه کار بودن و پشت سر هم کرک می و ... میذاشتن ( به تالار امنیت در برنامه نویسی مراجعه کنید ).

اَرژنگ
چهارشنبه 28 مرداد 1388, 13:42 عصر
شرکت اسرائیلی که نرم افزار SecureLM رو با هدف توسعه امنیت در دات نت با فناوری مربوطه به VM تولید کرده بود به خاطر استفاده از دات نت به عنوان loader مربوطه به راه اندازی VM دچار ورشکستگی شد چرا که در صورتی که کد لو نمیرفت تحلیل VM کاری بسیار سخت میشد ولی از آنجا که سیستم امنیتی به کار رفته در مبهم سازی کدها امنیت چندانی نداشت 100% با شکست مواجه شد.

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

کرک شدن برنامه ربطی به امنیت ندارد، قبلا در مورد امنیت در دات نت لینک فرستادم، اینکه برنامه کرک نشه با اینکه کدهاش دیده نشه ربطی ندارد.
عنوان تاپیک را باید ناخوانا کردن کد در دات‌نت میزاشتند، چونکه این ربطی به سی‌شارپ ندارد، کد وی‌بی دات نت هم همان آی‌ال را تولید میکند، دلفی دات‌نت هم همانطور، پس این توپیک ربطی به تالار سی‌شارپ ندارد و یک مطلب کلی تر است.
هنوز هم یک مثال در مورد اینکه باز بودن کد دات‌نت باعث اتفاقی شده باشد را ندیدم، مگر اینکه برنامه‌نویسهایه بدانه اطلاعات امنیتی در دات‌نت خراب نوشته باشند.

Nima NT
چهارشنبه 28 مرداد 1388, 14:08 عصر
نمیدانم منبعتان برایه این خبر از کجا بوده، ولی ویکپدیا میگه مایکروسافت این شرکت را خریده. کل گوگل در مورد ورشکست شدن این شرکت چیزی نداشت، بیزحمت یک لینک به یک منبع معتبر در این زمینه بفرستید.
در مورد خریده شدن و ... اطلاعی ندارم ولی لینکی پیدا کردم حتما" براتون میفرستم , چراکه این موضوع مربوط به 1 سال پیش هست.

رک شدن برنامه ربطی به امنیت ندارد، قبلا در مورد امنیت در دات نت لینک فرستادم، اینکه برنامه کرک نشه با اینکه کدهاش دیده نشه ربطی ندارد.
متاسفانه ربط داره , چرا که وقتی کدها راحت دیده بشن , نیازی نیست که برای کرک کردن برنامه شما فایل patch بشه , میشه به راحتی براش keygen نوشت در صورتی که اگر کد دیده نشه این کار به این راحتی ها هم نیست.

عنوان تاپیک را باید ناخوانا کردن کد در دات‌نت میزاشتند، چونکه این ربطی به سی‌شارپ ندارد، کد وی‌بی دات نت هم همان آی‌ال را تولید میکند، دلفی دات‌نت هم همانطور، پس این توپیک ربطی به تالار سی‌شارپ ندارد و یک مطلب کلی تر است.
بله , شاید ؛ ولی چون دیده شدن کد میتونه به امنیت ( از هر لحاظ ) صدمه بزنه , زیاد هم فرق نمیکنه.

Armin060
چهارشنبه 28 مرداد 1388, 14:11 عصر
مزیت این برنامه همین هست که این کار رو نمیکنه.
همون طوری هم که گفتم در این حالت درصد خوانایی کد پائین میاد , برای مثال این کد از فایل شما بدست اومد.


جواب سوال من چی شد؟ آيا Smart Assembly هم همين كار رو می كنه، يعنی يه سری از نام ها رو به جاش چرت و پرت مينويسه؟


CodeVile چطوره؟ آيا CodeVile، امنيت برنامه در ايران رو تضمين می كنه؟

Nima NT
چهارشنبه 28 مرداد 1388, 15:28 عصر
جواب سوال من چی شد؟ آيا Smart Assembly هم همين كار رو می كنه، يعنی يه سری از نام ها رو به جاش چرت و پرت مينويسه؟
بله این کار رو انجام میده , در واقع اسم این کار Obfuscation هست که نام متدها و کلاس ها رو عوض میکنه و از حالت استاندارد خارج میکنه و تقریبا" در این کار خوب عمل میکنه.

CodeVile چطوره؟
خوب هست , میشه امنیت 4 از 10 بهش داد.

آيا CodeVile، امنيت برنامه در ايران رو تضمين می كنه؟
در مورد امنیت میتونم بگم , تضمینی در کار نیست , چون دیر یا زود قفلش میشکنه ولی 2 تا توصیه میکنم.
در طراحی قفل خودتون اول از رمزنگاری غیر متقارن برای تولید کد فعالسازی استفاده کنید و دوم اینکه تا میتونید قفل رو در جای جای برنامه خودتون بررسی کنید.

amir400
چهارشنبه 28 مرداد 1388, 15:35 عصر
چه تاپیک پویایی!
به هر حال من نمی دونم , هر وقت یه روش پیدا کردن که باهاش احتمال کشف کد و کرک کردن از نظر منطقی به صفر مطلق برسه به منم بگین!!!!!:دی

Nima NT
چهارشنبه 28 مرداد 1388, 15:45 عصر
به هر حال من نمی دونم , هر وقت یه روش پیدا کردن که باهاش احتمال کشف کد و کرک کردن از نظر منطقی به صفر مطلق برسه به منم بگین!!!!!:دی
اینم شد مثل آزادی مطلق !!!! :لبخند: مطلق فقط ذات پروردگاره و همه چیز نسبی هست.
بهترین کار برای کم کردن احتمال کشف کد استفاده از Obfuscator هایی نظیر Smart Assembly و نظایر اون هست.

amir400
چهارشنبه 28 مرداد 1388, 15:55 عصر
اینم شد مثل آزادی مطلق !!!! :لبخند: مطلق فقط ذات پروردگاره و همه چیز نسبی هست.
بهترین کار برای کم کردن احتمال کشف کد استفاده از Obfuscator هایی نظیر Smart Assembly و نظایر اون هست.
به این می گن ایده آلیسم مثبت(!) !:دی

amir400
چهارشنبه 28 مرداد 1388, 19:32 عصر
این رفلکتور فقط واسه برنامه های دات نت هست؟!
چون من یک نرم افزار پیشرفته ی روسی که کارش حل مسایل ریاضی با توضیح تشریحی است رو که بهش دادم نتونست هیچ سورسی ازش در بیاره و گفت CLI Header ای پیدا نکرد!!
اگر اینطوره برنامه های غیر دات نت رو با چی کدشو در میارن؟!

Nima NT
چهارشنبه 28 مرداد 1388, 21:05 عصر
بله فقط برای دات نت هست , امکان دسترسی به سورس برای برنامه های غیر دات نتی تقریبا" وجود نداره.

amir400
چهارشنبه 28 مرداد 1388, 22:13 عصر
بله فقط برای دات نت هست , امکان دسترسی به سورس برای برنامه های غیر دات نتی تقریبا" وجود نداره.

من با برنامه ای به نام Resourse Hacker که حجمش 500کیلو بایته و اینم لینک دانلود (http://delphi.icm.edu.pl/ftp/tools/ResHack.zip)شه سورس اون نرم افزاری که گفتم با رفلکتر جواب نداد رو الان به طور کامل بدست آوردم!
این برنامه خیلی باحاله! نه تنها سورس رو در میاره اجازه ویرایش اون رو هم در محیط سورس کدی و هم به صورت گرافیکی میده! محیط گرافیکیش خیلی باحاله!
مثلا می تونید فرم درباره ی ما ی نرم افزار رو بیاره و همونجوری که هست ببینیش و بدون دانستن هیچ نوع برنامه نویسی هرجاشو که خواستی ویرایش کنید! خیلی باحاله!
مثلا میشه برای فارسی کردن نرم افزار ها بدون دانستن هیچ نوع برنامه نویسی ازش استفاده کرد:دی:گیج:
اینم عکسش:
http://img2.tinypic.info/files/tawezdwgfemy2cwlvdck.jpg

amir400
چهارشنبه 28 مرداد 1388, 22:31 عصر
من با برنامه ای به نام Resourse Hacker که حجمش 500کیلو بایته و اینم لینک دانلود (http://delphi.icm.edu.pl/ftp/tools/ResHack.zip)شه سورس اون نرم افزاری که گفتم با رفلکتر جواب نداد رو الان به طور کامل بدست آوردم!
این برنامه خیلی باحاله! نه تنها سورس رو در میاره اجازه ویرایش اون رو هم در محیط سورس کدی و هم به صورت گرافیکی میده! محیط گرافیکیش خیلی باحاله!
مثلا می تونید فرم درباره ی ما ی نرم افزار رو بیاره و همونجوری که هست ببینیش و بدون دانستن هیچ نوع برنامه نویسی هرجاشو که خواستی ویرایش کنید! خیلی باحاله!
مثلا میشه برای فارسی کردن نرم افزار ها بدون دانستن هیچ نوع برنامه نویسی ازش استفاده کرد:دی:گیج:
اینم عکسش:


الان برنامه ای به اسم resource Tuner پیدا کردم که از اونم بهتره@ دانلود (http://www.heaventools.com/files/01ca0287/ResTuner_setup.exe)
--
یک برنامه ای هم به اسم Dis Sharp میگن وجود داره که من پیدا نکردم! میگن سورس رو به صورت Solution تحویل میده!!:گیج:

amir400
چهارشنبه 28 مرداد 1388, 22:47 عصر
اینم دیس شارپ! پیداش کزدم: دانلود (http://www.sourcecodeonline.com/details/dis__-__net_decompiler.html)

ااین دیس شارپ برای برنامه های نوشته شده در سی شارپ واقعا عالیه !
کل کد رو بدون هیچ اشکالی توی یک صفحه می تونه تحویل بده!
اینجا هم یک عالمه دکامپایلر واسه زبان های مختلف هست! حتی فلش! اینجا (http://www.sourcecodeonline.com/list?q=c_sharp_decompiler)

Armin060
چهارشنبه 28 مرداد 1388, 23:01 عصر
Resourse Hacker و از اين قبيل برنامه ها فقط Resourse ها رو ويرايش می كنند، نه بيشتر. هيچ وقت هم سورس رو به دست نمی يارند.

Nima NT
چهارشنبه 28 مرداد 1388, 23:04 عصر
resource جزو منابع فایل اجرایی هست , مثل یه سری اطلاعات طبقه بندی شده , به قول دوست عزیزمون این برنامه ها فقط این اطلاعات رو استخراج میکنن و دسترسی به سورس کد ندارن.
برنامه هایی مثل reflector سورس کد برنامه شما رو در میارن , یعنی همون کدی که شما برای برنامه خودتون در یکی از زبانهای برنامه نویسی نوشتید.

amir400
چهارشنبه 28 مرداد 1388, 23:09 عصر
resource جزو منابع فایل اجرایی هست , مثل یه سری اطلاعات طبقه بندی شده , به قول دوست عزیزمون این برنامه ها فقط این اطلاعات رو استخراج میکنن و دسترسی به سورس کد ندارن.
برنامه هایی مثل reflector سورس کد برنامه شما رو در میارن , یعنی همون کدی که شما برای برنامه خودتون در یکی از زبانهای برنامه نویسی نوشتید.

پس این همه برنامه های win32 چجوری کرک شده اند؟!

system32
چهارشنبه 28 مرداد 1388, 23:52 عصر
با سلام.

ظاهرا این تاپیک کم کم داره از موضوع اصلی خودش خارج می شه و این امکان وجود داره که مدیران بخش تاپیک را قفل کنند پس خواهشا از بحث در مورد این برنامه های نمایش سورس و غیره اجتناب کنید.
لطفا فقط به موضوعاتی بپردازید که امنیت برنامه های نوشته شده به زبان #C را بالا می برد. یکبار دیگر هدف از تاسیس این تاپیک را می گویم:

دوستان هدف از راه اندازی این تاپیک این است تا با هم دیگر شیوه های برقراری امنیت در برنامه نویسی به این زبان را بررسی کنیم. چونکه این مبحث بسیار گسترده است ابتدا از این سوال شروع می کنیم که:

چکار کنیم که دستیابی به کدهای برنامه بوسیله نرم افزارهایی همانند Reflector سخت تر انجام شود؟ |---------------------------------------------------------|

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

به امید رسیدن به این هدف.

نتیجه گیری از سوال اول:
1- به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود. فقط می توان کاری کرد که این کار سخت تر انجام شود.
2- شما می توانید بوسیله نرم افزارهای Obfuscator نفوذ به کدهایتان را مشکل نمایید. این کار با تغییر نام متغیرها و ... برنامه شما انجام می گیرد.

در ضمن دوستان روشی بلدند که با آن بتوان CLI Header را از برنامه حذف کنیم. متوجه شدم بعضی از دوستان این کار را انجام دادند. چگونه؟ می شه یه کم در این مورد توضیح بدهید. ممنون.

دوستان اگه این نتیجه گیری را قبول دارند و نظری در این مورد ندارند با مفید اعلام کردن این مطلب اعلام کنند تا به سوال بعدی پرداخته شود.

ممنون از همگی برنامه نویسان عزیز که در این بحث شرکت می کنند.

Nima NT
چهارشنبه 28 مرداد 1388, 23:56 عصر
در ضمن دوستان روشی بلدند که با آن بتوان CLI Header را از برنامه حذف کنیم. متوجه شدم بعضی از دوستان این کار را انجام دادند. چگونه؟ می شه یه کم در این مورد توضیح بدهید. ممنون.

این کار هم تاثیر زیادی نداره , برنامه CodeViel همین کار رو انجام میده.
در واقع ارزش کاری نداره , میتونید وقتتون رو برای روشهای بهتر بذارید.
در مورد موارد 1 و 2 هم کاملا" موافقم و صحیح هستن.

Nima NT
پنج شنبه 29 مرداد 1388, 00:01 صبح
پس این همه برنامه های win32 چجوری کرک شده اند؟!
اگر بخوام پاسخ شما رو اینجا بدم , همه چیز به هم میریزه و شاید مدیر بخش شاکی بشه.
بهتره اول در تالار امنیت در نرم افزار و برنامه نوسی جستجو کنید , چون قبلا" بحث شده , اگر جواب نگرفتید میتونید یه تاپیک همونجا ایجاد کنید تا جواب بدم.:چشمک:

system32
پنج شنبه 29 مرداد 1388, 00:03 صبح
این کار هم تاثیر زیادی نداره , برنامه CodeViel همین کار رو انجام میده.
در واقع ارزش کاری نداره , میتونید وقتتون رو برای روشهای بهتر بذارید.


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

Nima NT
پنج شنبه 29 مرداد 1388, 00:11 صبح
دلیل اول اینکه قابل بازسازی هست و دلیل دوم اینکه تنها نرم افزاری که این کار رو انجام میده , Reflector نیست و برنامه های دیگه ای هم وجود دارن که با این مورد مشکلی ندارن , از جمله Fox.

keivan mousavi
پنج شنبه 29 مرداد 1388, 01:42 صبح
با سلام به همه اساتید

اول اینکه به نظر من بحث داره تا حدودی منحرف میشه وکاربر system32 که این تایپیکو تا اینجا خیلی خوب مدیریت کرده بهتره بیشتر دخالت کنه

دوم اینکه بهتره تمام توان رو در سر یک نرم افزار پیاده نکنیم

به نظر من نوعی اصولاً بخش امنیت و جلوگیری از انتشار سورس کدها تا حدود 90 درصد بسته به برنامه نویس داره
وقتی شما یک Total رو در یک سیستم اداری Run میکنید چه مواردی را برای امنیت برنامه در نظر میگیرید
ما احتیاج به فایروال داریم
اختیارات User را تا جای ممکن محدود کنیم
و...

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

باید این بحث هم مطرح بشه که از راه دور یک شخص چگونه میتونه به سورس دسترسی پیدا کنه

و به نظر من یک تحقیق جامع در مورد شرکتهایی مانند هلو , سیب سبز و.. که نرم افزارهای حساب داری بسیار قوی نوشتن بشه تا ببینیم شرکتهای حرفه ای در این زمینه چه کاری رو انجام میدن

Nima NT
پنج شنبه 29 مرداد 1388, 01:50 صبح
و به نظر من یک تحقیق جامع در مورد شرکتهایی مانند هلو , سیب سبز و.. که نرم افزارهای حساب داری بسیار قوی نوشتن بشه تا ببینیم شرکتهای حرفه ای در این زمینه چه کاری رو انجام میدن
این سیستم ها با Delphi طراحی شدن و قضیه لو رفتن کد برای اینها منتفی هست.

به نظر من نوعی اصولاً بخش امنیت و جلوگیری از انتشار سورس کدها تا حدود 90 درصد بسته به برنامه نویس داره
وقتی شما یک Total رو در یک سیستم اداری Run میکنید چه مواردی را برای امنیت برنامه در نظر میگیرید
ما احتیاج به فایروال داریم
اختیارات User را تا جای ممکن محدود کنیم
و...

کراکر یک نسخه از نرم افزار رو میخره , یا میگیره از کسی و بعد میتونه کد رو ببینه , نیازی به فایروال و اینها نیست. منظورتون چی هست ؟

keivan mousavi
پنج شنبه 29 مرداد 1388, 02:06 صبح
این سیستم ها با Delphi طراحی شدن و قضیه لو رفتن کد برای اینها منتفی هست.

سیب سبز با دات نت نوشته شده ولی نمیدونم با کدوم عضوش چون من با خوده مهندسشون صحبت کردم و برنامه رو وقتی در سرور راه اندازی شد دیدم


کراکر یک نسخه از نرم افزار رو میخره , یا میگیره از کسی و بعد میتونه کد رو ببینه , نیازی به فایروال و اینها نیست. منظورتون چی هست ؟
در مورد امنیت شبکه هم این مسئله مهم هستش یک User بر فرض مثال در ناحیه DC عضو هستش و میتونه به سرور های مختلف در یک شبکه Log کنه حال در اینصورت شما چه کاری انجام میدی در یک شبکه یک User باید در یک سرور Admin باشه و در سرور دیگر Gost ؟؟؟
این مسئله با فایروآل البته نه اون فایروآلی که شما در ذهن دارید میسر میشه


این سیستم ها با Delphi طراحی شدن و قضیه لو رفتن کد برای اینها منتفی هست.

من فکر کنم در تایپیک گذشته Delphi و دات نت رو به اندازه کافی بحث کردیم و متوجه شدیم که در Delphi هم امکان لو رفتن سورس وجود داره
بحث امنیت فقط مختص به C#.NET نیست و کلیه زبانهای دیگه هم حتی زبانهای سطح پایین قابل کرک شدن هستن

اَرژنگ
پنج شنبه 29 مرداد 1388, 05:44 صبح
من فکر کنم در تایپیک گذشته Delphi و دات نت رو به اندازه کافی بحث کردیم و متوجه شدیم که در Delphi هم امکان لو رفتن سورس وجود داره
بحث امنیت فقط مختص به C#.NET نیست و کلیه زبانهای دیگه هم حتی زبانهای سطح پایین قابل کرک شدن هستن

من کاملا با شما موافقم،
من هم همین را در پست شماره ۳۵ گفتم.
بحث امنیت با کرک شدن و با دیده شدن کد تفاوت دارد.
قبلا در مورد امنیت در دات‌نت که بسیار هم قوی هست لینک فرستاده بودم.
مشکل کرک شدن ربطی به این تالار و سی‌شارپ ندارد.
مشکل دیده شدن کد، ربطی به این تالار و سی‌شارپ ندارد.
مشکل کار کردن با امنیت در سی‌شارپ ربطی به این توپیک ندارد.

اَرژنگ
پنج شنبه 29 مرداد 1388, 08:18 صبح
به تمام کسانی که میگند با فرلکتر میشه کد کامل را بدست آورد:
کد اینکه این بابا چطوری یک مساج باکس فارسی را ساخته و در همین تالار است را بزارید زیره توپیکش.
مسیج باکس تمام فارسی
http://barnamenevis.org/forum/showthread.php?t=115092
لااقل یک فایده‌ای داشته باشید، به جایه اینکه فقط همه را بترسانید، و شدن یک کار خیلی ساده را نشان بدید، اگر هم که نه نمیتوانید...

system32
پنج شنبه 29 مرداد 1388, 09:22 صبح
دوستان سلام.

من قبلا عرض کردم که بحث در مورد راه های جلوگیری به کدها به پایان رسید و در این مورد دو نتیجه گرفته شد. پس دوستانی که می خواهند نتیجه را ببینید به اینجا (http://barnamenevis.org/forum/showpost.php?p=784769&postcount=50)مراجعه کنند. لطفا دیگر در مورد این موضوع بحث نشود چون احتمال زیادی دارد که این تاپیک توسط مدیر بخش به علت بی ارتباط بودن با بخش حذف گردد. اگه بیشتر از این می خواهید بدانید لطفا تاپیکی را در بخش امنیتی همین سایت ایجاد کرده وسوال خود را بپرسید. ممنون.


و اما یک سوال کلی دیگه:

سوال: دوستان چه پارامترهای دیگه ای برای برقراری امنیت نیاز هست؟ لطفا آن ها را به صورت عبارتی بیان کنید تا روی این موضوعات نیز بحث شود.

با سپاس فراوان از شما دوستان عزیز. :قلب:

Nima NT
پنج شنبه 29 مرداد 1388, 16:27 عصر
بحث امنیت فقط مختص به C#.NET نیست و کلیه زبانهای دیگه هم حتی زبانهای سطح پایین قابل کرک شدن هستن کرک شدن یک بحث هست و دیده شدن سورس کد بحث دیگه , کسی نگفت کرک نمیشن گفتم سورشون دیده نمیشه , و در مورد این حرفم 100% مطمئن هستم. ( فقط این میون delphi.net استثناء هست که اون هم جزو زبانهای دات نت محسوب میشه و ربطی به win32 نداره ).

لااقل یک فایده‌ای داشته باشید، به جایه اینکه فقط همه را بترسانید، و شدن یک کار خیلی ساده را نشان بدید، اگر هم که نه نمیتوانید...این دومین باری است که دارید توهین میکنید !!!!! :عصبانی:
در مورد سورسی که هم خواستید , Reflector کار کردن باهاش زیاد سخت نیست , میتونید خودتون امتحان کنید.

سوال: دوستان چه پارامترهای دیگه ای برای برقراری امنیت نیاز هست؟ لطفا آن ها را به صورت عبارتی بیان کنید تا روی این موضوعات نیز بحث شود. میتونید مقاله ای رو که ضمیمه کردن مطالعه کنید , هر جا مشکلی بود میتونید در تالار امنیت در برنامه نوسی مطرح کنید تا جواب بدن بهتون .( چون خودم به خاطر مشکلی که در پیام خصوصی بهتون گفتم , مدتی حضور نخواهم داشت ).

keivan mousavi
پنج شنبه 29 مرداد 1388, 22:56 عصر
کرک شدن یک بحث هست و دیده شدن سورس کد بحث دیگه , کسی نگفت کرک نمیشن گفتم سورشون دیده نمیشه , و در مورد این حرفم 100% مطمئن هستم. ( فقط این میون delphi.net استثناء هست که اون هم جزو زبانهای دات نت محسوب میشه و ربطی به win32 نداره ).


منظور من از کرک همون هک هستش(فکر کنم منظورمو بد رسوندم)
یکبار من از استاد دانشگاهمون همچین سوالیرو کردم که یک فایل DLL داریم که با C#.NET نوشته شده و من میخوام سورس اونو در بیارم
استاد چند نرم افزارو معرفی کرد ولی گفت که دقیقاً مثل C#.NET در نمیاره و یک شبه کد به شما میده

در صورتی که شما اگه با زبانهای دیگری مانند C++ برنامه بنویسید میتونید تا حدود 90 درصد از کدهارو دربیاری

یک نکته دیگری درمورد دلفی
نرم افزار دلفی توسط ماکروسافت خریده شده و دیگر وژرنی از این نرم افزار به وجودنخواهد آمد

در ضمن ویژوآل استادیو دارای منبع هستش و شما همیشه میتوانید به این منابع دسترسی داشته باشی(منظور از منبع کمپانی سازنده میباشد)
در صورتی که این امر درمورد خیلی از زبانها وجود نداره

Armin060
جمعه 30 مرداد 1388, 00:15 صبح
منظور من از کرک همون هک هستش
كرك يه چيزه و هك يه چيزه ديگه.
عبارت "هك" مختص برنامه های وب است.


در صورتی که شما اگه با زبانهای دیگری مانند C++ برنامه بنویسید میتونید تا حدود 90 درصد از کدهارو دربیاری

امكان نداره بشه زبان دو دو یی رو به زبان های سطح بالا تبديل كرد. اين از نظر منطقی ثابت شده و چيزی نيست كه با پيشرفت علم امكان پذير بشه. ( البته اين يه تيكه رو از قول Inprise گفتم )

حالا هم كه استاد شما اين حرف رو زده ازش بپرسيد چطوری بعد بيايد به ما هم بگيد. راستش من سورس ويندوز و ويژوال استاديو رو خيلی احتياج دارم. :قهقهه:

keivan mousavi
جمعه 30 مرداد 1388, 01:06 صبح
كرك يه چيزه و هك يه چيزه ديگه.
عبارت "هك" مختص برنامه های وب است
منکه گفتم منظورمو بد رسوندم
وقتی که به یک سورس یک برنامه دست پیدا میکنن در اصطلاح میگن هک شده من سالها کارم شبکه بوده پس حتماً بهتر از شما با واجه هک آشنا هستم
نشون به اون نشون که وقتی ویندوز های ماکروسافتو از حالت تریال در میارن بهش چه واجه ای رو نسبت میدن؟؟؟


حالا هم كه استاد شما اين حرف رو زده ازش بپرسيد چطوری بعد بيايد به ما هم بگيد. راستش من سورس ويندوز و ويژوال استاديو رو خيلی احتياج دارم.
مگه ویژوآل استادیو با C++ نوشته شده؟

شما که مدعی یکی از قدیمی ترین عضوهای این گروه هستید هنوز نمیدونید که یک زبان برنامه نویسیو چگونه ابداع میکنن؟؟؟

من درمورد سورس ویندوز صحبت نکردم
شما هنوز با مفهوم معماری نرم افزار هم آشنا نیستید
شما هنوز نمیدونید ویندوز رو با چه نرم افزارهایی نوشتن

پس برید هر وقت جوابی برای این سوال ها پیدا کردید تشریف بیاورید
در ضمن من اگر جای شما بودم هیچ وقت از یک استاد ایراد نمیگرفتم

یکبار دیگه برای دوستانی که منظورمو متوجه نشدن توضیح میدم
وقتی شما سورس یک فایل DLL که با C#.NET نوشته شده را بدست میارید یک شبه کد به شما میده که برای اجرا باید روی آن کار کنید
ولی وقتی سورس برنامه های نوشته شده با زبانهای دیگری مانند C++ را بدست میاورید کدهایی که به شما میده عین کدهایی که شما نوشتید نیست ولی همون کارو برای شما انجام میده


عبارت "هك" مختص برنامه های وب است
جای تامل


امكان نداره بشه زبان دو دو یی رو به زبان های سطح بالا تبديل كرد. اين از نظر منطقی ثابت شده و چيزی نيست كه با پيشرفت علم امكان پذير بشه

کدوم زبان دودویی را شما میگید؟؟؟
اگر منظورتون C++ هستش C++ یک زبان سطح بالاست نه دودویی

اَرژنگ
جمعه 30 مرداد 1388, 02:42 صبح
کرک شدن یک بحث هست و دیده شدن سورس کد بحث دیگه , کسی نگفت کرک نمیشن گفتم سورشون دیده نمیشه , و در مورد این حرفم 100% مطمئن هستم. ( فقط این میون delphi.net استثناء هست که اون هم جزو زبانهای دات نت محسوب میشه و ربطی به win32 نداره ).
این دومین باری است که دارید توهین میکنید !!!!! :عصبانی:
در مورد سورسی که هم خواستید , Reflector کار کردن باهاش زیاد سخت نیست , میتونید خودتون امتحان کنید.
میتونید مقاله ای رو که ضمیمه کردن مطالعه کنید , هر جا مشکلی بود میتونید در تالار امنیت در برنامه نوسی مطرح کنید تا جواب بدن بهتون .( چون خودم به خاطر مشکلی که در پیام خصوصی بهتون گفتم , مدتی حضور نخواهم داشت ).

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

اَرژنگ
جمعه 30 مرداد 1388, 02:56 صبح
در ضمن من اگر جای شما بودم هیچ وقت از یک استاد ایراد نمیگرفتم



چرا که نه؟ ایراد به ایده و بحث را اگر درست نیست باید حتما گرفت.
به خاطر اینک یکی سالهایه بیشتری کاری را انجام میده دلیل بر اینکه همه چیزی که میگه درست باشد نیست!
تجربه و لقب کسی را غیره قابل انتقاد نمیکنه، اگر ایده و یا چیزی که میگند به نظر کامل و درست نیاد باید سوال بشه. اگر کسی واقعا استاد هست از اینکه یک چیزه جدید و درست یاد بگیره خوشحال میشه.

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

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

Armin060
جمعه 30 مرداد 1388, 05:03 صبح
واسه اينكه بحث موضوع تاپيك عوض نشه جواب آقای keivan mousavi رو در پيغام خصوصی دادم و جناب System32 هم درخواست كرك Xenocode رو كرده بودند. هر كی خواست پيغام خصوصی بده تا واسش ارسال كنم،

در مقاله ای كه جناب NimaNT گزاشته بودند ( كه خيلی هم خوب بود )، گفته بودن كه مقدار CRC و MD5 فايل Dll رو چك كنيم، در مورد CRC توضيح داده بودند ولی MD5 رو نگفتند چی هست و همچنين نگفتند گه چطوری CRC و MD5 فايل رو چك كنيم. ( البته گمونم خود دات نت فريم ورك اين كار رو انجام ميده ) حالا ممنون ميشم يكی توضيح بده كه چطوری اينكار رو انجام بديم؟

system32
جمعه 30 مرداد 1388, 08:16 صبح
جدا جای تاسف داره که بعضی از دوستان فضای تاپیک را با مباحثی غیر از موضوع اصلی دارند پر می کنند. پیغام خصوصی را هشتند برای همین کارها. لطفا از مجادله های بی فایده اجتناب کنید. فکر کنم اگه اینطوری بخواد پیش بره به زودی این تاپیک توسط مدیر بخش قفل بشه.

سوالی را دوست عزیزمون جناب Armin060 پرسیدند که می تونه از حالا موضوع بحث باشه:

در مقاله ای كه جناب NimaNT گزاشته بودند ( كه خيلی هم خوب بود )، گفته بودن كه مقدار CRC و MD5 فايل Dll رو چك كنيم، در مورد CRC توضيح داده بودند ولی MD5 رو نگفتند چی هست و همچنين نگفتند گه چطوری CRC و MD5 فايل رو چك كنيم. ( البته گمونم خود دات نت فريم ورك اين كار رو انجام ميده ) حالا ممنون ميشم يكی توضيح بده كه چطوری اينكار رو انجام بديم؟

در ضمن دوستان دیگه هم اگه سوال امنیتی دارند می تونند بیان کنند که جواب داده بشه. (البته اگه بعضی از کاربران بزارند و با بحث های بی مورد باعث نشند تاپیک قفل بشه).

ممنون از همگی.

Mahdi.Kiani
جمعه 30 مرداد 1388, 08:33 صبح
سلام دوستان
از حواشی به درو باشید.والا این تاپیک هم به سرنوشت بسیاری از تاپیک های دیگر دچار خواهد شد.حدود 70 پست ایجاد کرده اید که بسیاری ا آن ها فاید محتوای علمی و تنها کل کل کردن های بی مورد بوده که علاوه بر هدر دادن فضای سایت باعث هدر دادن وقت سایر کاربران نیز خواهد شد.
این اولین و آخرین اخطار بنده در مورد این تاپیک می باشد.
موفق باشید

اَرژنگ
جمعه 30 مرداد 1388, 09:38 صبح
سلام دوستان
از حواشی به درو باشید.والا این تاپیک هم به سرنوشت بسیاری از تاپیک های دیگر دچار خواهد شد.حدود 70 پست ایجاد کرده اید که بسیاری ا آن ها فاید محتوای علمی و تنها کل کل کردن های بی مورد بوده که علاوه بر هدر دادن فضای سایت باعث هدر دادن وقت سایر کاربران نیز خواهد شد.
این اولین و آخرین اخطار بنده در مورد این تاپیک می باشد.
موفق باشید
با تشکر از جناب کیانی،
اگر ممکن است شما در مورد چه موضوعاتی در این تپیک میتوانیم پیش بریم را لطفاً معیین کنید، که دیگر سر اینکه موضوع این توپیک چی هست جایه سوالی نماند.

با احترام

Mahdi.Kiani
جمعه 30 مرداد 1388, 12:15 عصر
با تشکر از جناب کیانی،
اگر ممکن است شما در مورد چه موضوعاتی در این تپیک میتوانیم پیش بریم را لطفاً معیین کنید، که دیگر سر اینکه موضوع این توپیک چی هست جایه سوالی نماند.

با احترام

با سلام مجدد
عنوان تاپیک "امنیت در سی #C" می باشد. این عنوان به نظر بنده بسیار کلی است(با توجه به ماهیت کلمه امنیت). به نظر من ابتدا می بایستی تعریفی جامع از امنیت ارائه می شد و پس از آن به بررسی روش ها و ابزارهای مورد نیاز در جهت رسیدن به امنیت بالاتر در برنامه ها بحث می شد.
این تاپیک می توانست با عنوانی مثلا" امنیت در برنامه های دات نت " و در بخش کلی تری مطرح گردد. چرا که چهارچوبه زبان های برنامه نویسی که بر پایه پلت فرم دات نت می باشند یکی است.
اما در متن تاپیک (اولین پست)، اشاره به این شده که به عنوان سوال اول، هدف جلوگیری از سورس شدن برنامه های دات نت می باشد.
دوستان می توانند در این باره بحث کنند و به یک نتیجه واحد برسند.که فکر می کنم به اندازه کافی در این مورد بحث شده. کاربر ایجاد کننده تاپیک می توانند یک نتیجه گیری کلی در مورد سوال اول انجام داده و نتیجه را به سمع و نظر کاربران برساند.
پس از آن می توانند به سوال دیگری بپردازند.

اما در هر صورت توجه به نکات زیر می تواند روند مثبت تری به تاپیک دهد:
1- پاسخ ها بدون تعصب نسبت به یک زبان، یک فریم ورک و ... باشند
2-پاسخ ها همراه با مدرک و سند قابل استناد باشند
3-از فرستادن پاسخ های نا مرتبط مثلا قرار دادن فایل های Crack Me و ... خودداری شود
4-از کل کل کردن پرهیز شود
5....
********
موفق باشید
پ و:
شاید در اینده ای نزدیک، بسته به روند تاپیک، تاپیک را به محل مناسب تری و با عنوان مناسب تری انتقال دهم

system32
جمعه 30 مرداد 1388, 13:34 عصر
با تشکر از مدیر بخش:

لازم دانستم در تایید کلام ایشان سخنی بگویم:

اینجانب نیز در اولین پستم به کاربران عزیز گوشزد نمودم موضوع این تاپیک کلی است لذا ابتدا سوال راههای جلوگیری از نفوذ به کدها را بررسی می نماییم (که یک بحث کاملا مهم است) و سپس در ادامه دوستان سوالاتی در این زمینه دارند بیان کنند تا با بقیه کاربران به سوال این کاربر جواب داده شود. اولین سوال که پرسیده شد با استقبال کاربران مواجه گردید و در نهایت نیز به یک جمع بندی رسیدیم که دوستان می توانند در این صفحه (http://barnamenevis.org/forum/showpost.php?p=784769&postcount=50) جمع بندی انجام گرفته را مشاهده کنند. ولی متاسفانه بعضی دوستان با مجادله های بی مورد و بی فایده بحث را از موضوع اصلی دور کردند. که به تذکرات اینجانب و شما انجامید. حالا با این توصیفات از دوستان می خواهم در صورتی که سوال امنیتی دارند در این تاپیک بیان نمایند تا به آن پرداخته شود و کشمکش های خود را در پیام های خصوصی بیان نمایند. در ضمن از آقای کیانی خواهش می کنم اگر پستی با موضوع تاپیک بی ارتباط بود لطفا آن پست را حذف کنند تا تاپیک روند عادی خود را طی کند. و کاربر مربوطیه نیز از تکرار عمل خود جلوگیری کند.

با تشکر وسپاس فراوان از کلیه دوستان عزیز.

اَرژنگ
جمعه 30 مرداد 1388, 18:49 عصر
اولین سوال که پرسیده شد با استقبال کاربران مواجه گردید و در نهایت نیز به یک جمع بندی رسیدیم که دوستان می توانند در این صفحه (http://barnamenevis.org/forum/showpost.php?p=784769&postcount=50) جمع بندی انجام گرفته را مشاهده کنند.
...
از دوستان می خواهم در صورتی که سوال امنیتی دارند در این تاپیک بیان نمایند تا به آن پرداخته شود

نتیجه‌گیریهایه که گرفته شد:


نتیجه گیری از سوال اول:
1- به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود. فقط می توان کاری کرد که این کار سخت تر انجام شود.
2- شما می توانید بوسیله نرم افزارهای Obfuscator نفوذ به کدهایتان را مشکل نمایید. این کار با تغییر نام متغیرها و ... برنامه شما انجام می گیرد.

۱.نتیجه گیری اول بدست آوردن کدها را ساده جلوه میده، در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند، پس نتیجه گیری را باید به این تغییر داد:
۱.با اینکه به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود، اینکار کار آسانی نیست و یک پروژه کاملا را تبیدل به سورس نمیکنه، فقط یک شبه کد بدست میاد که بعدش هم باید با تلاش زیاد بشه ازش استفاده کرد.

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

نتیجیه‌گیرهایه که شده گمراه کننده هستند، تنها حسی که این نتیجیه‌گیرها به کاربران تازه‌وارد میده این است که یکی میتونه کد کامل پروژه‌شان را براحتی فقط با استفاده از رفلکتور کاملا بدست بیاره.

keivan mousavi
جمعه 30 مرداد 1388, 20:10 عصر
من تا حدود 90 درصد با دوست خوبم آقای آرژنگ موافق هستم

ولی مسئله ای که وجود داره راه برای بدست آوردن سورس وجود داره و ما فقط میتونیم مانند بیماری ایدز که راه درمان نداره و فقط میشه دوره نقاهدو به تاخیر انداخت ما هم دوره بدست آوردن سورسو به تاخیر بندازیم و کاری کنیم که شخص برای بدست آوردن سورس هزینه سربار زیادی بپردازه

چیزی که مسلم هستش این ایراد در نسخه های بعدی ویژوآل حل خواهد شد و ویژوآل پیشرفت خواهد کرد

saeed2rele
جمعه 30 مرداد 1388, 22:29 عصر
چیزی که مسلم هستش این ایراد در نسخه های بعدی ویژوآل حل خواهد شد و ویژوآل پیشرفت خواهد کرد

من فکر میکنم این اتفاق نمی افته چون در هیچ منبعی از این خصوصیت به عنوان ایراد نام برده نشده.

keivan mousavi
جمعه 30 مرداد 1388, 23:55 عصر
من فکر میکنم این اتفاق نمی افته چون در هیچ منبعی از این خصوصیت به عنوان ایراد نام برده نشده.

کدوم ماست بندی هست که بگه ماست من شوره؟؟؟
من شخصاً تا به حال سراغ نداشتم که ماکروسافت به عیبی از نرم افزارهای خودش اعتراف کرده باشه


به نظر شما اگر این یک ایراد بود، از سال 2000 که برای اولین بار صحبت رسمی در مورد پلت فرم دات ن ت و زبان سی شارپ در کنفرانس PDC 2000 به میان آمد تا امروز که در حال ریلیز نسخه 4 از این پلت فرم هستند، نمی بایست حل می شد؟
من در تایپیک گذشته گفتم که ماکروسافت حق امتیاز نرم افزار دلفی رو خرید
به نظر من ادقام این دو نرم افزار باعث پیشرفت میشه

چیزی که در دنیای گرافیک شد یعنی خرید نرم افزار 3MAX از طرف شرکت MAYA

Mahdi.Kiani
جمعه 30 مرداد 1388, 23:56 عصر
چیزی که مسلم هستش این ایراد در نسخه های بعدی ویژوآل حل خواهد شد و ویژوآل پیشرفت خواهد کرد




Programs written for .NET are easy to reverse engineer. This is not in any way a fault in the design of .NET; it is simply a reality of modern, intermediate-compiled languages

به نظر شما اگر این یک ایراد بود، از سال 2000 که برای اولین بار صحبت رسمی در مورد پلت فرم دات ن ت و زبان سی شارپ در کنفرانس PDC 2000 به میان آمد تا امروز که در حال ریلیز نسخه 4 از این پلت فرم هستند، نمی بایست حل می شد؟

یک سوال:
تا بحال چقدر در مورد این که اصلا چرا دات نت ظهور کرد تحقیق و فکر کردید؟منظورم شخص شما نیست. کلا دوستانی که ماهیت دات نت را با ایراداتی همچون مسائلی که در این تاپیک مطرح شده زیر سوال می برند.

Mahdi.Kiani
شنبه 31 مرداد 1388, 00:09 صبح
کدوم ماست بندی هست که بگه ماست من شوره؟؟؟
من شخصاً تا به حال سراغ نداشتم که ماکروسافت به عیبی از نرم افزارهای خودش اعتراف کرده باشه



قرار شد آف تاپیک نزنید.
مدیران هم می تونند آف بزنند؟
من تا بحال یاد ندارم که ایرادات و باگ های کوچکی در نرم افزارهای ماکروسافت بوده باشه، به آن ها اطلاع داده باشند و رفع نشده باشه.مگر اینکه ما اطلاعاتی در این مورد نداشته باشیم.مانند همین چند وقت پیش که یک دوستی از هیجان تا دم فوت رفته بود که باگی در excel پیدا کرده بود کلی هم ذوق کرده بود که اولین نفری است که این باگ را کشف کرده بود و ادعا می کرد که این باگ یک باگ حیاتی است و تمامی شرکت های استفاده کننده از excel منفجر خواهند شد!. در حالی که تنها یک باگ نمایشی بود و نه محاسباتی و جالب تر اینکه چند سال پیش گزارش شده بود و رفع شده بود!!!
حالا ....




من در تایپیک گذشته گفتم که ماکروسافت حق امتیاز نرم افزار دلفی رو خرید
به نظر من ادقام این دو نرم افزار باعث پیشرفت میشه

چیزی که در دنیای گرافیک شد یعنی خرید نرم افزار 3MAX از طرف شرکت MAYA

اینکه دات نت در حال پیشرفت هست شکی توش نیست ولی این ربطی به مطلب شما در مورد ایرادی که بیان کردین نداره...


**********
دوستان خواهشا آف نزنید. گناه من هم گردن شماهاستا.
موفق باشید

keivan mousavi
شنبه 31 مرداد 1388, 01:04 صبح
من تا بحال یاد ندارم که ایرادات و باگ های کوچکی در نرم افزارهای ماکروسافت بوده باشه، به آن ها اطلاع داده باشند و رفع نشده باشه.مگر اینکه ما اطلاعاتی در این مورد نداشته باشیم.مانند همین چند وقت پیش که یک دوستی از هیجان تا دم فوت رفته بود که باگی در excel پیدا کرده بود کلی هم ذوق کرده بود که اولین نفری است که این باگ را کشف کرده بود و ادعا می کرد که این باگ یک باگ حیاتی است و تمامی شرکت های استفاده کننده از excel منفجر خواهند شد!. در حالی که تنها یک باگ نمایشی بود و نه محاسباتی و جالب تر اینکه چند سال پیش گزارش شده بود و رفع شده بود!!!

در نسخه مرورگر وب ماکروسافت Internet Explore در نسخ 5 این نرم افزار حدود 26 نقطه نفوذ خطرناک پیدا کردن و تا به امروز که نسخه 7 این نرم افزار در بازار موجود هست این باگ برطرف نشده


یک سوال:
تا بحال چقدر در مورد این که اصلا چرا دات نت ظهور کرد تحقیق و فکر کردید؟منظورم شخص شما نیست. کلا دوستانی که ماهیت دات نت را با ایراداتی همچون مسائلی که در این تاپیک مطرح شده زیر سوال می برند

پیشرفت ابزارهای برنامه نویسی و دستگاههای الکترونیکی (مثل تلفن همراه و PAD ها) مشکلات و نیازمندیهای جدیدی را به وجود آورد جامعیت قطعات نرم افزاری از زبانهای مختلف ثابت کرد که این دشواری و مشکلات نصب متداول بودند زیرا نسخه های جدید قطعات مشترک با نرم افزارهای قدیمی ناسازگار بودند توسعه دهندگان پی بردند که به کاربردهای وبی نیاز دارند که بتوانند از طریق اینترنت دستیابی داشته باشند به دلیل شهرت دستگاههای الکترونیکی سیار توسعه دهندگان نرم افزار پی بردند که Client ها لازم نیست کامپیوترهای رومیزی باشند به این ترتیب به وجود نرم افزاری پی بردن ه توسط هرکس و هر گونه دستگاهی قابل دسترسی باشد برای برآورده کردن این نیازها در سال 2000 میکروسافت زبان برنامه نویسی C# را اعلان کرد C# برای سکوی NET. فراهم شد
سکوی NET. بسیاری از فن آوریهای پراکنده میکروسافت در کنار هم قرار داد برای مثال سرویس قطعات COM+ محیط کاری توسعه وب ASP تثبیت زبان XML و طراحی شیءگرا پشتیبانی از پروتکل های جدید وب سرویس مثل SOAP , WSDL , UDDI و تاکید بر اینترنت همگی در یک معماری گنجانده شده است سکوی NET. در اصل یک محیط کاری جدید است که یک واسطه برنامه نویسی کاربردی API جدید را برای سیستم عامل ویندوز فراهم میسازد


اینکه دات نت در حال پیشرفت هست شکی توش نیست ولی این ربطی به مطلب شما در مورد ایرادی که بیان کردین نداره...

این نظر شخصی من و نوع دیگاه من نسبت به این قضیه بود چیزی که قبلاً مشابه اش رو دیده بودم

saeedr22
شنبه 31 مرداد 1388, 03:48 صبح
بحث جالبیه لطفاً بهتر ادامش بدین و تخصصی تر بشه ما که داریم استفاده می کنیم. ممنونم

system32
شنبه 31 مرداد 1388, 09:57 صبح
دوستان سلام.

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

با سپاس از شما.


-------------------------------------------
رمضان، موسم عبادت است و عبادت غذای روح.

system32
شنبه 31 مرداد 1388, 13:19 عصر
دوستان اینم یه نمونه سوال که می تونه راهنمای دوستان در زمینه بحث در این تاپیک باشه.

سوال: کسی راجع به X509Certificates که در فضای نام Security.Cryptography قرار داره می تونه یه سری اطلاعات در اختیار بقیه قرار بده. ممنون.

Unknownlive
شنبه 31 مرداد 1388, 14:10 عصر
یه روش کلی برای غیر ممکن کردن دسترسی به برنامه از طریقه نرم افزارهای Restrator Hack که میان مثلا لوگو برنامه شما را عوض می کنند یا منو های شما و عکس ها را دستکاری می کنن اینه که شئ ها را در زمان اجرا ایجاد کنید یعنی به جای گذاشتن یک PictureBox در فرم ان را در کد نویسی ایجاد کنید.این خیلی مهمه و امنیت فوق العاده اپ می شه.

Nima NT
شنبه 31 مرداد 1388, 14:11 عصر
با سلام
خدا رو شکر عملم موفقیت آمیز بود و راحت شدم.
ولی در مورد جناب موسوی که گفته بودن وقتی ویندوز از حالت تریال در بیاد بهش میگن هک شد !
این برداشت اشتباه هست , اینجا میگن کرک شد , کرک و مهندسی معکوس دو علم هستن که به موازات هم گسترش پیدا کردن و چون اهدافشون 100% مخرب هست از شاخه هک جدا شدن , چرا که هک امکان مفید واقع شدن هم وجود داره.
و در مورد جناب ارژنگ خان , بنده ادعایی کردم و انجامش هم دادن , چند نمونه کرک می گذاشتند , کرک کردم و در مواردی سورس رو هم تحویل دادم ,حالا اگر شما مایل هستید که هنوز هم فکر کنید که سورس رو نمیشه در آورد یا اگر هم بشه کاربردی نیست , به خودتون مربوطه. ( البته منظورم همون آنپک می هاست )
در مورد سوال جناب System32 هم که در مورد md5 پرسیدن , میتونم بگم که md5 هم دقیقا" مثل crc عمل میکنه و کاربرد مشابهی دارن , در حالت کلی میتونم توصیه کنم که بیشتر به جای CRC از MD5 استفاده کنید.

Armin060
شنبه 31 مرداد 1388, 14:37 عصر
یه روش کلی برای غیر ممکن کردن دسترسی به برنامه از طریقه نرم افزارهای Restrator Hack که میان مثلا لوگو برنامه شما را عوض می کنند یا منو های شما و عکس ها را دستکاری می کنن اینه که شئ ها را در زمان اجرا ایجاد کنید یعنی به جای گذاشتن یک PictureBox در فرم ان را در کد نویسی ایجاد کنید.این خیلی مهمه و امنیت فوق العاده اپ می شه.


كنترل ها در حالت عادی هم با كد درست ميشند.

و Nima NT جان، اگر ميشه بگيد چطوری بايد مقدار MD5 يا CRC فايل رو به دست بياريم؟

Nima NT
شنبه 31 مرداد 1388, 16:06 عصر
سلام
والا تو دات نت بلد نیستم این کار رو انجام بدم.

system32
شنبه 31 مرداد 1388, 18:16 عصر
دوستان چند پست بالاتر یه سوال کردم اینم کمی اطلاعات که در این مورد بدست آوردم:

یک public-key certificate یک امضای دیجیتالی است که از سوی یک نهاد یا موسسه ارائه می گردد. بیشتر از این مورد در مرورگرهای اینترنتی که پروتوکل SSL را پشتیبانی می کنند استفاده می گردد.
X.509 تعیین می کند که چه اطلاعاتی به عنوان امضای دیجیتالی استفاده شود و چگونه آن ها باید نوشته شوند.

اگه دوستان مطلب دیگری درباره نحوه کدنویسی و کاربردهای این مورد می دانند لطفا از گفتن آن دریغ ننمایند. ممنون.

-----------------------------------
انسان مجموعه ای از آنچه دارد نیست، بلکه مجموعه ای است از آنچه هنوز ندارد، اما می تواند داشته باشد.

اَرژنگ
شنبه 31 مرداد 1388, 18:21 عصر
و در مورد جناب ارژنگ خان , بنده ادعایی کردم و انجامش هم دادن , چند نمونه کرک می گذاشتند , کرک کردم و در مواردی سورس رو هم تحویل دادم ,حالا اگر شما مایل هستید که هنوز هم فکر کنید که سورس رو نمیشه در آورد یا اگر هم بشه کاربردی نیست , به خودتون مربوطه. ( البته منظورم همون آنپک می هاست )

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

آیا قبول دارید که ادعا این بود:
"تبدیل به کد در دات‌نت آسان هست"؟

من گفتم اگر این ادعا درست است یک تابع را که در همین تالار وجود دارد و کاربران سورسش را میخواهند استخراج بشد و هم اینکه از این توپیک یک فایده‌ای در میامد.

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

keivan mousavi
شنبه 31 مرداد 1388, 19:20 عصر
درود بر نیمای عزیزم
خوشحالم که عملت به خوبی انجام شد و به این انجمن برگشتی

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

وقتی شما داری یک فایل رو مورد تغییرات انجام میدی به این عملیات هک میگن در واقع ویندوزی که من و شما داریم استفاده میکنیم حاصل دست رنج هکرهای چینی هستش
کرک اسم بسته نرم افزاری هستش که برای اعمال انجام تغییرات بروی اون نرم افزار انجام میشه

اَرژنگ
شنبه 31 مرداد 1388, 20:42 عصر
دوست عزیز من یک تعریفی از هک میکنم
هک در زبان انگلیسی به معنی کلنگ هستش و در کامپیوتر هر کاری که واسه خراب کاری باشه بهش هک مبگن

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

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

system32
شنبه 31 مرداد 1388, 20:46 عصر
دوستان اینم برای آخرین بار:

لطفا مباحث مربوط به هک و کرک را در بخش خودش بحث کنید یا به هم پیام بزنید. اینجا فقط روی مباحث مربوط به امنیت در #C صحبت کنید. اگه مدیر بخش اینجا را قفل کنه بهش حق می دم. دیگه با خودتون. بای

keivan mousavi
شنبه 31 مرداد 1388, 22:17 عصر
این تایپک هم داره به سرنوشت تایپیک قبلی که در همین زمینه بود دچار میشه با این تفاوت که این دفعه موضوع مشخصه مدیریت هم داره اعمال میشه ولی هنوز هم به جواب قطعی نرسیدیم
به نظر شما مشکل از کجاست؟؟؟

به نظر من به جای اینکه انقدر به مسائل حاشیه ای بپردازیم و اینقدر از هم ایراد بگیریم بهتره به فکر چاره ای باشیم
آیا این بهتر نیست؟؟؟

واقعاً جای تاسف داره در بزرگترین سایت برنامه نویسان ایران با وجود بزرگترین برنامه نویسان در زمینه OO هیچکس حرف کسیرو قبول نداره و هرکسی مدعی این هستش که حرف خودش درسته

امام علی در این زمینه میفرماید
آدم عاقل کسی هست که همیشه به حرف خودش شک کند

به راستی که اگر یک اجنبی بیاید و این تایپیکهارو ببیند پیش خودش چه فکری میکند؟؟؟

system32
شنبه 31 مرداد 1388, 22:34 عصر
تا حالا دو سوال مطرح شده:

سوال: چکار کنیم تا جلوی نفوذ به کدهایمان گرفته شود؟

جواب و نتیجه: به نظر عده ای از دوستان نتیجه های زیر:

1- به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود. فقط می توان کاری کرد که این کار سخت تر انجام شود.
2- شما می توانید بوسیله نرم افزارهای Obfuscator نفوذ به کدهایتان را مشکل نمایید. این کار با تغییر نام متغیرها و ... برنامه شما انجام می گیرد.

و به نظر عده ای دیگر در مقابل نتیجه گیری بالا:

۱.نتیجه گیری اول بدست آوردن کدها را ساده جلوه میده، در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند، پس نتیجه گیری را باید به این تغییر داد:
۱.با اینکه به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود، اینکار کار آسانی نیست و یک پروژه کاملا را تبیدل به سورس نمیکنه، فقط یک شبه کد بدست میاد که بعدش هم باید با تلاش زیاد بشه ازش استفاده کرد.

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

سوال دومی که پرسیده شد:

سوال: کسی راجع به X509Certificates که در فضای نام Security.Cryptography قرار داره می تونه یه سری اطلاعات در اختیار بقیه قرار بده.

جواب: به این صفحه (http://barnamenevis.org/forum/showpost.php?p=786906&postcount=87) مراجعه کنید. ولی در کل جواب خیلی ناقصه و هنوز نیازه روی آن کار بشه. لطفا دوستان با هم یه همکاری داشته باشین تا بتونیم برای این سوال هم یه جواب بگیریم.

ببینید دوستان روند تاپیک مشخصه.... من آخرین صحبت هام رو قبلا در این (http://barnamenevis.org/forum/showpost.php?p=787027&postcount=91) پست نوشتم. دیگه حرفی ندارم.

تا سوال بعدی بای.

Amir Oveisi
یک شنبه 01 شهریور 1388, 01:27 صبح
سوال: چکار کنیم تا جلوی نفوذ به کدهایمان گرفته شود؟

با توجه به مطالبی که تا الان تو تاپیک خوندم یه زاه حلی که استفاده هم کردم و تا حد قابل قبولی کد ها رو امن نگه میداره اینه که برنامه رو از حافظه اجرا میکنیم نه از فایل؛ به این شکل:
1- ابتدا برنامه مورد نظر رو به شکل یک Exe کامپایل میکنیم.
2- حالا یه برنامه دیگه میسازیم که در نقش launcher عمل میکنه و کارش load کردن برنامه در حافظه و اجرای اون از حافظه هستش.
3- محتویات این فایل exe رو میخونیم و به شکل یک byte[] که Encrypt میشه به resource های launcher اضافه میکنیم از نوع Embeded Resource
4- حالا تو launcher یه همچین کدی برای load کردن برنامه اصلی می نویسیم:

static void Main()
{
RunInternalExe("نام برنامه اصلی");
}

private static void RunInternalExe(string exeName)
{
//Get the current assembly
Assembly assembly = Assembly.GetExecutingAssembly();

//Get the assembly's root name
string rootName = assembly.GetName().Name;

//Get the resource stream
Stream resourceStream = assembly.GetManifestResourceStream(rootName + "." + exeName);

//Verify the internal exe exists
if (resourceStream == null)
return;

//Read the raw bytes of the resource
byte[] resourcesBuffer = new byte[resourceStream.Length];

resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length);
resourceStream.Close();

//Load the bytes as an assembly
Assembly exeAssembly = Assembly.Load(resourcesBuffer);

//Execute the assembly
exeAssembly.EntryPoint.Invoke(null, null); //no parameters
}

با این کار برنامه ما از حافظه بصورت مستقیم اجرا میشه و چون حافظه در دات نت امنیت قابل قبولی داره خیلی کار سختی خواهد بود که بشه از تو حافظه کدهای برنامه رو درآورد. همچنین چون کد هارو بصورت encrypt شده در resource ها نگه داری میکنیم پس به این راحتی نمیشه از توی resource ها هم به کد برنامه اصلی دسترسی پیدا کرد.
با این روش اگر برای Encrypt و Decrypt کردن resource مون دقت لازم رو داشته باشیم و از روش های امن استفاده کنیم میتونیم نتیجه قابل قبولی از این روش بگیریم.

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

موفق باشید

alireza_tavakol
یک شنبه 01 شهریور 1388, 01:34 صبح
با سلام و تشکر از کلیه دوستان که تا حالا توی بحث مشارکت داشتن لازم دیدم دیدگاه های خودم رو عنوان کنم


در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند
توی این فوروم جای این کار نیست
کافی شما توی تالار مربوطه تاپیک crack me بگذارید و 30 دقیقه بعد مراجعه کنید تا نتیجه رو ببینید
__________________________________________________ _________________________________________
نکته قابل اغماض

هیچ گاه هیچ کرکری به همه کد های پروژه ما نیاز نداره پس هدف هیچ هکری این نیست که Solution پروژه رو برگردونه و یا کد های برنامه ما رو عین روز اولش بکنه فقط می خواهد بخشی که قرار قفل برنامه ما هست رو شناسایی بکنه و به نحوی در اون بخش اختلال ایجاد کنه

Armin060
یک شنبه 01 شهریور 1388, 07:17 صبح
جناب Bermoda فكر كنم اين راهی كه گفتيد چندان هم خوب نباشه. فقط كافی هست كه برنامه آنپك بشه

و اين هم دو مثال از X509Certificate.








using System;
using System.Security.Cryptography;

using System.Security.Permissions;

using System.IO;
using System.Security.Cryptography.X509Certificates;





class CertInfo

{
//Reads a file.
internal static byte[] ReadFile (string fileName)
{
FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read);
int size = (int)f.Length;
byte[] data = new byte;
size = f.Read(data, 0, size);
f.Close();
return data;
}
//Main method begins here.
static void Main(string[] args)
{
//Test for correct number of arguments.
if (args.Length < 1)
{
Console.WriteLine("Usage: CertInfo <filename>");
return;
}
try
{
X509Certificate2 x509 = new X509Certificate2();
//Create X509Certificate2 object from .cer file.
byte[] rawData = ReadFile(args[0]);
x509.Import(rawData);
//Print to console information contained in the certificate.
Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine,x509.Subject);
Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine,x509.Issuer);
Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine,x509.Version);
Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine,x509.NotBefore);
Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine,x509.NotAfter);
Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine,x509.Thumbprint);
Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine,x509.SerialNumber);
Console.WriteLine("{0}Friendly Name: {1}{0}", Environment.NewLine,x509.PublicKey.Oid.FriendlyNam e);
Console.WriteLine("{0}Public Key Format: {1}{0}", Environment.NewLine,x509.PublicKey.EncodedKeyValue .Format(true));
Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine,x509.RawData.Length);
Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine,x509.ToString(true));
Console.WriteLine("{0}Certificate to XML String: {1}{0}", Environment.NewLine,x509.PublicKey.Key.ToXmlString (false));
//Add the certificate to a X509Store.
X509Store store = new X509Store();
store.Open(OpenFlags.MaxAllowed);
store.Add(x509);
store.Close();
}
catch (DirectoryNotFoundException)
{
Console.WriteLine("Error: The directory specified could not be found.");
}
catch (IOException)
{
Console.WriteLine("Error: A file in the directory could not be accessed.");
}
catch (NullReferenceException)
{
Console.WriteLine("File must be a .cer file. Program does not have access to that type of file.");
}
}


}








using System;
[SIZE=2]using System.Security.Cryptography.X509Certificates;


publicclassX509
{
publicstaticvoid Main()
{
// The path to the certificate.
string Certificate = "Certificate.cer";
// Load the certificate into an X509Certificate object.
X509Certificate cert = newX509Certificate(Certificate);
// Get the value.
string resultsTrue = cert.ToString(true);
// Display the value to the console.
Console.WriteLine(resultsTrue);
// Get the value.
string resultsFalse = cert.ToString(false);
// Display the value to the console.
Console.WriteLine(resultsFalse);
}
}

system32
یک شنبه 01 شهریور 1388, 10:22 صبح
دوست عزیز Armin060 (http://barnamenevis.org/forum/member.php?u=76761) این دو مثال چه کاری می کنند. در ضمن می شه کمی درباره کارایی این فضای نام توضیح بدید. ممنون.

Nima NT
یک شنبه 01 شهریور 1388, 11:38 صبح
با این کار برنامه ما از حافظه بصورت مستقیم اجرا میشه و چون حافظه در دات نت امنیت قابل قبولی داره خیلی کار سختی خواهد بود که بشه از تو حافظه کدهای برنامه رو درآورد.
جناب برمودا , ره حل این برنامه ها استفاده از Generic Dumper ها هست که فایل رو تر و تمیز از رم بکشه بیرون. متاسفانه این کار امنیت نداره , مگر اینکه فایلی که قراره تو حافظه لود بشه , از پیش پک بشه.

Armin060
یک شنبه 01 شهریور 1388, 12:06 عصر
دوست عزیز Armin060 (http://barnamenevis.org/forum/member.php?u=76761) این دو مثال چه کاری می کنند. در ضمن می شه کمی درباره کارایی این فضای نام توضیح بدید. ممنون.


من اين دو تا كد رو از تو MSDN كپی كردم، گفتم شايد به كار بياد.

http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509 certificate.aspx

http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509 certificate2.aspx

system32
یک شنبه 01 شهریور 1388, 13:29 عصر
اینم یک سری اطلاعات که از سایت های مختلف جمع آوری شده است:

Certificate يک فايل است که بر روي سرور وب نصب مي شود تا وب سايت را شناسايي کند اين روش براي شناساندن هويت يک شرکت يا تاجر به خريداران آنلاين کمک کرده تا به سايت اعتماد کنند براي بررسي صحت اين ادعا (براي اينکه باور کنيم آنچه ادعا مي کنند هستند ) شرکت ها و وب سايت هاي آنها توسط يک شرکت ثالث مانند Verisign و Thawte .

وقتي صحت ادعاي شرکت ها و وب سايت آنها مورد تأييد قرار گرفت آنها يک گواهينام? SSL ( به مبلغ چند صد دلار ) به آنها اعطا مي کنند . اين گواهينامه ديجيتال بر روي وب سرور آنها نصب شده و توسط کاربراني که وارد سايت مي شوند قابل ديدن است . شما با نگاه کردن آدرس وب سايت مي توانيد متوجه اين گواهينامه شويد . وب سايت هايي که داراي گواهينامه هستند با HTTPS شروع مي شوند . براي ديدن گواهينامه مي توانيد بر روي آيکون قفل در گوش? مرورگر خود کليک کنيد .

از آنجا که گواهينامه هاي ديجيتال وضعيت جاري يک شرکت را تأييد مي کنند اعتبار آنها دائمي نيست . گواهينامه هاي SSL معمولاً هر يک تا سه سال منقضي مي شوند . اگر Certificate در موئد مقرر تجديد نشود در حين مرور ، وب سايت شما با يک پيغام مبني بر اينکه گواهينام? اين وب سايت منقضي شده است مواجه مي شود اين خطا به شما و کامپيوتر شما مربوط نمي شود اما به معني آن است که وب سروري که شما به آن متصل شده ايد گواهينامه خود را تجديد نکرده است . هر چند که اين به معني اينکه وب سايت مذکور لزوماً کلاه بردار است ، نيست اما حداقل نشان دهند? آن است که وب سايت خيلي حرفه اي هم نيست . http://www.gamadirect.com/DicDef.aspx?ID=20


تضميني براي آنکه نرم افزار دريافتي از طريق اينترنت از يک منبع قابل اطمينان است. هر گواهينامه ديجتال اطلاعاتي درباره نرم افزار فراهم مي کند –مثلاً اطلاعات شناسايي تهيه کننده نرم افزار و تاريخ ثبت آن بوسيله مسئول صدور گواهينامه(CA)، و نيز ميزان مقاومت در برابر سرقت.



کارت شناسايي کاربر، يا " گواهينامه استفاده" در فضاي کامپيوتري. گواهينامه هاي ديجيتال که توسط مسئولين صدور گواهينامه صادر مي شوند، نوعي اعتبار الکترونيکي هستند که درستي و اعتبار يک کاربر را در اينترنت و اينترانت ها تائيد مي کنند. رسمي گواهينامه هاي ديجيتال با استفاده از تکنولوژي رمزگذاري عمومي، انتقال Online و قانوني اطلاعات محرمانه، پول يا ديگر اطلاعات حساس را تضمين مي کنند.


دارنده هر گواهينامه ديجيتال دو کليد دارد (رشته اي از اعداد): يک کليد خصوصي که تنها کاربر براي "امضاي" پيام هاي ارسالي و رمزگشايي پيام هاي دريافتي در دست دارد، و يک کليد عمومي براي استفاده اشخاص ديگر، جهت رمز گذاري داده ها به منظور ارسال به يک کاربر خاص. http://www.gamadirect.com/DicDef.aspx?ID=239


امضای دیجیتال
امضای دیجیتال ، ماحصل رمزنگاری مقدار Hash داده مبادله شده بوده و روشی ایمن به منظور امضای الکترونیکی اطلاعات با استفاده از کدها ویا علائمی است که از لحاظ الکترونیکی معادل یک امضای دستی می باشند. امضای دیجیتالی، مبتنی بر ترکیب ایده سنتی Hashing داده و رمزنگاری کلید عمومی است .یک مرکز معتبر صدور گواهینامه های دیجیتال ، گواهینامه های دیجیتالی صادرشده را به کلیدهای عمومی مربوط به هر یک نسبت می دهد . فرآیند امضاء ، مخالف فرآیند رمزنگاری است : از کلید خصوصی به منظور رمزنگاری Hash و از کلید عمومی برای بررسی صحت امضاء ( رمزگشائی ) استفاده می شود .


فرآیند امضای داده توسط فرستنده پیام :


•دریافت پیام اولیه و محاسبه یک مقدار Hash با استفاده از یک الگوریتم hashing
•رمزنگاری Hash توسط یک تابع رمزنگاری و اعمال کلید خصوصی توسط فرستنده پیام ( پیام اولیه به همراه مقدار Hash رمز شده ، یک پیام دیجیتالی امضاء شده را تشکیل می دهند ) .
•ارسال پیام دیجیتالی امضاء شده برای گیرنده


فرآیند بررسی صحت امضاء ارسالی همراه داده :


•پس از دریافت پیام توسط گیرنده ، در ابتدا ، Hash رمز شده با استفاده از کلید عمومی فرستنده رمزگشائی می گردد ( Hash رمزگشائی شده ) .
•محاسبه محلی مقدار Hash پیام ارسالی با استفاده از یک الگوریتم Hashing
•مقایسه نتایج بدست آمده در مراحل قبل : Hash رمزگشائی شده با مقدارمحلی Hash مقایسه و در صورتیکه نتیجه یکسان باشد ، صحت و اعتبار پیام ارسال شده توسط فرستنده تائید می گردد .


لازم است به این موضوع دقت شود که ضرورتی به رمزنگاری محتوی پیام وجود نداشته و صرفا" امضای دیجیتالی رمز می گردد( مگر اینکه شرایط خاصی در ارتباط با محرمانگی محتوی وجود داشته باشد که در چنین مواردی می بایست محتوی نیز رمزنگاری گردد ) . در صورتیکه به هر دلیلی محتوی پیام توسط افراد غیرمجاز تغییر داده شود ، Hash رمز شده اولیه با مقداری که بصورت محلی مجددا" محاسبه می گردد ، مطابقت نداشته و صحت امضای فرستنده تائید نمی گردد . همچنین ، ایجاد یک امضای تقلبی عملا" غیرممکن است ، چراکه افراد غیر مجاز آگاهی لازم در ارتباط با کلید خصوصی را دارا نمی باشند ( رمزنگاری مقدار محاسبه شده Hash با در نظر گرفتن کلید خصوصی فرستنده انجام خواهد شد ) .


یک گواهینامه چیست ؟
گواهیینامه دیجیتال ،رکوردی منحصربفرد مشتمل بر اطلاعاتی ضروری به منظور بررسی هویت یک فرد و یا یک سازمان می باشد . گواهینامه های دیجیتال از فرمت استاندارد X.509 تبعیت می نمایند . استاندارد فوق ، برخی از ملزومات موردنیاز گواهینامه را تشریح می نماید : فرمت نسخه استفاده شده توسط گواهینامه ، شماره سریال گواهینامه ، شناسه الگوریتم استفاده شده به منظور تائید گواهینامه ،مرکز صادرکننده گواهینامه ، تاریخ صدور و سررسید اعتبار گواهینامه ، مشخصات صاحب گواهینامه ، کلید عمومی صاحب گواهینامه ، امضای دیجیتال مرکز صادر کننده گواهینامه .
هر یک از فیلدهای اطلاعاتی فوق متناظر با فیلدهای خاصی در ساختار تعریف شده برای یک گواهنیامه می باشد. گواهینامه ها ، ممکن است شامل اطلاعات دیگری نظیر آدرس پستی ، آدرس پست الکترونیکی ، نام کشور ، سن ، جنسیت نیز باشند . اطلاعات اضافی فوق اختیاری بوده و بستگی به نوع خاص گواهینامه دارد .


مراکز صدور گواهینامه (CA:Certificate Authority


مراکز صدور گواهینامه که از آنان با عنوان CA نیز نام برده می شود ،مراکزی امین و معتبر بوده که مسئولیت تطبیق کلیدها ی عمومی به منظور شناسائی و تائید هویت را برعهده دارند. به عبارت دیگر ، مراکز فوق تعلق یک کلید عمومی خاص به یک کاربر معتبر را تائید می نمایند . مراکز CA ، مسئولیت صدور ، ابطال و تمدید یک گواهینامه را برعهده دارند. مراکز CA ،همچنین می بایست رویه های بسیار دقیق و سختگیرانه ای را به منظور تائید افراد و سازمان ها ئی که درخواست گواهنیامه می نمایند را نیز دنبال نمایند .بدین ترتیب ، پس از تائید یک فرد و یا سازمان توسط یک مرکز معتبر و امین CA ، امکان تطبیق کلید ( انطباق کلید عمومی با کلید خصوصی مرتبط با آن ) آنان از یک مرکز ایمن ، فراهم می گردد. عملکرد چنین مراکزی نظیر دفاتراسناد رسمی در اینترنت است .
در ساختار گواهینامه ، دو فیلد اطلاعاتی مرتبط با CA نیز وجود دارد : نام صادرکننده گواهینامه و امضای دیجیتالی صادرکننده . وجود فیلدهای فوق در گواهینامه صادر شده ، تضمین لازم در خصوص تعلق کلید عمومی به صاحب آن را ارائه می نماید.بدین ترتیب مسئله امین بودن از افراد به مراکز CA منتقل می گردد.وجود یک مرکز امین و معتبر ، از جمله مهمترین دلایل حضور CA ، محسوب می گردد . در حال حاضر ، سازمان های متعددی ، اقدام به صدور گواهینامه می نمایند و هر روز نیز تعداد آنان افزایش می یابد . زمانیکه دو کاربر و یا دو سازمان قصد مبادله گواهینامه را داشته باشند ، هر یک از آنان می تواند هویت طرف مقابل خود را با استفاده از تائیدیه مراکز CA و گواهینامه های صادرشده توسط مراکز CA ، انجام دهد. هر گواهینامه شامل کلید عمومی مربوط به خود نیز می باشد ، بنابراین می توان از آن به منظور رمزنگاری داده برای ارسال به صاحب گواهینامه استفاده نمود. گواهینامه ها همچنین شامل امضای دیجیتال مرکز CA صادرکننده گواهینامه نیز می باشند. یک امضای دیجیتال با استفاده از کلید خصوصی مولف سند ایجاد می گردد . بنابراین به منظور بررسی یک گواهینامه که توسط یک مرکز CA خاص تائید شده است ، به کلید عمومی مرکز CA نیز نیاز خواهد بود. کلید ها ی عمومی اکثر مراکز CA به همراه مرورگرها ، برنامه های پست الکترونیکی و سایر پکیج های نرم افراری توزیع می گردد .


http://www.tafda.org/groups/network/wiki/digital-certificate.aspx

نمایش محتویات یک Certificate:

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




string Certificate = "path";
// Load the certificate into an X509Certificate object.
X509Certificate cert = newX509Certificate(Certificate);
// Get the value.
string resultsTrue = cert.ToString(true);
// Display the value
MessageBox.Show(resultsTrue);



برای دریافت اطلاعات بیشتر می توانید از کلاس زیر استفاده نمایید:
X509Certificate2

Amir Oveisi
دوشنبه 02 شهریور 1388, 01:49 صبح
متاسفانه این کار امنیت نداره , مگر اینکه فایلی که قراره تو حافظه لود بشه , از پیش پک بشه.

خوب فکر نکنم که کار سختی باشه که فایل pack شده را در resource ها نگهداری کنیم. اما خوب باز هم مثل این میمونه که یه مرحله دیگه به کرک کردن اضافه میشه و اگر برنامه Unpack بشه دوباه همون آش و همون کاسه!

Nima NT
دوشنبه 02 شهریور 1388, 12:50 عصر
به همین خاطر بود که میگفتم Smart Assembly خوبه , چون این برنامه فایل رو هم پک میکنه هم رمزنگاری میکنه , و موقع لود کردن اون به حافظه Header رو حذف میکنه ؛ این کار باعث میشه وقتی شما فایل رو دامپ میکنن , یه فایل تخریب شده تحویل داده بشه , البته این برنامه یه نقطه ضعف هم داره و اون اینکه نسبت به رشته ها ضعیفه , بنابراین وقتی میخواهید از این برنامه استفاده کنید , خودتون رشته های موجود در برنامه خودتون رو , خودتون رمز کنید , تا اگر هم توسط ابزارهای De obfuscator رشته ها رمزنگاری شد ( از سیستم خود برنامه رد شد ) بازهم رشته های رمز شده استخراج بشن و نشه کاریشون کرد.

system32
دوشنبه 02 شهریور 1388, 14:17 عصر
دوستان کسی می تونه توضیح بده ClickOnce چیه و به چه دردی می خوره؟

Nima NT
دوشنبه 02 شهریور 1388, 14:48 عصر
دوستان کسی می تونه توضیح بده ClickOnce چیه و به چه دردی می خوره؟
کجا دیدید ؟ به نظر میاد به تکنولوژی های تریال سازی مربوط باشه ( از روی اسمش میگم ).

system32
دوشنبه 02 شهریور 1388, 15:15 عصر
سلام.

داشتم توی تنظیمات پروژم سرکشی می کردم. در برگه Security با این گزینه آشنا شدم. تا اونجا که متوجه شدم برای برقراری امنیت در برناممون خیلی مهم. من خودم زیاد از متن راهنما چیزی دستگیرم نشد. به همین خاطر گفتم از دوستان بپرسم آیا کسی باهاش آشنایی داره. در ضمن قسمتی از راهنما را اینجا می زارم مطالعه کنید:




ClickOnce applications are based on the .NET Framework and are subject to code access security constraints. For this reason, it is important that you understand the implications of code access security and write your ClickOnce applications accordingly.
Code access security is a mechanism in the .NET Framework that helps limit the access that code has to protected resources and operations. You should always configure the code access security permissions for your ClickOnce application to include only those permissions that your application requires. Visual Studio provides the tools necessary to determine and configure the permission set for your application.

system32
دوشنبه 02 شهریور 1388, 18:24 عصر
دوستان پس خبری نشد؟

Amir Oveisi
سه شنبه 03 شهریور 1388, 01:46 صبح
ClickOnce is a deployment technology that allows you to create self-updating Windows-based applications that can be installed and run with minimal user interaction. ClickOnce deployment overcomes three major issues inherent in deployment:
#

Difficulties in updating applications. With Microsoft Windows Installer deployment, whenever an application is updated, the user must reinstall the entire application; with ClickOnce deployment, you can provide updates automatically. Only those portions of the application that have changed are downloaded, then the full, updated application is reinstalled from a new side-by-side folder.
#

Impact to the user's computer. With Windows Installer deployment, applications often rely on shared components, with the potential for versioning conflicts; with ClickOnce deployment, each application is self-contained and cannot interfere with other applications.
#

Security permissions. Windows Installer deployment requires administrative permissions and allows only limited user installation; ClickOnce deployment allows non-administrative users to install and grants only those Code Access Security permissions necessary for the application.

برای اطلاعات بیشتر به اینجا (http://msdn.microsoft.com/en-us/library/142dbbz4%28VS.80%29.aspx)برید

Amir Oveisi
سه شنبه 03 شهریور 1388, 01:52 صبح
ClickOnce applications are based on the .NET Framework and are subject to code access security constraints

منظور از این جمله این نیست که دسترسی به کد برنامه محدود میشه بلکه منظور اینه که میتونیم موقع deploy کردن برنامه مشخص کنیم که برنامه ما مثلا اجازه اجرای کدهای IO رو داره یا نداره و منظور از محدودیت دسترسی، محدودیت دسترسی کد به منابع هست نه محدودیت دسترسی افراد به کد.

موفق باشید

Unknownlive
شنبه 07 شهریور 1388, 00:51 صبح
با سلام
خدا رو شکر عملم موفقیت آمیز بود و راحت شدم.
ولی در مورد جناب موسوی که گفته بودن وقتی ویندوز از حالت تریال در بیاد بهش میگن هک شد !
این برداشت اشتباه هست , اینجا میگن کرک شد , کرک و مهندسی معکوس دو علم هستن که به موازات هم گسترش پیدا کردن و چون اهدافشون 100% مخرب هست از شاخه هک جدا شدن , چرا که هک امکان مفید واقع شدن هم وجود داره.
و در مورد جناب ارژنگ خان , بنده ادعایی کردم و انجامش هم دادن , چند نمونه کرک می گذاشتند , کرک کردم و در مواردی سورس رو هم تحویل دادم ,حالا اگر شما مایل هستید که هنوز هم فکر کنید که سورس رو نمیشه در آورد یا اگر هم بشه کاربردی نیست , به خودتون مربوطه. ( البته منظورم همون آنپک می هاست )
در مورد سوال جناب System32 هم که در مورد md5 پرسیدن , میتونم بگم که md5 هم دقیقا" مثل crc عمل میکنه و کاربرد مشابهی دارن , در حالت کلی میتونم توصیه کنم که بیشتر به جای CRC از MD5 استفاده کنید.

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

linux
شنبه 07 شهریور 1388, 23:54 عصر
کجا دیدید ؟ به نظر میاد به تکنولوژی های تریال سازی مربوط باشه ( از روی اسمش میگم ).
نه خیر این برنامه همراه خود ویژوال استدیو اراپه می شود برای درست کردن setup استفاده می شود

tabatabaeefar
سه شنبه 17 شهریور 1388, 12:13 عصر
سلام
ميخواستم بدونم نميشه برنامه رو تا سطح باينري كامپايل كرد؟

keivan mousavi
سه شنبه 17 شهریور 1388, 12:51 عصر
این کارو چه بخوای چه نخوای کامپیوتر انجام میده

tabatabaeefar
سه شنبه 17 شهریور 1388, 13:43 عصر
این کارو چه بخوای چه نخوای کامپیوتر انجام میده
ولي من متوجه شدم كامپايلر net. مقط تا سطح IL كامپايل ميكنه.

esmaeily-hosein
سه شنبه 17 شهریور 1388, 14:12 عصر
من خودم از برنامه dotnet protector استفاده میکنم .
یک نرم افزار فرانسوی فوق العاده است . این برنامه کد IL برنامه را Encrypt میکنه و در زمان اجرا با استفاده از Native Class های خودش اونو Decrypt میکنه .
در ضمن در خودش روش obfuscate را نیز دارد .

keivan mousavi
سه شنبه 17 شهریور 1388, 20:10 عصر
ولي من متوجه شدم كامپايلر net. مقط تا سطح IL كامپايل ميكنه.

درسته ولی شما باید توجه کنی هر عملیاتی که بخواهید در کامپیوتر انجام شود در آخر باید به زبان دودویی تبدیل بشود تا قابل درک برای کامپیوتر شود

tabatabaeefar
چهارشنبه 18 شهریور 1388, 10:43 صبح
امكان نداره بشه زبان دو دو یی رو به زبان های سطح بالا تبديل كرد. اين از نظر منطقی ثابت شده و چيزی نيست كه با پيشرفت علم امكان پذير بشه. ( البته اين يه تيكه رو از قول Inprise گفتم )

به نظر ميرسه نميشه از روي كدهاي دودويي به سورس برنامه رسيد.
ميخواستم بدونم ميشه كامپايلر طوري كدها رو كامپايل كنه كه رسيدن به سورسش غير ممكن باشه؟

mohammadi4net
دوشنبه 23 شهریور 1388, 02:21 صبح
ببخشید که چنین درخواستی دارم.
بعد یک ساعت علافی فهمیدم این تایپک بار علمی نداره برای جلوگیری از اتلاف وقت دیگران و پر نشدن سایت برنامه نویس با مطالب غیر مفید، این تایپک رو حذف کنید.
نویسنده تایپک، یک جدید ایجاد کنه و تایپک های مفید که از تعداد انگشت دست هم کمتر هستند رو به آنجا منتقل کنه.

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

system32
جمعه 01 آبان 1388, 12:37 عصر
mohammadi4net
ببخشید که چنین درخواستی دارم.
بعد یک ساعت علافی فهمیدم این تایپک بار علمی نداره برای جلوگیری از اتلاف وقت دیگران و پر نشدن سایت برنامه نویس با مطالب غیر مفید، این تایپک رو حذف کنید.
نویسنده تایپک، یک جدید ایجاد کنه و تایپک های مفید که از تعداد انگشت دست هم کمتر هستند رو به آنجا منتقل کنه.
بازهم از دوستانی که مطالب مفیدی بیان کردند معذرت خواهی می کنم.


به توجه به درخواست این دوست گرامی و دیگر دوستان این کار انجام شد:

************************************************** *********
سلام به همگی.

دوستان هدف از راه اندازی این تاپیک این است تا با هم دیگر شیوه های برقراری امنیت در برنامه نویسی به این زبان را بررسی کنیم. چونکه این مبحث بسیار گسترده است ابتدا از این سوال شروع می کنیم که:

چکار کنیم که دستیابی به کدهای برنامه بوسیله نرم افزارهایی همانند Reflector سخت تر انجام شود؟ |---------------------------------------------------------|

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

************************************************** *********
گویا dotfuscator که نسخه ی Community ورژن 4 همراه vs 2008 نصب میشه واسه همین کاره
************************************************** *********

************************************************** *********
این نرم افزار در منوی تولز ویژوال استدیو هست کارشم اینه که اسامی متغیرها و فرم ها و کلاس ها رو عوض میکنه. ضدش هم وجود نداره یعنی اگه شما یه متغیر رو Customer گذاشته باشید و بعدی رو Product این نرم افزار اسم اولی رو میکنه A و دومی رو میکنه B همین به همین ترتیب تمام متغیرها و فرم ها و کلاسها رو تغییر نام میده تا نا خونا تر بشه و کار دیگه ای انجام نمیده
************************************************** *********

************************************************** *********
نه دوست من فقط اسم متغیرها و کلاس های تعریفی شما رو به صورت خودکار تغییر میده نه کلاسهای پایه دات نت رو
روش کار: اول باید پروژه اصلی رو ترجمه کنید و فایل exe بسازید و بعد در برنامه Dotfus... کریت نیو پروجکت رو انتخاب میکنید
حالا باید حداقل دو گزینه رو مشخص کنید یکی فایل های trigger و دیگری مسیر فایل مقصد (فایل ناخوانا شده
در زبانه trigger فایل اجرایی خودتون رو انتخاب کنیدو بعد بر روی زبانه build کلیک کنید و مسیر مقصد رو وارد کنید.
بعداز منوی فایل سیو پروجکت رو انتخاب کنید.
برای انجام کار و ساختن فایل ناخوانا از منوی فایل build رو انتخاب کنید.
تنظیمات دیگه هم داره اما من همینقدرشو بلدم.
************************************************** *********

************************************************** *********
میتونید از Smart Assembly استفاده کنید.
تاحدی سخت تر از بقیه هست.
************************************************** *********

************************************************** *********
میشه از پکرهای موجود استفاده کرد.

من خودم هنوز روی .net تست نکردم ببینم که آیا پکر جواب میده یا نه.

ولی Exe های vb و delphi رو باهاش پک کردم.

از دسترسی این جوجه کرکرها فایل رو محافظت میکنه.

ولی برای جلو گیری از کرک شدن هیچ راهی وجود نداره(در هیچ زبونی).

************************************************** *********

************************************************** *********
دیشب تو اینترنت گشت می زدم با نرم افزار Eazfuscator.NET 2.5 آشنا شدم. این نرم افزار نمرش روی فایل های Exe به نظر من 15 است ولی متاسفانه روی فایل های dll به خوبی جواب نمی ده. (می تونید امتحان کنید) نرم افزار دیگه ای که خواستم امتحان کنم xenocode postbuild 2008 بود ولی متاسفانه نتونستم شماره سریال برنامه مربوطه را بدست آورم. شاید اینجا جای مناسبی برای مطرح کردن این موضوع نباشه. پیشاپیش عذر می خواهم. لطفا اگه کسی شماره سریال این برنامه را داره لطفا به من هم بگه.
************************************************** *********

************************************************** *********
هدف آنتی دامپ بودن برنامه نیست که اصلا" نشه ازش دامپ گرفت و ... , هدف این هست که کراکر نتونه به سورس کد برنامه دسترسی داشته باشه که برای این امر هم من Smart Assembly نسخه 4 رو توصیه میکنم که البته باید نسخه کرک شده اون رو پیدا کنید , این برنامه کدها رو به شکلی نامفهوم میکنه که حتی اگر کراکر حرفه ای باشه و بتونه کد اصلی رو استخراج کنه فقط 30% رو میتونه برگردونه.
************************************************** *********

************************************************** *********
در مورد امنیت میتونم بگم , تضمینی در کار نیست , چون دیر یا زود قفلش میشکنه ولی 2 تا توصیه میکنم.
در طراحی قفل خودتون اول از رمزنگاری غیر متقارن برای تولید کد فعالسازی استفاده کنید و دوم اینکه تا میتونید قفل رو در جای جای برنامه خودتون بررسی کنید.
************************************************** *********

************************************************** *********
با سلام مجدد
عنوان تاپیک "امنیت در سی C#‎‎" می باشد. این عنوان به نظر بنده بسیار کلی است(با توجه به ماهیت کلمه امنیت). به نظر من ابتدا می بایستی تعریفی جامع از امنیت ارائه می شد و پس از آن به بررسی روش ها و ابزارهای مورد نیاز در جهت رسیدن به امنیت بالاتر در برنامه ها بحث می شد.
این تاپیک می توانست با عنوانی مثلا" امنیت در برنامه های دات نت " و در بخش کلی تری مطرح گردد. چرا که چهارچوبه زبان های برنامه نویسی که بر پایه پلت فرم دات نت می باشند یکی است.
اما در متن تاپیک (اولین پست)، اشاره به این شده که به عنوان سوال اول، هدف جلوگیری از سورس شدن برنامه های دات نت می باشد.
دوستان می توانند در این باره بحث کنند و به یک نتیجه واحد برسند.که فکر می کنم به اندازه کافی در این مورد بحث شده. کاربر ایجاد کننده تاپیک می توانند یک نتیجه گیری کلی در مورد سوال اول انجام داده و نتیجه را به سمع و نظر کاربران برساند.
پس از آن می توانند به سوال دیگری بپردازند.

اما در هر صورت توجه به نکات زیر می تواند روند مثبت تری به تاپیک دهد:
1- پاسخ ها بدون تعصب نسبت به یک زبان، یک فریم ورک و ... باشند
2-پاسخ ها همراه با مدرک و سند قابل استناد باشند
3-از فرستادن پاسخ های نا مرتبط مثلا قرار دادن فایل های Crack Me و ... خودداری شود
4-از کل کل کردن پرهیز شود
5....
********
موفق باشید
پ و:
شاید در اینده ای نزدیک، بسته به روند تاپیک، تاپیک را به محل مناسب تری و با عنوان مناسب تری انتقال دهم
************************************************** *********

************************************************** *********
یک public-key certificate یک امضای دیجیتالی است که از سوی یک نهاد یا موسسه ارائه می گردد. بیشتر از این مورد در مرورگرهای اینترنتی که پروتوکل SSL را پشتیبانی می کنند استفاده می گردد.
X.509 تعیین می کند که چه اطلاعاتی به عنوان امضای دیجیتالی استفاده شود و چگونه آن ها باید نوشته شوند.


تا حالا دو سوال مطرح شده:

سوال: چکار کنیم تا جلوی نفوذ به کدهایمان گرفته شود؟

جواب و نتیجه: به نظر عده ای از دوستان نتیجه های زیر:

1- به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود. فقط می توان کاری کرد که این کار سخت تر انجام شود.
2- شما می توانید بوسیله نرم افزارهای Obfuscator نفوذ به کدهایتان را مشکل نمایید. این کار با تغییر نام متغیرها و ... برنامه شما انجام می گیرد.

و به نظر عده ای دیگر در مقابل نتیجه گیری بالا:

۱.نتیجه گیری اول بدست آوردن کدها را ساده جلوه میده، در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند، پس نتیجه گیری را باید به این تغییر داد:
۱.با اینکه به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود، اینکار کار آسانی نیست و یک پروژه کاملا را تبیدل به سورس نمیکنه، فقط یک شبه کد بدست میاد که بعدش هم باید با تلاش زیاد بشه ازش استفاده کرد.

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

سوال دومی که پرسیده شد:

سوال: کسی راجع به X509Certificates که در فضای نام Security.Cryptography قرار داره می تونه یه سری اطلاعات در اختیار بقیه قرار بده.

جواب: به این صفحه (http://barnamenevis.org/forum/showpost.php?p=786906&postcount=87) مراجعه کنید. ولی در کل جواب خیلی ناقصه و هنوز نیازه روی آن کار بشه. لطفا دوستان با هم یه همکاری داشته باشین تا بتونیم برای این سوال هم یه جواب بگیریم.

ببینید دوستان روند تاپیک مشخصه.... من آخرین صحبت هام رو قبلا در این (http://barnamenevis.org/forum/showpost.php?p=787027&postcount=91) پست نوشتم. دیگه حرفی ندارم.

تا سوال بعدی بای.
************************************************** *********

************************************************** *********
اینم یک سری اطلاعات که از سایت های مختلف جمع آوری شده است:

Certificate يک فايل است که بر روي سرور وب نصب مي شود تا وب سايت را شناسايي کند اين روش براي شناساندن هويت يک شرکت يا تاجر به خريداران آنلاين کمک کرده تا به سايت اعتماد کنند براي بررسي صحت اين ادعا (براي اينکه باور کنيم آنچه ادعا مي کنند هستند ) شرکت ها و وب سايت هاي آنها توسط يک شرکت ثالث مانند Verisign و Thawte .

وقتي صحت ادعاي شرکت ها و وب سايت آنها مورد تأييد قرار گرفت آنها يک گواهينام? SSL ( به مبلغ چند صد دلار ) به آنها اعطا مي کنند . اين گواهينامه ديجيتال بر روي وب سرور آنها نصب شده و توسط کاربراني که وارد سايت مي شوند قابل ديدن است . شما با نگاه کردن آدرس وب سايت مي توانيد متوجه اين گواهينامه شويد . وب سايت هايي که داراي گواهينامه هستند با HTTPS شروع مي شوند . براي ديدن گواهينامه مي توانيد بر روي آيکون قفل در گوش? مرورگر خود کليک کنيد .

از آنجا که گواهينامه هاي ديجيتال وضعيت جاري يک شرکت را تأييد مي کنند اعتبار آنها دائمي نيست . گواهينامه هاي SSL معمولاً هر يک تا سه سال منقضي مي شوند . اگر Certificate در موئد مقرر تجديد نشود در حين مرور ، وب سايت شما با يک پيغام مبني بر اينکه گواهينام? اين وب سايت منقضي شده است مواجه مي شود اين خطا به شما و کامپيوتر شما مربوط نمي شود اما به معني آن است که وب سروري که شما به آن متصل شده ايد گواهينامه خود را تجديد نکرده است . هر چند که اين به معني اينکه وب سايت مذکور لزوماً کلاه بردار است ، نيست اما حداقل نشان دهند? آن است که وب سايت خيلي حرفه اي هم نيست . http://www.gamadirect.com/DicDef.aspx?ID=20 (http://www.gamadirect.com/DicDef.aspx?ID=20)


تضميني براي آنکه نرم افزار دريافتي از طريق اينترنت از يک منبع قابل اطمينان است. هر گواهينامه ديجتال اطلاعاتي درباره نرم افزار فراهم مي کند –مثلاً اطلاعات شناسايي تهيه کننده نرم افزار و تاريخ ثبت آن بوسيله مسئول صدور گواهينامه(CA)، و نيز ميزان مقاومت در برابر سرقت.



کارت شناسايي کاربر، يا " گواهينامه استفاده" در فضاي کامپيوتري. گواهينامه هاي ديجيتال که توسط مسئولين صدور گواهينامه صادر مي شوند، نوعي اعتبار الکترونيکي هستند که درستي و اعتبار يک کاربر را در اينترنت و اينترانت ها تائيد مي کنند. رسمي گواهينامه هاي ديجيتال با استفاده از تکنولوژي رمزگذاري عمومي، انتقال Online و قانوني اطلاعات محرمانه، پول يا ديگر اطلاعات حساس را تضمين مي کنند.


دارنده هر گواهينامه ديجيتال دو کليد دارد (رشته اي از اعداد): يک کليد خصوصي که تنها کاربر براي "امضاي" پيام هاي ارسالي و رمزگشايي پيام هاي دريافتي در دست دارد، و يک کليد عمومي براي استفاده اشخاص ديگر، جهت رمز گذاري داده ها به منظور ارسال به يک کاربر خاص. http://www.gamadirect.com/DicDef.aspx?ID=239 (http://www.gamadirect.com/DicDef.aspx?ID=239)


امضای دیجیتال
امضای دیجیتال ، ماحصل رمزنگاری مقدار Hash داده مبادله شده بوده و روشی ایمن به منظور امضای الکترونیکی اطلاعات با استفاده از کدها ویا علائمی است که از لحاظ الکترونیکی معادل یک امضای دستی می باشند. امضای دیجیتالی، مبتنی بر ترکیب ایده سنتی Hashing داده و رمزنگاری کلید عمومی است .یک مرکز معتبر صدور گواهینامه های دیجیتال ، گواهینامه های دیجیتالی صادرشده را به کلیدهای عمومی مربوط به هر یک نسبت می دهد . فرآیند امضاء ، مخالف فرآیند رمزنگاری است : از کلید خصوصی به منظور رمزنگاری Hash و از کلید عمومی برای بررسی صحت امضاء ( رمزگشائی ) استفاده می شود .


فرآیند امضای داده توسط فرستنده پیام :


•دریافت پیام اولیه و محاسبه یک مقدار Hash با استفاده از یک الگوریتم hashing
•رمزنگاری Hash توسط یک تابع رمزنگاری و اعمال کلید خصوصی توسط فرستنده پیام ( پیام اولیه به همراه مقدار Hash رمز شده ، یک پیام دیجیتالی امضاء شده را تشکیل می دهند ) .
•ارسال پیام دیجیتالی امضاء شده برای گیرنده


فرآیند بررسی صحت امضاء ارسالی همراه داده :


•پس از دریافت پیام توسط گیرنده ، در ابتدا ، Hash رمز شده با استفاده از کلید عمومی فرستنده رمزگشائی می گردد ( Hash رمزگشائی شده ) .
•محاسبه محلی مقدار Hash پیام ارسالی با استفاده از یک الگوریتم Hashing
•مقایسه نتایج بدست آمده در مراحل قبل : Hash رمزگشائی شده با مقدارمحلی Hash مقایسه و در صورتیکه نتیجه یکسان باشد ، صحت و اعتبار پیام ارسال شده توسط فرستنده تائید می گردد .


لازم است به این موضوع دقت شود که ضرورتی به رمزنگاری محتوی پیام وجود نداشته و صرفا" امضای دیجیتالی رمز می گردد( مگر اینکه شرایط خاصی در ارتباط با محرمانگی محتوی وجود داشته باشد که در چنین مواردی می بایست محتوی نیز رمزنگاری گردد ) . در صورتیکه به هر دلیلی محتوی پیام توسط افراد غیرمجاز تغییر داده شود ، Hash رمز شده اولیه با مقداری که بصورت محلی مجددا" محاسبه می گردد ، مطابقت نداشته و صحت امضای فرستنده تائید نمی گردد . همچنین ، ایجاد یک امضای تقلبی عملا" غیرممکن است ، چراکه افراد غیر مجاز آگاهی لازم در ارتباط با کلید خصوصی را دارا نمی باشند ( رمزنگاری مقدار محاسبه شده Hash با در نظر گرفتن کلید خصوصی فرستنده انجام خواهد شد ) .


یک گواهینامه چیست ؟
گواهیینامه دیجیتال ،رکوردی منحصربفرد مشتمل بر اطلاعاتی ضروری به منظور بررسی هویت یک فرد و یا یک سازمان می باشد . گواهینامه های دیجیتال از فرمت استاندارد X.509 تبعیت می نمایند . استاندارد فوق ، برخی از ملزومات موردنیاز گواهینامه را تشریح می نماید : فرمت نسخه استفاده شده توسط گواهینامه ، شماره سریال گواهینامه ، شناسه الگوریتم استفاده شده به منظور تائید گواهینامه ،مرکز صادرکننده گواهینامه ، تاریخ صدور و سررسید اعتبار گواهینامه ، مشخصات صاحب گواهینامه ، کلید عمومی صاحب گواهینامه ، امضای دیجیتال مرکز صادر کننده گواهینامه .
هر یک از فیلدهای اطلاعاتی فوق متناظر با فیلدهای خاصی در ساختار تعریف شده برای یک گواهنیامه می باشد. گواهینامه ها ، ممکن است شامل اطلاعات دیگری نظیر آدرس پستی ، آدرس پست الکترونیکی ، نام کشور ، سن ، جنسیت نیز باشند . اطلاعات اضافی فوق اختیاری بوده و بستگی به نوع خاص گواهینامه دارد .


مراکز صدور گواهینامه (CA:Certificate Authority


مراکز صدور گواهینامه که از آنان با عنوان CA نیز نام برده می شود ،مراکزی امین و معتبر بوده که مسئولیت تطبیق کلیدها ی عمومی به منظور شناسائی و تائید هویت را برعهده دارند. به عبارت دیگر ، مراکز فوق تعلق یک کلید عمومی خاص به یک کاربر معتبر را تائید می نمایند . مراکز CA ، مسئولیت صدور ، ابطال و تمدید یک گواهینامه را برعهده دارند. مراکز CA ،همچنین می بایست رویه های بسیار دقیق و سختگیرانه ای را به منظور تائید افراد و سازمان ها ئی که درخواست گواهنیامه می نمایند را نیز دنبال نمایند .بدین ترتیب ، پس از تائید یک فرد و یا سازمان توسط یک مرکز معتبر و امین CA ، امکان تطبیق کلید ( انطباق کلید عمومی با کلید خصوصی مرتبط با آن ) آنان از یک مرکز ایمن ، فراهم می گردد. عملکرد چنین مراکزی نظیر دفاتراسناد رسمی در اینترنت است .
در ساختار گواهینامه ، دو فیلد اطلاعاتی مرتبط با CA نیز وجود دارد : نام صادرکننده گواهینامه و امضای دیجیتالی صادرکننده . وجود فیلدهای فوق در گواهینامه صادر شده ، تضمین لازم در خصوص تعلق کلید عمومی به صاحب آن را ارائه می نماید.بدین ترتیب مسئله امین بودن از افراد به مراکز CA منتقل می گردد.وجود یک مرکز امین و معتبر ، از جمله مهمترین دلایل حضور CA ، محسوب می گردد . در حال حاضر ، سازمان های متعددی ، اقدام به صدور گواهینامه می نمایند و هر روز نیز تعداد آنان افزایش می یابد . زمانیکه دو کاربر و یا دو سازمان قصد مبادله گواهینامه را داشته باشند ، هر یک از آنان می تواند هویت طرف مقابل خود را با استفاده از تائیدیه مراکز CA و گواهینامه های صادرشده توسط مراکز CA ، انجام دهد. هر گواهینامه شامل کلید عمومی مربوط به خود نیز می باشد ، بنابراین می توان از آن به منظور رمزنگاری داده برای ارسال به صاحب گواهینامه استفاده نمود. گواهینامه ها همچنین شامل امضای دیجیتال مرکز CA صادرکننده گواهینامه نیز می باشند. یک امضای دیجیتال با استفاده از کلید خصوصی مولف سند ایجاد می گردد . بنابراین به منظور بررسی یک گواهینامه که توسط یک مرکز CA خاص تائید شده است ، به کلید عمومی مرکز CA نیز نیاز خواهد بود. کلید ها ی عمومی اکثر مراکز CA به همراه مرورگرها ، برنامه های پست الکترونیکی و سایر پکیج های نرم افراری توزیع می گردد .


http://www.tafda.org/groups/network/...rtificate.aspx (http://www.tafda.org/groups/network/wiki/digital-certificate.aspx)

نمایش محتویات یک Certificate:

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

کد:



string Certificate = "path";// Load the certificate into an X509Certificate object.X509Certificate cert = newX509Certificate(Certificate);// Get the value.string resultsTrue = cert.ToString(true);// Display the valueMessageBox.Show(resultsTrue);



برای دریافت اطلاعات بیشتر می توانید از کلاس زیر استفاده نمایید:
X509Certificate2
************************************************** *********

************************************************** *********
دوستان کسی می تونه توضیح بده ClickOnce چیه و به چه دردی می خوره؟
************************************************** *********

************************************************** *********


نقل قول:
ClickOnce applications are based on the .NET Framework and are subject to code access security constraints. For this reason, it is important that you understand the implications of code access security and write your ClickOnce applications accordingly.
Code access security is a mechanism in the .NET Framework that helps limit the access that code has to protected resources and operations. You should always configure the code access security permissions for your ClickOnce application to include only those permissions that your application requires. Visual Studio provides the tools necessary to determine and configure the permission set for your application.


ClickOnce is a deployment technology that allows you to create self-updating Windows-based applications that can be installed and run with minimal user interaction. ClickOnce deployment overcomes three major issues inherent in deployment:
#


Difficulties in updating applications. With Microsoft Windows Installer deployment, whenever an application is updated, the user must reinstall the entire application; with ClickOnce deployment, you can provide updates automatically. Only those portions of the application that have changed are downloaded, then the full, updated application is reinstalled from a new side-by-side folder.
#


Impact to the user's computer. With Windows Installer deployment, applications often rely on shared components, with the potential for versioning conflicts; with ClickOnce deployment, each application is self-contained and cannot interfere with other applications.
#


Security permissions. Windows Installer deployment requires administrative permissions and allows only limited user installation; ClickOnce deployment allows non-administrative users to install and grants only those Code Access Security permissions necessary
for the application.

برای اطلاعات بیشتر به اینجا (http://msdn.microsoft.com/en-us/library/142dbbz4%28VS.80%29.aspx)برید
************************************************** *********

tabatabaeefar
شنبه 02 آبان 1388, 09:22 صبح
توی این فوروم جای این کار نیست
کافی شما توی تالار مربوطه تاپیک crack me بگذارید و 30 دقیقه بعد مراجعه کنید تا نتیجه رو ببینید
سلام دوست عزيز
من چند وقت پيش يه برنامه توي تالار امنيت گذاشتم كه به توصيه Nima NT عزيز از {smartassembly} استفاده كردم.
30 دقيقه كه سهله ، بعد از گذشت بيش از 40 روز هنوز هيچ خبري نشده!
http://barnamenevis.org/forum/showthread.php?t=178658

tabatabaeefar
شنبه 02 آبان 1388, 09:26 صبح
هک در زبان انگلیسی به معنی کلنگ هستش و در کامپیوتر هر کاری که واسه خراب کاری باشه بهش هک مبگن
سلام دوست عزيز
بد نيست به اين تاپيك يه سري بزنيد.
http://barnamenevis.org/forum/showthread.php?t=179584
موفق باشيد.