Tersine mühendislik nedir?

Ekim 2014 | Ahmet Özgenel, Web Developer
2*3 kaç eder? Elbette 6
Peki ya 3*2?

Tersine mühendislik (Reverse Engineering, RE)
bir aygıtın, objenin veya sistemin; yapısının, işlevinin veya çalışmasının, çıkarımcı bir akıl yürütme analiziyle keşfedilmesi işlemidir. Makine veya mekanik alet, elektronik komponent, yazılım programı gibi) parçalarına ayrılması ve çalışma prensiplerinin detaylı şekilde analizini içerir.

Amerika Birleşik Devletleri dahil diğer birçok ülkede bir sanat eseri veya bir süreç meslek sırlarıyla korunsa dahi, bunların tersine mühendisliği yasal olarak elde edildiği takdirde yapılabilir. Patentler, diğer taraftan, Buluşların kamusal ifşasını gerektirir, ve böylece patentli parçalar üzerinde araştırma yapmak için tersine mühendisliğe ihtiyaç duyulmaz. Tersine mühendislikle uğraşanların bir genel motivasyonu rakiplerin ürünlerinin patent koruması veya telif hakkı koruması taşıyıp taşımadığıdır.

Tersine mühendislik, sıklıkla, diğer milletlerin teknolojilerini, aletlerini, bilgilerini veya sahada sıradan askerler tarafından toplanan veya haberalma operasyonlarıyla toplanan bilgi parçalarını kopyalamak için, ordu tarafından sık sık kullanılır. İkinci Dünya Savaşı’nda ve Soğuk Savaş’ta sıkça kullanılmıştır. II. Dünya Savaşı’ndan çok bilinen örnekler şunlardır:
  • Jerry bidonu: İngiliz ve Amerikan kuvvetleri Almanların Jerry can denen ve mükemmel bir tasarıma sahip olan benzin bidonlarına sahip olduklarını fark ettiler. Bu bidonların kopyaları üzerine ters mühendislik uyguladılar. Bu bidonlar popüler olarak “Jerry can” olarak bilinirler.
  • Tupolev Tu-4: Japonya görevi sırasında birçok B-29 Superfortress bombardıman uçağı Sovyetler Birliği’ne (SSCB) inmek zorundaydı. Böyle stratejik bir bombardıman uçağına sahip olmayan Sovyetler B-29’u kopyalamaya karar verdiler. Birkaç yıl içinde neredeyse mükemmel bir kopyası olan Tu-4'ü geliştirdiler.
  • V2 Roketi: Sovyet ve yakalanmış Alman mühendisler, daha sonra R-7 Semyorka’nın öncüsü ve uzay programının başlangıcı olan, kendi klon roketleri R-1 i yapmak için ele geçirilen dökümanlardan yola çıkarak, yeni teknik dökümanlar ve planlar oluşturdular.

YAZILIMDA TERSİNE MÜHENDİSLİK

Özellikle günümüzde yazılım sektöründe bu yöntem kullanılarak bir çok kopyalama işlemi yapılmaktadır. Bu örnekleri sadece kopyalama gibi düşünmemek gerekir. Örneğin java yazılım dilinde bir programı çok beğendiyseniz kaynak kodlarına inerek tersine mühendislik yöntemiyle bu programın nasıl yazıldığını dahi öğrenebilirsiniz.

Yazılımda tersine mühendislik terimi sadece kaynak kodlar ele geçtiğinde bu kodların ne işe yaradığını öğrenmek için yapılan işlemlere denmez. Aynı zamanda kaynak kodlarına ulaşılamayan fakat bu yolda izlenen yöntemlerde ters mühendislik olarak adlandırılır. Birçok yazılımcı 2. Yönteme aşina olsa da asıl tersine mühendislik görevini bilmediğiniz kod bloklarını silerek onların ne işe yaradığını öğrenmek ve bu blokların hepsini birleştirerek sistemi çözmektir. Eyfel kulesini tasarlayanlar en alttan başlayarak üstüne üstüne koya koya gitmişler öyle değil mi ? Evet siz de bunu en üstten başlayarak en alta doğru gidiyorsunuz işte bu da tersine mühendisliğe örnektir.