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

مهندسی معکوس نرم افزار چیست؟
هر نرمافزار سه لایه دارد: رفتار (آنچه کاربر میبیند)، داده (آنچه ذخیره میکند) و کد (منطقی که این دو را به هم وصل میکند). وقتی سورسکد و مستندات وجود دارد، فهم نرمافزار ساده است. اما در دنیای واقعی خیلی وقتها فقط فایل اجرایی (exe یا apk) و یک پایگاه داده مانده است. مهندسی معکوس مجموعه روشهایی است که از همین سه لایه، طراحی نرمافزار را بازسازی میکند.
خروجی مهندسی معکوس میتواند یکی از اینها باشد:
- مستند کامل امکانات و منطق نرمافزار (چه کاری را با چه قاعدهای انجام میدهد)
- نقشه پایگاه داده و فرمت فایلها، برای انتقال داده
- شرح رابطها و پروتکلهای ارتباطی، برای ساخت نرمافزار سازگار
- گزارش امنیتی (آسیبپذیریها، رفتار مشکوک، ارسال اطلاعات به بیرون)
- و در پروژههای بازسازی: یک نرمافزار جدید که همان کار را با فناوری امروز انجام میدهد
واژه «مهندسی معکوس» در صنعت برای قطعات مکانیکی و بردهای الکترونیکی هم به کار میرود؛ این مقاله فقط درباره نرمافزار است.
انواع مهندسی معکوس نرمافزار
بر اساس روش: ایستا و پویا
| نوع | چه میکند | مثال |
|---|---|---|
| تحلیل ایستا (Static) | بدون اجرای نرمافزار، فایل آن بررسی میشود: دیکامپایل، دیساسمبل، بررسی منابع و رشتهها | باز کردن یک برنامه داتنت و دیدن کد معادل آن |
| تحلیل پویا (Dynamic) | نرمافزار اجرا و رفتارش زیر نظر گرفته میشود: دیباگ، ثبت فراخوانیها، ترافیک شبکه، تغییرات پایگاه داده | دیدن اینکه با زدن دکمه «ثبت» کدام جدول تغییر میکند |
بر اساس موضوع
کد
بازسازی منطق از فایل اجرایی؛ برای نرمافزارهای داتنت و جاوا و اندروید بسیار دقیقتر از برنامههای C++ است.
پایگاه داده
استخراج جدولها، رابطهها و معنای فیلدها؛ معمولاً ارزشمندترین بخش در پروژههای سازمانی.
فرمت فایل
فهم ساختار فایلهایی که نرمافزار ذخیره یا تبادل میکند، برای خواندن آنها در سیستم جدید.
پروتکل و رابط
فهم اینکه نرمافزار چطور با سرور، دستگاه یا سامانه دیگر حرف میزند، برای ساخت نرمافزار سازگار.
۸ کاربرد مهندسی معکوس نرمافزار

- بازسازی نرمافزار قدیمی بدون سورسکد: سازنده رفته یا سورس گم شده؛ منطق استخراج و نسخه جدید ساخته میشود.
- انتقال داده: دادههای سالها کار از پایگاه دادهای با ساختار نامعلوم به سیستم جدید منتقل میشود.
- تبدیل ویندوزی به تحت وب: رایجترین درخواست سازمانها (راهنمای کامل تبدیل).
- ساخت نرمافزار سازگار: اتصال نرمافزار جدید به دستگاه یا نرمافزاری که دارید.
- بررسی امنیت و تحلیل بدافزار: اطمینان از اینکه نرمافزار خریداریشده درِ پشتی یا رفتار مشکوک ندارد.
- یافتن علت خطا در نرمافزار بدون پشتیبان: وقتی هیچکس نیست که بگوید چرا یک گزارش اشتباه میدهد.
- مستندسازی سیستم موجود: برای تیم جدید یا برای قراردادهای پشتیبانی.
- ارزیابی فنی پیش از خرید یا ادغام: فهم کیفیت و ریسک نرمافزاری که قرار است خریداری شود.
مثالهای ملموس از مهندسی معکوس نرمافزار
نرمافزار حقوق و دستمزد قدیمی
فرمول محاسبه اضافهکار و کسورات فقط داخل فایل اجرایی است. با مقایسه ورودی و خروجی و تحلیل کد، فرمولها دقیق مستند میشوند.
دستگاه حضور و غیاب
سازنده دستگاه فقط یک نرمافزار ویندوزی داده است. با فهم فرمت فایل خروجی، دادهها مستقیم وارد سامانه پرسنلی تحت وب میشوند.
اپ اندروید سازمان
اپ قدیمی خود سازمان باید بازسازی شود اما سورس آن نیست. ساختار صفحهها و ارتباط با سرور از فایل apk استخراج میشود.
مراحل مهندسی معکوس نرم افزار در ۷ گام

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

ابزار درست به فناوری نرمافزار بستگی دارد. اینها ابزارهای شناختهشدهای هستند که متخصصان امنیت و توسعه در دنیا استفاده میکنند:
| ابزار | نوع | مناسب برای |
|---|---|---|
| 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 برای پروتکلها.
آیا مهندسی معکوس نرمافزار قانونی است؟
روی نرمافزاری که مالک آن هستید یا مجوز دارید، و برای ساخت نرمافزار سازگار با رعایت حقوق سازنده (ماده ۵ قانون ۱۳۷۹)، بله. کرک، کپی و عرضه نرمافزار دیگران مجاز نیست.
حکم شرعی مهندسی معکوس چیست؟
پاسخ دقیق شرعی را باید از دفتر مرجع تقلید خود بپرسید. از نظر قانونی، مهندسی معکوس روی نرمافزار متعلق به خودتان یا با مجوز سازنده، با قانون حمایت از حقوق پدیدآورندگان نرمافزار سازگار است.
سورسکد نرمافزار قدیمیمان گم شده؛ قابل بازسازی است؟
بله. با تحلیل فایل اجرایی، رفتار و پایگاه داده، منطق نرمافزار مستند و نسخه جدید ساخته میشود. در نرمافزارهای داتنت و جاوا کد بسیار دقیقتر بازمیگردد.
مهندسی معکوس اپلیکیشن اندروید هم ممکن است؟
با همان شرط مالکیت یا مجوز، بله؛ مثلاً برای بازسازی اپ قدیمی خودتان یا اتصال اپ جدید به سرور موجود.
مهندسی معکوس چقدر طول میکشد؟
به اندازه نرمافزار، فناوری آن و در دسترس بودن پایگاه داده و مستندات بستگی دارد. با کمک هوش مصنوعی کوتاهتر از روش سنتی است و پس از بررسی اولیه زمان دقیق اعلام میشود.
نرمافزاری که لازم دارید را به ما بگویید
هر نرمافزاری که سازمان یا کسبوکارتان لازم دارد، از سامانه تحت وب و اپ موبایل تا بازسازی نرمافزار قدیمی و هوش مصنوعی اختصاصی، با موتور هوش مصنوعی رایورز و بازبینی مهندسان ما ساخته میشود.
