همینطور که اگه با ++C یا Delphi یا هر زبان دیگه ای نوشته بشه باز هم همین قدر امکانش هست که برنامه کرک بشه.دو مطلب فوق صحیح نیستند. کدهای دات نت علاوه بر اینکه قابلیت خوانایی IL بالاتر از اسمبلی سخت افزار مقصد هست، Meta data کاملی را با خودشان حمل می کنند که می توان با کمک آن کد ساختار کد را بازسازی کرد.دوست عزیز این .NET بیدی نیست که با این باد ها بلرزه کرک کردن برنامه هایی که با .NET نوشته می شن خیلی سخت تر هستش از برنامه هایی که با مثلا Delphi نوشته می شه . شاید یکی از دلایلش این باشه که برنامه به طور مستقیم تبدیل نمیشه بلکه اول به یک صورت خاص کد می شه بعد در زمان اجرا یک برنامه دیگه میاد و اون ها رو تبدیل می کنه به زبانی که سیستم عامل بتونه اون ها را کنترل کنه .
همچین چیزی در کدهای Native به این شکل وجود نداره، و ادعای اینکه در این زمینه وضعیت کدهای دات نت با کدهای Native دلفی یا ++C برابر (یا بهتر!!) هست، ادعای اشتباهی است.
همانطور که گفتم، دات نت Meta data هر ماجول را در همان ماجول نگهداری میکنه، و در این زمینه خاص برتری نسبت به ++C یا دلفی نداره. دلفی در صورت استفاده از Form Designer آن، ساختار رابط گرافیکی کاربر را بصورت Resource نگهداری میکنه. در نهایت با این Resource شما به رابط گرافیکی کاربر دسترسی پیدا خواهید کرد، نه به کد نوشته شده. البته برای برنامه نویس دلفی این امکان وجود داره که فرم را در Runtime تولید کنه، یا مثل ++C کاملا از دستورات Win32 API برای ساخت رابط کاربر استفاده کنه. انتخاب با برنامه نویس هست.توی اينجا دات نت نسبت به Native يه حسن داره، و اون اينه كه فرم ها و ديگر Object ها Resource نيستند. ( البته تو ++C ميشه اين كار رو كرد ولی تو Delphi نمی دونم )
اون وقت باید برنامه نویس از بخشی از قابلیت های دات نت مثل Portability یا Optimize کردن کد بر اساس معماری سیستم مقصد، بگذره. در اون صورت تنها دلیل عمده ایی که کسی بخواید برنامه را با دات نت بنویسه کتابخانه کلاس های دات نت خواهد بود.ایده اگر آنقدر براتون با ارزش هست که نمیخواین فاش بشه یا برنامه الگوریتمش آنقدر حیاتی هست که فاش شدنش خسارات جبران ناپذیری به بار میاره اون موقع شما هم باید برای الگوریتم و ایده تون خرج کنید و با خرید ابزارهای .NET to Native برنامتون رو به Native Code تبدیل کنید که یه نمونه خوب همچین برنامه ای 1500 دلار قیمتشه!
بخاطر اینکه کامپایلر کد شما را Optimize کرده و در فرایند optimize کردن کد، متغیر Crack را فاقد ارزش تشخیص داده، و آن را از کد حذف کرده.کدمن این بود چرا متغیر Crack نیست ؟
در این زمینه خاص، مشکل دات نت در ذخیره Meta data بدون حفاظت مشخص هست، و برنامه نویس باید خودش با ابزارهای مختلف این اطلاعات را به نوعی حفاظت کنه، در حالی که میشد این قابلیت را ایجاد کرد که در هنگام کامپایل این بخش از اطلاعات با یک سری حفاظت های خاص در فایل نوشته بشند.