راهکارهای درست کردن ECU در موسسه های غیر دولتی با مجهز ترین متد ها
مهندسی معکوس بردها
آموزش مهندسی معکوس
برد (به انگلیسی: Reverse Engineering) به علمی گفته میشود که از پاسخ به
سوال میرسند و در واقع فرایند کشف اصول تکنولوژیکی یک دستگاه، شیئ یا یک سیستم
میباشد که از طریق تجزیه و تحلیل ساختار و عملکرد آن حاصل میشود. در اکثر مواقع
موضوع مورد بررسی یک دستگاه مکانیکی، الکتریکی، برنامه نرمافزاری یا یک ماده
بیولوژیکی یا شیمیایی میباشد که بدون داشتن دانش قبلی و تنها با جداسازی اجزا و
تجزیه و تحلیل شیوه عملکرد آن، سعی در ایجاد یک نمونه جدید از آن میگردد. مهندسی
معکوس به طور عمده در استفادههای تجاری و نظامی به کار میرود و هدف آن استنباط
پارامترهای طراحی یک محصول موجود بدون داشتن دانش کافی در زمینه تولید آن محصول و
فقط با پیمودن فرایند معکوس و به کارگیری تکنیکهای مشابه میباشد.
مهندسی معکوس بردهای الکترونیکی
مشابه سازی ( مهندسی معکوس ) بردها ، تجهیزات و سیستمهای
الکترونیکی
طراحی ,ارتقا و مهندسی معکوس تجهیزات الکترونیکی در قالب
بردهای الکترونیکی
استخراج شماتیک با مفهوم از روی PCB
تبدیل فایلهای GERBER
حتی به صورت PDF به سند های PCB
ارائه مستندات کامل شامل لیست تمام قطعات
مورد استفاده و مشخصات فنی آنها
تحلیل شماتیک مدار جهت جایگزینی برد های
از رده خارجه یا برد هایی که فایلهای آنها از بین رفته با برد های جدید و ارتقا
یافته
دلایل استفاده از مهندسی معکوس
نوسازی نرمافزار: مهندسی معکوس به صورت کلی
برای درک وضعیت موجود برنامه مورد نیاز است. این عمل به منظور برآورد درست کوششهای
مورد نیاز برای مهاجرت اطلاعات سیستم به یک وضعیت دلخواه است.
نگهداری
نرمافزار: مهندسی معکوس نرمافزار میتواند مستندات لازم را برای درک وضعیت فعلی
نرمافزار سیستم فراهم کند.
آنالیز محصول: برای بررسی اینکه یک محصول چه گونه
کار میکند، از چه اجزایی تشکیل شده، برآورد هزینهها و مشخص کردن حقوق مالکیت
بالقوه.
بازبینی امنیتی
بدست آوردن اطلاعات حساس به کمک دیس اسمبل و تجزیه و
تحلیل طراحی اجزای سیستم
حذف محافظ کپی، دور زدن محدودیتهای دسترسی.
ایجاد
کپیهای بدون مجوز / تایید نشده.
اهداف علمی / آموزشی.
مهندسی معکوس در حوزه
نرمافزار
در عمل دو نوع عمده از مهندسی معکوس وجود دارد. در حالت اول، سورس کد
برای برنامه وجود دارد، اما سطوح بالاتری از جنبههای این برنامه، شاید مستندات
ضعیف یا مستنداتی که دیگر اعتبار ندارد، مشاهده میشوند. در حالت دوم، سورس کدی
برای برنامه موجود نیست و هرگونه تلاشی در جهت استخراج یک سورس کد ممکن برای
نرمافزار به عنوان مهندسی معکوس در نظر گرفته شده است. بسیاری از مردم با استفاده
دوم از این اصطلاح آشنا هستند. مهندسی معکوس نرمافزار برای جلوگیری از نقض کپی
رایت میتواند از تکنیک طراحی اتاق پاک استفاده کند.
مهندسی معکوس کد (سورس کد)
این فرایند برخی مواقع مهندسی معکوس کد یا(Reverse
Code Engineering) نامیده میشود. به عنوان یک مثال، دیکامپایل کردن باینری برای
پلتفرم جاوا از طریق برنامه JAD میتواند انجام شود. یک مثال از گروهی که مهندسی
معکوس نرمافزار را برای لذت بردن (و انتشار کدهای ثبت) انجام میدهند CORE هست که
مخفف «چالش مهندسی معکوس» است. مهندسی معکوس نرمافزار در قانون کپی رایت ایالات
متحده در صورت استفاده منصفانه محافظت میشود. برنامه Samba که به سیستمهای غیر
مایکروسافت ویندوز اجازه میدهد به اشتراک فایل با سیستمهای ویندوزی بپردازند یک
مثال کلاسیک از مهندسی معکوس نرمافزار هست. به این خاطر پروژه Samba باید به
مهندسی معکوس اطلاعات منتشر نشده در مورد چگونگی به اشتراک گذاری فایل ویندوز
میپرداخت، تا که کامپیوترهای غیر ویندوزی بتوانند آنرا شبیهسازی کنند. پروژه Wine
همین کار را برای API ویندوز و OpenOffice.org این کار را برای فرمت فایلهای
مایکروسافت آفیس انجام میدهد.
تکنیکهای مهندسی معکوس نرمافزار
مهندسی معکوس نرمافزار از روشهای
گوناگونی میتواند بدست آید. سه گروه اصلی مهندسی معکوس نرمافزار عبارتند از:
۱-تجزیه و تحلیل از طریق مشاهده تبادل اطلاعات - شایع ترین در مهندسی معکوس پروتکل- که شامل استفاده از آنالیزورهای درگاه باس و اطلاعات انتقالی شبکه است. الگوی رفتاری درگاه باس یا شبکه بعدا میتواند مورد تجزیه و تحلیل قرار گیرد. به منظور تولید یک اجرای مستقل که آن رفتار را تقلید میکند. این امر به ویژه برای مهندسی معکوس درایورهای دستگاه مفید است. برخی مواقع مهندسی معکوس بر روی سیستمهای بسته به وسیله ابزارهایی که عمدا توسط تولید کننده معرفی شده بسیار کمک کننده است. در مایکروسافت ویندوز دیباگر سطح پایین مانند SoftICE طرفداران بسیاری دارند.
۲-تولید فایل اسمبل برنامه به وسیله دیس اسمبلر: به معنی خواندن کدهای خام زبان ماشین و درک این اطلاعات با اصطلاحات خواص دیس اسمبلر. این عمل بر روی تمام برنامههای کامپیوتری میتواند اعمال شود اما درک آن ممکن است مدتی زمان بر باشد، مخصوصا برای کسانی که با زبان ماشین آشنا نیستند.
۳-دستیابی به سورس کد با استفاده از یک دیکامپایل کننده، فرایندی که تلاش میکند سورس کد را در بعضی زبانهای سطح بالا برای برنامهای که فقط در حالت بایت کد یا کدهای ماشین است فراهم کند.