طراحی و تولید نرم‌افزار اختصاصی با هوش مصنوعی

مهندسی معکوس نرم افزار چیست؟ انواع، کاربردها، ابزارها و قانون

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

زمان مطالعه: ۱۰ دقیقهبه‌روزرسانی: مهر ۱۴۰۵نویسنده: تیم محتوای هوش مصنوعی رایورز
پاسخ کوتاه

مهندسی معکوس نرم افزار (Software Reverse Engineering) یعنی تحلیل یک نرم‌افزار آماده برای فهمیدن اینکه چطور کار می‌کند: ساختار داده‌ها، منطق محاسبات، فرمت فایل‌ها و نحوه ارتباطش با سیستم‌های دیگر؛ وقتی سورس‌کد یا مستندات در دسترس نیست. در مهندسی معمولی از طراحی به نرم‌افزار می‌رسیم و در مهندسی معکوس از نرم‌افزار به طراحی. کاربرد قانونی آن برای سازمان‌ها بازسازی نرم‌افزار قدیمی، انتقال داده، ساخت نرم‌افزار سازگار و بررسی امنیت است؛ و در ایران باید با رعایت قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای (مصوب ۱۳۷۹) و فقط روی نرم‌افزاری انجام شود که مالک آن هستید یا مجوزش را دارید.

مهندسی معکوس نرم افزار در هوش مصنوعی رایورز؛ تحلیل، استخراج، مستندسازی و بازسازی
مهندسی معکوس نرم‌افزار: تحلیل، استخراج و بازسازی دانش نرم‌افزارهای موجود.

مهندسی معکوس نرم افزار چیست؟

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

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

  • مستند کامل امکانات و منطق نرم‌افزار (چه کاری را با چه قاعده‌ای انجام می‌دهد)
  • نقشه پایگاه داده و فرمت فایل‌ها، برای انتقال داده
  • شرح رابط‌ها و پروتکل‌های ارتباطی، برای ساخت نرم‌افزار سازگار
  • گزارش امنیتی (آسیب‌پذیری‌ها، رفتار مشکوک، ارسال اطلاعات به بیرون)
  • و در پروژه‌های بازسازی: یک نرم‌افزار جدید که همان کار را با فناوری امروز انجام می‌دهد

واژه «مهندسی معکوس» در صنعت برای قطعات مکانیکی و بردهای الکترونیکی هم به کار می‌رود؛ این مقاله فقط درباره نرم‌افزار است.

انواع مهندسی معکوس نرم‌افزار

بر اساس روش: ایستا و پویا

نوعچه می‌کندمثال
تحلیل ایستا (Static)بدون اجرای نرم‌افزار، فایل آن بررسی می‌شود: دیکامپایل، دیس‌اسمبل، بررسی منابع و رشته‌هاباز کردن یک برنامه دات‌نت و دیدن کد معادل آن
تحلیل پویا (Dynamic)نرم‌افزار اجرا و رفتارش زیر نظر گرفته می‌شود: دیباگ، ثبت فراخوانی‌ها، ترافیک شبکه، تغییرات پایگاه دادهدیدن اینکه با زدن دکمه «ثبت» کدام جدول تغییر می‌کند

بر اساس موضوع

کد

بازسازی منطق از فایل اجرایی؛ برای نرم‌افزارهای دات‌نت و جاوا و اندروید بسیار دقیق‌تر از برنامه‌های C++ است.

پایگاه داده

استخراج جدول‌ها، رابطه‌ها و معنای فیلدها؛ معمولاً ارزشمندترین بخش در پروژه‌های سازمانی.

فرمت فایل

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

پروتکل و رابط

فهم اینکه نرم‌افزار چطور با سرور، دستگاه یا سامانه دیگر حرف می‌زند، برای ساخت نرم‌افزار سازگار.

۸ کاربرد مهندسی معکوس نرم‌افزار

کاربرد مهندسی معکوس نرم افزار؛ نبود سورس‌کد، تحلیل عملکرد، مستندسازی، امنیت و سازگاری
چه زمانی از مهندسی معکوس استفاده می‌کنیم؟
  1. بازسازی نرم‌افزار قدیمی بدون سورس‌کد: سازنده رفته یا سورس گم شده؛ منطق استخراج و نسخه جدید ساخته می‌شود.
  2. انتقال داده: داده‌های سال‌ها کار از پایگاه داده‌ای با ساختار نامعلوم به سیستم جدید منتقل می‌شود.
  3. تبدیل ویندوزی به تحت وب: رایج‌ترین درخواست سازمان‌ها (راهنمای کامل تبدیل).
  4. ساخت نرم‌افزار سازگار: اتصال نرم‌افزار جدید به دستگاه یا نرم‌افزاری که دارید.
  5. بررسی امنیت و تحلیل بدافزار: اطمینان از اینکه نرم‌افزار خریداری‌شده درِ پشتی یا رفتار مشکوک ندارد.
  6. یافتن علت خطا در نرم‌افزار بدون پشتیبان: وقتی هیچ‌کس نیست که بگوید چرا یک گزارش اشتباه می‌دهد.
  7. مستندسازی سیستم موجود: برای تیم جدید یا برای قراردادهای پشتیبانی.
  8. ارزیابی فنی پیش از خرید یا ادغام: فهم کیفیت و ریسک نرم‌افزاری که قرار است خریداری شود.

مثال‌های ملموس از مهندسی معکوس نرم‌افزار

نرم‌افزار حقوق و دستمزد قدیمی

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

دستگاه حضور و غیاب

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

اپ اندروید سازمان

اپ قدیمی خود سازمان باید بازسازی شود اما سورس آن نیست. ساختار صفحه‌ها و ارتباط با سرور از فایل apk استخراج می‌شود.

مراحل مهندسی معکوس نرم افزار در ۷ گام

فرایند مهندسی معکوس نرم افزار؛ تحلیل فایل‌ها، استخراج اطلاعات، مستندسازی، بازسازی و بهبود
فرایند کلی در یک نگاه؛ هفت گام دقیق در فهرست زیر آمده است.
  1. بررسی مالکیت و هدف: مالک نرم‌افزار کیست، قرارداد خرید یا توسعه چه اجازه‌ای می‌دهد و هدف دقیق کار چیست.
  2. شناسایی فناوری: نرم‌افزار با چه زبانی و چه پایگاه داده‌ای ساخته شده (دات‌نت، دلفی، VB6، جاوا، اندروید…). روش و ابزار کار به همین بستگی دارد.
  3. مشاهده رفتار: همه صفحه‌ها، فرم‌ها، گزارش‌ها و حالت‌های خطا با کمک یک کاربر باتجربه ثبت می‌شوند.
  4. تحلیل داده: پایگاه داده و فایل‌ها بررسی و نقشه آن رسم می‌شود؛ معنای هر جدول و فیلد مشخص می‌شود.
  5. تحلیل کد و منطق: با ابزارهای ایستا و پویا، محاسبات و قواعد استخراج می‌شود.
  6. مستندسازی و تأیید: یافته‌ها به سند نیازمندی تبدیل و با کاربران شما بازبینی می‌شود.
  7. تحویل یا بازسازی: مستند تحویل می‌شود، یا نسخه جدید ساخته و خروجی آن با نرم‌افزار قدیمی روی داده واقعی تطبیق داده می‌شود.

نرم‌افزارها و ابزارهای مهندسی معکوس

مهندسی معکوس نرم افزارهای ویندوزی، لینوکس، موبایل، وب، پایگاه داده و نرم‌افزارهای اختصاصی
مهندسی معکوس برای انواع نرم‌افزارها و پلتفرم‌ها: EXE و DLL و .NET، لینوکس، APK، وب‌اپلیکیشن و پایگاه داده.

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

ابزارهای رایج مهندسی معکوس نرم‌افزار
ابزارنوعمناسب برای
Ghidraدیس‌اسمبلر و دیکامپایلر رایگان و متن‌بازفایل‌های اجرایی ویندوز و لینوکس، تحلیل ایستا
IDA Proدیس‌اسمبلر تجاری (Hex-Rays)تحلیل حرفه‌ای فایل‌های اجرایی و بدافزار
x64dbgدیباگر متن‌باز ویندوزتحلیل پویا و رفتار برنامه هنگام اجرا
ILSpy و dnSpyدیکامپایلر دات‌نتنرم‌افزارهای سی‌شارپ و VB.NET؛ کد تقریباً خوانا برمی‌گردد
JADXدیکامپایلر اندرویدفایل‌های apk و اپلیکیشن‌های اندروید
Wiresharkتحلیل‌گر ترافیک شبکهفهم پروتکل ارتباط نرم‌افزار با سرور یا دستگاه
ابزارهای مدیریت پایگاه دادهاستخراج ساختار و رابطه‌هاSQL Server، اکسس، فایل‌های DBF و…

ابزار به‌تنهایی کار را تمام نمی‌کند؛ خروجی دیکامپایلر خام و بی‌نام است و فهمیدن «چرا» پشت هر خط کد، تجربه و زمان می‌خواهد. این‌جاست که هوش مصنوعی وارد می‌شود.

مهندسی معکوس با هوش مصنوعی

یکی از تازه‌ترین روندهای این حوزه، اتصال مدل‌های زبانی بزرگ به ابزارهای مهندسی معکوس است؛ پیشنهادهای جستجوی گوگل برای ابزارهایی مثل Ghidra و x64dbg هم حالا شامل نسخه‌های «MCP» (اتصال به دستیار هوش مصنوعی) است. هوش مصنوعی در این کارها سرعت را چند برابر می‌کند:

  • نام‌گذاری معنادار توابع و متغیرهای بی‌نام در خروجی دیکامپایلر
  • توضیح کدهای قدیمی (VB6، دلفی، کوبول) به زبان ساده و تبدیل آن به مستند فارسی
  • پیشنهاد معنای جدول‌ها و فیلدهای پایگاه داده از روی داده‌های نمونه
  • تولید تست‌های مقایسه‌ای بین نرم‌افزار قدیمی و نسخه جدید
  • ساخت سریع نسخه جدید از روی مستند استخراج‌شده

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

مزایا و محدودیت‌های مهندسی معکوس

مزایامحدودیت‌ها
نجات داده و دانش سال‌ها کار سازماندر نرم‌افزارهای محافظت‌شده یا مبهم‌سازی‌شده زمان‌بر است
رهایی از وابستگی به سازنده‌ای که دیگر نیستنام‌ها و توضیحات اصلی کد برنمی‌گردد و باید بازسازی شود
امکان نوسازی و تحت وب کردن نرم‌افزاربدون مالکیت یا مجوز، از نظر قانونی مجاز نیست
کشف آسیب‌پذیری‌ها پیش از مهاجمنیاز به تخصص و ابزار؛ کار آزمون‌وخطای ساده نیست

مهندسی معکوس از نظر قانون

در ایران مرجع اصلی قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای مصوب ۴ دی ۱۳۷۹ است (متن قانون در پایگاه اختبار منتشر شده). مواد مرتبط:

مادهخلاصهاثر در مهندسی معکوس
ماده ۱حق نشر، عرضه، اجرا و بهره‌برداری نرم‌افزار متعلق به پدیدآورنده است؛ حقوق مادی ۳۰ سال و حقوق معنوی نامحدود.کپی یا عرضه نرم‌افزار دیگران بدون اجازه مجاز نیست.
ماده ۳نام، عنوان و نشانه ویژه نرم‌افزار حمایت می‌شود.نسخه جدید نباید با نام یا نشان نرم‌افزار دیگری عرضه شود.
ماده ۵پدیدآوردن نرم‌افزارهای مکمل و سازگار با دیگر نرم‌افزارها با رعایت حقوق مادی نرم‌افزار اولیه مجاز است.پایه قانونی ساخت نرم‌افزار سازگار و اتصال به سیستم‌های موجود.
ماده ۶در نرم‌افزار سفارشی، حق تغییر و توسعه (در صورت نبود قرارداد خلاف) با کارفرماست.اگر نرم‌افزار قدیمی را خودتان سفارش داده‌اید، معمولاً حق تغییر و توسعه آن را دارید.
ماده ۷تهیه نسخه پشتیبان از نرم‌افزاری که به‌طور مجاز تهیه شده، مجاز است.—
ماده ۱۳نقض حقوق مورد حمایت این قانون، علاوه بر جبران خسارت، حبس و جزای نقدی دارد.دلیل اینکه بررسی مالکیت گام اول هر پروژه است.

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

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

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

مهندسی معکوس برای بازسازی نرم‌افزار سازمان

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

مستند کامل

شرح امکانات، منطق محاسبات و نقشه پایگاه داده؛ برای تیم داخلی یا قرارداد پشتیبانی.

انتقال داده

استخراج و انتقال داده‌های سال‌های گذشته به سیستم جدید، با تطبیق ارقام.

نسخه جدید

بازسازی کامل نرم‌افزار با فناوری امروز، تحت وب و موبایل، با تحویل سورس‌کد. طراحی نرم افزار اختصاصی

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

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

پرسش‌های متداول

مهندسی معکوس نرم افزار چیست؟

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

کاربرد مهندسی معکوس نرم‌افزار چیست؟

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

مراحل مهندسی معکوس چیست؟

بررسی مالکیت، شناسایی فناوری، مشاهده رفتار، تحلیل داده، تحلیل کد، مستندسازی و تأیید، و در پایان تحویل مستند یا بازسازی نرم‌افزار.

بهترین نرم‌افزار مهندسی معکوس کدام است؟

به فناوری بستگی دارد: Ghidra و IDA Pro برای فایل‌های اجرایی، x64dbg برای تحلیل پویا، ILSpy و dnSpy برای دات‌نت، JADX برای اندروید و Wireshark برای پروتکل‌ها.

آیا مهندسی معکوس نرم‌افزار قانونی است؟

روی نرم‌افزاری که مالک آن هستید یا مجوز دارید، و برای ساخت نرم‌افزار سازگار با رعایت حقوق سازنده (ماده ۵ قانون ۱۳۷۹)، بله. کرک، کپی و عرضه نرم‌افزار دیگران مجاز نیست.

حکم شرعی مهندسی معکوس چیست؟

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

سورس‌کد نرم‌افزار قدیمی‌مان گم شده؛ قابل بازسازی است؟

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

مهندسی معکوس اپلیکیشن اندروید هم ممکن است؟

با همان شرط مالکیت یا مجوز، بله؛ مثلاً برای بازسازی اپ قدیمی خودتان یا اتصال اپ جدید به سرور موجود.

مهندسی معکوس چقدر طول می‌کشد؟

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

نرم‌افزاری که لازم دارید را به ما بگویید

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