در موارد دیگر نیز پس از نصب نرمافزار باید فایل نصب شده نرمافزار را با یک فایل به اصطلاح Patch شده جابهجا کنید تا بتوانید از نرمافزار مورد نظر بدون محدودیت استفاده کنید. در حالت کلی به این نرمافزارها کرک شده (Crack) میگویند و این به معنای آن است که شما برای استفاده بدون محدودیت از نرمافزار هیچ پولی پرداخت نمیکنید و با روشهای مختلفی نرمافزار را بهصورت کرک شده مورد استفاده قرار میدهید.
تا به حال فکر کردهاید این کرکها چطور ساخته میشود؟ بهعنوان مثال نرمافزارهایی را در نظر بگیرید که پس از نصب، یک کد منحصر بهفرد را به رایانه شما اختصاص میدهد و کد فعالسازی برنامه نیز با توجه به کد اختصاصی رایانه شما باید ایجاد شود. در چنین شرایطی فکر کردهاید که چطور فایلهای keygen که برای ایجاد شماره سریال بهکار میرود، الگوریتم ایجاد کد معادل برای کد انحصاری شما را پیدا کرده و کد موردنیازتان را در اختیار شما قرار میدهد؟
این هفته قصد داریم شما را با علم مهندسی معکوس و دنیای زیرزمینی این علم در ایران آشنا کنیم. در همین زمینه گفتوگویی داریم با دکتر معین زمانی که بیش از 13 سال در علوم رایانهای فعالیت دارند و از چهرههای شناخته شده میان متخصصان علوم رایانه و فناوری اطلاعات بهشمار میروند.
آقای دکتر، مهندسی معکوس چیست و در چه زمینههایی کاربرد دارد؟
مهندسی معکوس علم بسیار گستردهای است، بهطوریکه در هر زمینه و هر مبحثی میتوانیم ردی از آن را مشاهده کنیم. صنایع غذایی، پزشکی، صنایع نظامی، الکترونیک و تمامی علوم مرتبط با رایانه برخی از مواردی است که مهندسی معکوس بوضوح در آنها مشاهده میشود. مبحث مهندسی معکوس بسیار پیچیده است. این مبحث شامل یکسری فرمولها، دستیابیها، پیگیریها، ردیابیها و... است.
مهندسی معکوس فقط با علم افراد سر و کار دارد یا نیازمند نبوغ خاصی است؟
بحث نبوغ را نمیتوان خارج از بحث علمی درنظر گرفت؛ چرا که مطمئنا فردی که با مهندسی معکوس سر و کار دارد علاوه بر تسلط بر علوم مورد نیاز در این رشته، از تجربه و نبوغی بیش از افراد دیگر نیز برخوردار است. بهطور کلی یک کاربر عادی که روی مباحث مختلفی همچون نرمافزار، سختافزار و سیستمعامل تسلط داشته باشد هیچوقت نمیتواند براحتی وارد مبحث مهندسی معکوس شود؛ چرا که این کاربر در انجام همه کارها روال انجام آن کار را در پیش گرفته، در صورتی که برای مهندسی معکوس باید راهها و روشهایی را غیر از راه و روش متداول و معمول که همه بهکار میگیرند، مورد استفاده قرار دهید. بهعنوان مثال وقتی بخواهید یک قطعه مکانیکی در ماشین را مورد مهندسی معکوس قرار دهید، باید درباره کوچکترین موارد و موضوعاتی همچون جنس قطعه، طریقه ساخت، طریقه عملکرد و دلیل استفاده از آن قطعه و... شناخت و اطلاعات کاملی را بهدست بیاورید و پس از آن مهندسی معکوس روی آن قطعه را آغاز کنید.
در حالت کلیتر برای مهندسی معکوس در هر زمینه علاوه بر تسلط کامل به آن علم باید به چند علم کناری و نزدیک به آن نیز تسلط داشته باشید. بهعنوان مثال وقتی قصد دارید مهندسی معکوس سختافزار انجام دهید نمیتوانید فقط به سختافزار تسلط داشته باشید؛ در کنار این علم باید به موارد دیگری همچون تسلط بسیار زیاد در زمینه نرمافزار هم توجه داشته باشید.
یعنی مهندسی معکوس علمی انفرادی است و یک نفر باید در چند زمینه مهارت داشته باشد؟
بههیچوجه! مهندسی معکوس میتواند علاوه بر انفرادی بهصورت تیمی متشکل از چند کاربر که هر کدام به یک علم تسلط دارند هم انجام شود. اما معمولا چون در ایران و برخی کشورهای دیگر این کار بهصورت شخصی و زیرزمینی انجام میشود، تصور بر این است که مهندسی معکوس توسط یک فرد انجام میشود. اما در برخی کشورها همچون چین و روسیه شرکتهایی برای انجام کار مهندسی معکوس فعالیت میکنند و در برخی دیگر همچون آمریکا دانشگاههای بسیار معروفی وجود دارند که به مبحث مهندسی معکوس در علوم پزشکی میپردازند. خودمان در ایران نیز در زمینه مهندسی معکوس صنایع نظامی بسیار قدرتمند هستیم و در زمینههای پزشکی نیز کارهای زیادی در این زمینه انجام شده است.
منظورتان از فعالیت زیرزمینی چیست؟
اصطلاح زیرزمینی به معنای آن است که حمایت سازمان یا تشکیلات خاصی از این مجموعه نمیشود و معمولا هم بچههای مهندسی معکوس کار سعی نمیکنند خودشان را معرفی کنند یا برای کسب شهرت کاری انجام دهند. بیشتر این کار را به دلیل علاقه و مهارتی که به این علم دارند انجام میدهند و معمولا از اسمهای مستعار هم برای خودشان استفاده میکنند.
یعنی دورههای آموزشی در زمینه مهندسی معکوس بهطور رسمی در ایران وجود ندارد؟
تا جایی که من اطلاع دارم جز در موارد معدود در رشتههای ریاضی و مشابه آن که به بحث مهندسی معکوس روی الگوریتمها، معادلات و اعداد پرداخته میشود، چنین آموزشهایی وجود ندارد.
این علاقهای که فرمودید مثل علاقه به هککردن در میان هکرهاست و کارهای تخریبکننده است؟
بهطور کلی مهندسی معکوس ابزار خیلی قدرتمندی است و هر ابزار قدرتمندی را میتوان در جهت تخریب هم مورد استفاده قرار داد. متاسفانه این علم در ایران هم در برخی از موارد در جهت تخریب مورد استفاده قرار گرفته است. اما اگر بخواهیم جوانب خوب مهندسی معکوس را از هر لحاظ چه در سختافزار، نرمافزار، صنایع و علوم مختلف در نظر بگیریم، مزایایی به مراتب بیشتر از ضررهایش دربردارد.
چطور میتوانیم با تخریبهای این علم مقابله کنیم؟
ما باید خودمان از شرکتها، تشکیلات یا سایتهایی که میخواهیم رشد کنند حمایت کنیم. یعنی اگر کرک یک برنامه یا حتی نام کاربری و رمزعبور دسترسی به یک سرویس پولی را در اختیار داریم، سعی کنیم آن را منتشر نکنیم. اگر استفاده از آن برنامه یا سرویس واقعا برایمان سودمند است نسبت به تهیه نسخه اصلی آن اقدام کنیم.
معمولا کرکرها یعنی کسانی که کرک میکنند، شعار معروفی دارند که میگویند: ما کرک کردیم برای استفاده و تست شخصی، اگر میخواهید به صورت جدی (تجاری) از برنامه استفاده کنید، حتما برنامه مورد نظر را خریداری کنید.
بهنظر شما این شعار بیشتر جنبه شوخی ندارد؟ چرا که مشاهده میکنیم همه از این شعار استفاده میکنند در صورتی که خودشان در حال پخش کرک هستند!
هرچند این شعار در بیش از 90درصد کرکها مشاهده میشود و در بسیاری از کشورهای خارجی موجب میشود تا با سلب مسئولیت از سازنده کرک، امکان شکایت از آن وجود نداشته باشد، اما این قانون در گروههای کرک و تشکیلات کرکرها از اهمیت بسیار برخوردار است. به محض اینکه مشاهده کنند فردی کرک را برای کسب منافع مالی به انجام میرساند، او را از تیم و تشکیلات خود اخراج میکنند.
یعنی کرککردن در کشورهای خارجی جرم نیست؟
کرککردن اگر برای خود شخص استفاده مالی نداشته باشد جرم نیست؛ به عبارتی وقتی نتوانند اثبات کنند فرد از کرککردن یک برنامه استفاده مالی برده است، نمیتوانند او را محکوم کنند و مادامی که فرد کرک را حتی در سایتهای مختلف منتشر کند، اما هیچ پولی برای این کار دریافت نکند، جرمی را مرتکب نشده است.
تا جایی که من اطلاع دارم شما خودتان مدیر یکی از بزرگترین انجمنها و تنها سایت زیرزمینی در ایران با نام پیسیسون (PCSeven) هستید که بسیاری از نوابغ مهندسی معکوس و علوم دیگر رایانهای نیز در آن عضویت دارند و برای فعالان عرصه فناوری اطلاعات بسیار شناختهشده است. چند بار مشاهده شد که اعضای سایت شما نرمافزارهای ایرانی را برای نشان دادن ضعف امنیتی آنها کرک کردند، اما به دلایل مختلفی این کرکها در اینترنت منتشر شد و صدمات مالی به سازندگان این نرمافزارها وارد کرد، آیا شما با این کار موافق بودید؟
با توجه به اینکه مدیریت این تیم و انجمن به عهده من است، همیشه نوک پیکان به سوی من گرفته میشود؛ در حالیکه من و تیم اصلی هیچ نقشی در انتشار این کرکها نداشتیم و امکان کنترل هزاران کاربر نیز در توان یک نفر نیست. در هر حال این موضوع مربوط به سالهای قبل بود و چند سالی است که به هیچ عنوان نرمافزاری ایرانی از طرف تیم ما کرک نشده و پس از شناخت این شرکتها از مجموعه پیسیسون و اهدافش، این مشکلات رفع شده و بسیاری از شرکتهای ایرانی در حال حاضر با ما همکاری دارند.
بهنظر شما خود شرکتها چطور میتوانند از محصولاتشان حفاظت کنند؟ آیا استفاده از قفلهای امنیتی روش مناسبی است؟
یکی از مشکلاتی که همیشه با شرکتها مطرح میشد و برخی آن را قبول داشته و برخی دیگر رد میکردند، روشهای جلوگیری از استفاده غیرمجاز از محصولاتشان بود. همانطور که میدانید هیچ نرمافزاری را نمیتوان نفوذناپذیر دانست و صددرصد اطمینان داد که قابل کرک شدن نیست. با توجه به همین مسأله پیشنهاد ما به این شرکتها تمرکز روی خدماتدهی و سرویسهای پشتیبانی و همینطور به روز نگه داشتن محصولاتشان بوده است؛ چرا که تجربه ثابت کرده است کاربران حتی در صورتی که کرک نرمافزار را در اختیار داشته باشند، برای استفاده از خدمات پشتیبانی و بهروزرسانیها اقدام به خرید نرمافزار میکنند.
بهعنوان مثال شرکت مایکروسافت بهقدری روی سیستمهایعاملش دسترسی دارد که براحتی میتواند سیستمهای حفاظتی قدرتمندی را روی آنها پیاده کند که بمبهای زمانی، بررسی دورهای لیسانسهای صادره و... برخی از این روشهاست. اما مشاهده میکنید که این شرکت به جای آنکه نیرو و سرمایه خود را صرف بهکارگیری این روشها کند، در جهت پشتیبانی کاربرانی گام برمیدارد که نسبت به خریداری نسخههای اصلی سیستمعامل اقدام کردهاند. همچنین شرکت اپل نیز هیچ قفلی را روی سیستمعامل Mac OS خود قرار نداده و این اثباتی است برای توجه به سرویسهای پشتیبانی، به جای هدر دادن سرمایهها روی مباحث قفل گذاری.
پس چرا برای نصب نرمافزارها به صورت مجانی روی دستگاههای مجهز به سیستمعامل iOS باید آنها را جیلبرک کرد؟
انجام مهندسی معکوسی روی سیستمعامل iOS جیلبرک نامیده میشود که قابلیت دسترسی به فایلهای سیستمی را در اختیار کاربران قرار میدهد تا پس از برخورداری از این حق دسترسی، با اعمال روشهای مختلفی نسبت به نصب نرمافزارها بدون نیاز به پرداخت هزینه آنها اقدام کنند، به عبارت دیگر جیلبرککردن به معنای آن نیست که شما نرمافزار کرک شده روی آیفون، آیپد یا آیپاد خود نصب کنید، بلکه فقط دسترسی به فایلهای سیستمی را فعال میکند و به همین دلیل جیلبرک در حال حاضر در آمریکا منع قانونی ندارد و دادگاههای مختلف هم در موارد بسیاری رأی را به نفع افرادی صادر کردند که جیلبرک را انجام داده بودند.
پیشتر اشاره کردید که مهندس معکوسکاران از مهارت و نبوغ بسیار زیادی برخوردارند. در حال حاضر اوضاع این نوابغ در ایران چگونه است و در بازار کار چه جایگاهی دارند؟
متاسفانه فعالیت حوزه مهندسی معکوس نرمافزار در ایران اغلب زیرزمینی بوده و توسط هیچ شخص یا سازمانی مورد حمایت قرار نگرفته است. طی صحبتهایی که با شرکتهای کوچک و بزرگ نرمافزاری در این زمینه داشتیم در بهترین حالت توانستهایم درخصوص ضریب ایمنی قفل حفاظتی نرمافزارها به شرکت مورد نظر مشاوره بدهیم و مشخص کنیم آیا قفل امنیتی نرمافزار مورد اطمینان است یا خیر. حمایت خاصی از این مبحث در ایران نمیشود و افرادی که در این حوزه فعالیت دارند، منبع درآمد خاصی از آن ندارند. البته بسیاری از این افراد در زمینههای دیگر همچون برنامهنویسی و... مهارتهای بسیار زیادی دارند و با استفاده از این مهارتها در بازار کار به فعالیت مشغول هستند، اما اینکه بتوانند از این علم و مهارتشان برای کسب درآمد استفاده کنند، باید بگویم چنین محیطی برای آنها وجود ندارد.
به نظر شما ناتوانی در پرداخت دستمزدهای زیاد میتواند دلیلی بر استفاده نکردن از این نوابغ باشد یا شرکتهای ایرانی به بحث امنیت نرمافزارها و قفلگذاری روی آنها چندان اهمیت نمیدهند؟
اتفاقا شرکتهای ایرانی خیلی بیشتر از شرکتهای خارجی به مبحث قفل و امنیت نرمافزارها اهمیت میدهند. هرچند در این زمینه چندان موفق نبودند و این ناموفق بودن نیز ناشی از بهره نبردن از مهندسان معکوس و تنوع در روشهای برنامهنویسی و قفلگذاری بوده و صرفا به استفاده از نرمافزارها و روشهایی اکتفا کردهاند که توسط شرکتهای خارجی ایجاد شده و فقط تغییراتی را در آنها ایجاد کرده و به اصطلاح آنها را بومی کردهاند.
متاسفانه تا بهحال سعی نشده است که بهطور کامل یک سیستم جامع قفلگذاری ایجاد شود و همیشه به اعمال تغییرات در سیستمهای مشابه خارجی بسنده شده است. البته منکر نمیشویم که در موارد معدودی برای ساخت این سیستمها تلاشهایی صورت گرفته است، اما از نظر من هیچکدام نتوانسته است چندان موفق باشد. یکی از مهمترین دلایل عدم این موفقیت نیز این است که این عزیزان تلاشی در جهت استفاده از روشهای نوین برنامهنویسی نداشتهاند و هرگز هم سعی نشده مشاورهای کامل از یک تیم مهندسی معکوس در زمینه امنیت نرمافزارها گرفته شود.
بهطور کلی برای مهندسی معکوس روی قفل یک نرمافزار به چه مهارتهایی نیاز است و چه مراحلی را باید طی کرد؟
مهارتها و ابزارهایی که یک کرکر نیاز دارد در اعداد و ارقام و نوشته نمیگنجد. تجربه یک کرکر خوب باید در این زمینه بسیار باشد. همچنین یک کرکر خوب باید بهطور کامل از Packerها شناخت داشته باشد. شناخت الگوریتمها نیز دارای اهمیت بسیار است. مهمترین مهارت، شناخت و تسلط بر زبان اسمبلی است؛ چرا که یک کرکر پس از آنپککردن یک نرمافزار و دیاسمبلکردن آن، همه چیز را در زبان اسمبلی مشاهده میکند و چیزی جز صفر و یک در اختیار ندارد. در نهایت نیز در زبان اسمبلی با جستجوی کدهای موردنظر برای خنثی کردن قفل نرمافزار اقدام میکند.
یعنی با تبدیل یک نرمافزار به زبان اسمبلی، هیچ چیز از دید کرکر پنهان نمیماند؟
در زبان صفر و یک هیچ چیز را نمیتوان مخفی کرد. اما این به معنای آن نیست که کرکر براحتی میتواند در بخشهای موردنظر خود در نرمافزار تغییرات ایجاد کند. در این زبان نیز ممکن است سازنده یا قفلگذار برنامه، کدها را بسیار پیچیده کرده باشد تا فهم آن برای کرکر سخت باشد. همچنین این احتمال وجود دارد که فایل اصلی نرمافزار به فایلهای دیگری ارتباط داده شده باشد و برای برداشتن قفل نرمافزار به بررسی و شناخت عملکرد فایلهای جانبی آن نیز نیاز باشد.
باتوجه به شناختی که از فعالان این حوزه دارید، ایران به ارائه آموزشهای رسمی در قالب رشتههای دانشگاهی در این زمینه نیازمند است؟
طبیعتا پتانسیل خیلی بالایی در این زمینه در ایران وجود دارد و مطمئنا مورد استقبال تعداد زیادی از افراد نیز قرار خواهد گرفت.
فکر میکنید در انجمنی که مدیریتش را بهعهده دارید چند نفر از نخبگان و نوابغ ایرانی عضو هستند؟
به جرأت میتوانم بگویم بیش از 1500 نفر از اعضای این سایت از جمله نخبگان فناوری اطلاعات هستند.
جوانترین و مسنترین نابغههای ایرانی که در پیسیسون عضویت دارند چند سالشان است؟
یکی از دوستان 16 یا 17 سال دارد و تقریبا میتوانم بگویم هیچ Packer وجود ندارد که نتواند آن را شناسایی و آنپک کند. همچنین مسنترین کاربر نیز حدودا 45 سال دارد و این توانایی را دارد تا به تنهایی بسیاری از نرمافزارها با انواع روشهای محافظتی را کرک کند.
چه دلیلی وجود دارد که این اعضا در یک انجمن زیرزمینی با یکدیگر ارتباط داشته باشند؟
هرکاربر، زمانی که اطلاعاتی را از یک مجموعه کسب کند و چیزی یاد بگیرد، برایش سودمند است. در این شرایط همیشه منافع مالی مطرح نیست و همین که کاربر بتواند به مسائل و مواردی بپردازد که در سطح کاربران عمومی نیست و ابزارهایی در اختیار کاربران قرار گیرد که هرجایی یافت نمیشود، دلیلی بر تمایل به عضویت در اینگونه سایتهاست.
پس چرا چنین سایتی جنبه عمومی ندارد و همچنان بهصورت زیرزمینی فعالیت میکند؟
یکی از دلایل عمومیت نداشتن اینگونه سایتها، بحث کنترل روی آن است. بهطور منطقی وقتی تعداد زیادی از کاربران با سطح علمی بسیار بالا در کنار یکدیگر به بحث و تبادل نظر مشغول باشند، امکان کنترل افرادی که اطلاعات خیلی کمی دارند بسیار سخت است. در چنین شرایطی این مجموعه برای کاربران با سطح علمی پایین، خیلی سرد و خشک بهنظر میرسد؛ زیرا از بسیاری از مباحث اطلاع پیدا نمیکنند و حتی در مواردی نیز مباحث جدی که بین نخبگان مطرح میشود را مختل میکنند!
در حال حاضر در ایران هم گروهی وجود دارد که در سطح کرکرهای جهانی مطرح باشند؟
در حال حاضر گروهی متشکل از 12 نفر ایرانی با نام UnREal RCE در زمینه مهندسی معکوس نرمافزار با یکدیگر همکاری میکنند و کرک برخی از معروفترین برنامهها در دنیا همچون دیکشنری بابیلون و نرمافزار مدیریت دانلود IDM از جمله ریلیزهای (Release) دائم این گروه بهشمار میرود.
به عنوان آخرین سوال، آیا خودتان نرمافزارهای کرک شده را به کار میبرید یا نسخههای اصلی آنها را خریداری میکنید؟
اگر بگویم تا به حال از نرمافزارهای کرک شده استفاده نکردهام، کاملا دروغ است. اما علاقه خاصی که از سالها پیش داشتهام این بوده که نرمافزار را بهصورت نسخه اصلی ببینم.
بهعنوان مثال نرمافزاری همچون IDM را که توسط خودمان کرک میشود بهصورت اصلی برای چند سال است که خریداری میکنم؛ چون معتقدم نرمافزاری است که ارزش خرید دارد و برای حمایت از سازندگان آن با کمال میل این خرید را انجام میدهم.