شباهتها و تفاوتهای بین هک و کرک و مهندسی معکوس



آن چیزی که من در پست قبلی  توضیح دادم ، درواقع نوعی کرک ساده بود نه مهندسی معکوس !!



حالا می خواهم شباهتها و تفاوتهای بین هک و کرک و مهندسی معکوس را بطور خلاصه تشریح نمایم :


الف - شباهتها 



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



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


هک = hack  =  نفوذ - جاسوسی - خبرچینی - کسب اطلاعات از دشمن 


هکر = hacker = نفوذی - جاسوس - مخبر - جمع کننده ی اطلاعات


کرک = crack = شکستن قفل - رمزگشایی - حل معما 


کرکر = cracker = رمزشکن . کد شکن . قفل گشا . مشکل گشا !!



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


مهندسی معکوس =  هک + کرک + بازسازی + تولید محصول بومی از روی محصول بیگانه 


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


این فرایند برای مستقل شدن یک سازمان یا شرکت یا دولت یا کشور  ، کاملا مفید و کاربردی است . 


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


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


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


رقابت سالم ، بدون مهندسی معکوس ؛ کاملا بی معنا و پوچ است . 



مهندسی معکوس = Reverse engineering


  



نفوذی یعنی عامل نفوذ به ساختار و صفوف دشمن در جنگ در جهت جاسوسی و خنثی کردن عملیات دشمن . 


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



یک هکر همیشه یک نفوذی است . 


درواقع تا زمانیکه شما نتوانید باینری را با کمک  hex editor  رمزگشایی کنید نمی توانید آنرا  کرک یا مهندسی معکوس نمایید . 


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


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


برای مهندسی معکوس ، نیازی به اتاق پاک و این الفاظ و ... نیست . 


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


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



2- دومین شباهت بین هک و کرک و مهندسی معکوس خصوصا در دنیای نرم افزار در این است که در هر سه مورد ما پس از نفوذ به سیستم به دنبال چیزهای جالب می گردیم مثلا به دنبال نقاط قوت و ضعف و اجزای مخفی و مرموز درون سیستم ، می گردیم و مدام جستجو می کنیم تا غریزه ی کنجکاوی مان  ارضا شود !!



هکرها ( کرکرها و مهندسان معکوس ) همگی موجوداتی به شدت کنجکاو هستند و حتی از ریزترین و مخفی ترین و بی اهمیت ترین جزئیات نیز  چشم پوشی نمی کنند زیرا انها معتقدند که همه  چیز حتی چیزهای به درد نخور و اضافی  شاید یک روز به درد بخورند و لذا از همه چیز یک نسخه در سیستم شخصی شان دارند ! 

آنها از این نسخه برای روز مبادا و برای جلوگیری از نفوذ سایر هکرها و گروههای رقیب استفاده می نمایند . 



3-  در دنیای نرم افزار و سخت افزار ،  هر سه مفهوم هک و کرک و مهندسی معکوس  ، با زبانهای سطح پایین یعنی ماشین و اسمبلی  سروکار دارند . یعنی این دو زبان درواقع  ابزارهای اصلی هکرها و کرکرها و مهندسان معکوس ، می باشند . 


بسیاری از هکرهای واقعی هیچ نیازی به کد منبع ندارند و تنها با یک نگاه به انبوهی از کدهای 0 و 1 زبان ماشین ، براحتی می توانند روابط بین کدها را درک کرده و کدها را به نفع خودشان تغییر دهند . 


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




ب- تفاوتها 


تفاوت چندانی بین هک و کرک و مهندسی معکوس وجود ندارد زیرا هر سه  زیر شاخه ی نفوذ هستند!!


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



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



+


من از زبانهای سطح پایین ( ماشین و اسمبلی )  برای تولید و ساختن استفاده می کنم نه تخریب و جاسوسی و هک . 


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




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



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


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


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


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


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


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


+

+


خب اگر خدا بخواهد از پست بعدی ، سعی می کنم زبان برنامه نویسی اسمبلی Fasm یا بطور خلاصه ، زبان برنامه نویسی اسمبلی را براساس مستندات رسمی و معتبر بین المللی  و بصورت غیرمستقیم آموزش دهم . 



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


من فعلا نمی توانم چیزی را ترجمه کنم زیرا نه وقت اینکار را دارم نه اینکه ترجمه ی من ،  تمام مفاهیم را منتقل می کند . 


عملا ترجمه  باعث می شود که اصالت و اعتبار متن اصلی ، به زیر سوال برود . 


لذا به احتمال خیلی زیاد ، از هرنوع ترجمه خودداری می کنم . 


لطفا درخواست ترجمه نکنید . متاسفم . من نمی توانم هیچ متنی را برای شما ترجمه کنم و فقط تبلیغ می کنم . 


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


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


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


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



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


من بجای ماهی دادن  ،  سعی می کنم ماهیگیری را به شما آموزش دهم . 


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



سلب مسولیت :


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


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


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



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

 پس توصیه می کنم زبان انگلیسی تان را تقویت نمایید تا خودتان شخصا بتوانید به هدف مورد نظرتان برسید  و به ترجمه نیاز نداشته باشید  !! 


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


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


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


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


پایان .