معرفی کرک
شنبه 8 مرداد 1390 3:44 AM
با وجود پیشرفت روز به روز علوم کامپیوتری در ایران بسیاری از این علوم هنوز فراگیر نشده و تعداد بسیار کمی از علاقه مندان به علوم کامپیوتری با این علوم آشنایی دارند. یکی از مهمترین علومی که در برنامه نویسی و مهندسی نرم افزار از آن استفاده می شود و برای برنامه نویسان حرفه ای کاربرد فراوان دارد علم Reverse Engineering1 است. در واقع برنامه نویسان توسط این علم می توانند Bug ۲ های موجود در برنامه خود را پیدا کنند و به رفع آنها بپردازند.
علم Cracking ۳ شاخه ای از علم Reverse Engineering است. از این رو برای درک معنا و مفهوم علم Cracking باید با Reverse Engineering آشنا شویم. اما برای درک مهندسی معکوس هم باید یک پله عقب تر برویم : تا زمانی که با علم مهندسی نرم افزار یا همان برنامه نویسی آشنا نشویم ، متوجه Reverse Engineering هم نخواهیم شد. به همین خاطر تمام کسانی که مایل به یادگیری علم کرک هستند باید تا حدودی با برنامه نویسی و مهندسی نرم افزار آشنایی داشته باشند.
برای اینکه بتوانیم یک Cracker4 حرفه ای باشیم باید معنا و مفاهیم خیلی از علوم پایه ای کامپیوتر را بدانیم. در واقع علم Cracking چندان علم آسانی نیست و مشکلات زیادی در راه یادگیری این علم خواهیم داشت. به عنوان مثال لازم هست بدانیم زبان ماشین چیست، CPU5 چگونه کار میکند، تا حدودی با برنامه نویسی آشنا باشیم، زبان Assembly6 را بلد باشیم، ساختار فایل های PE7 را بشناسیم و… . در واقع پیش نیازهای یادگیری علم Cracking زیاد هستند و اگر شما واقعا دوست دارید تا این علم را یاد بگیرید باید به دنبال خیلی از علوم کامپیوتری بروید و دانسته های خود را در مورد خیلی از مسائل کامپیوتری افزایش دهید.
با وجود اینکه مدت زیادی از شیوع این علم در ایران می گذرد اما هنوز آموزش های خوبی برای رواج این علم به زبان فارسی نوشته نشده به همین خاطر بر آن شدیم تا آموزشی را تدوین نماییم و دشواری های راه را برای علاقه مندان تازه کار بر طرف نماییم. ما در این دوره آموزشی سعی داریم تا نیازهای ابتدایی یک تازه کار در دنیای Crack را برای شروع Cracking بر طرف کنیم. بحث های حرفه ای در مورد Cracking نیز در دیگر آموزش های گروه قابل دسترسی هستند.
نکته ای که قبل از شروع باید به آن اشاره کنیم این است که اگرچه مطالب استفاده شده در این مجموعه برای افرادی که با برنامه نویسی آشنا نیستند قابل فهم است اما آشنایی با یک زبان برنامه نویسی سطح بالا (مانند ++C یا Delphi و یا Visual Basic) برای درک بهتر مطالب بسیار ضروری است. به همین خاطر در صورتی که تمایل به یادگیری Cracking دارید، همانطور که قبلا هم اشاره شد باید با یک زبان برنامه نویسی آشنا باشید.
مهندسی نرم افزار ، برنامه نویسی و طراحی
یک برنامه نویس با به کار گیری زبان های برنامه نویسی می تواند برنامه خود را طراحی و برای آن کد نویسی کند. به عنوان مثال می تواند برای برنامه Menu قرار دهد، متن های مورد نظر خود را داخل آن قرار دهد، قسمت های مختلف برنامه را به هم ارتباط دهد و از همه مهمتر برای برنامه خود کد بنویسید تا برنامه یک سری محاسبات اصلی را انجام دهد.
بنابر این به مجموعه کارهایی که برنامه نویس (یا همان مهندس نرم افزار) برای طراحی نرم افزار خود انجام می دهد مهندسی نرم افزار گفته می شود. در واقع اگر بخواهیم یک تعریف دقیق و کتابی از مهندسی نرم افزار داشته باشیم به جمله زیر می رسیم:
مهندسی نرم افزار عبارت است از به کار گیری اصول علمی (مانند زبان برنامه نویسی) برای طراحی و یا ساخت یک نرم افزار.