Tersine Mühendislik (Reverse Engineering)
Tersine mühendislik, bir makinayı, bir yazılımı, askeri bir teknolojiyi nasıl çalıştığını görmek için sökme eylemidir. Yani tersine mühendislik, bilgiyi bitmiş bir nesneden elde etme sürecidir. Nasıl çalıştığını tersinden anlamaya çalışmak, bilgi edinmek ve analiz etmek için yapılır.
İçindekiler
Tersine Mühendisliğin Amacı Nedir?
Genellikle nesneyi çoğaltmak (kopyalamak) veya geliştirmek için kullanılır. Teknolojiye bağlı olarak, tersine mühendislik sırasında kazanılan bilgi, eski nesneleri yeniden kullanmak, güvenlik analizi yapmak, rekabet avantajı elde etmek veya basitçe birisine bir şeyin nasıl çalıştığını öğretmek için kullanılabilir.
Yazılımı veya donanımında tersine mühendisliğin amacı, benzer bir ürünü daha ucuza elde etmek veya orijinal ürün artık mevcut olmadığında, oluşturmanın bir yolunu bulmaktır. Bilgi teknolojisindeki tersine mühendislik, uyumluluk sorunlarını gidermek ve donanım veya yazılımın orijinal olarak uyumlu olmadığı diğer donanım, yazılım veya işletim sistemleriyle çalışmasını sağlamak için de kullanılır.
Yazılımda tersine mühendislik, programın makina koduna odaklanır.
Tersine Mühendislik Süreci Nasıl İşliyor?
Tersine mühendislik işlemi, üzerinde gerçekleştirildiği nesneye özgüdür ama genel olarak ortak olan üç genel adım vardır.
- Bilgiyi Elde Etmek : Tersine mühendislik yapılan nesne incelenir, tasarımı hakkında bilgi çıkarılır ve bu bilgiler incelenerek parçaların nasıl bir araya geldiği belirlenir. Yazılım tersine mühendislikte bu, çalışma için kaynak kodu ve ilgili tasarım belgelerinin toplanmasını gerektirebilir.
- Modelleme : Toplanan bilgiler, modelin her bir parçasının genel yapıdaki işlevini açıkladığı kavramsal bir modelde özetlenir. Bu adımın amacı, orijinale özgü bilgileri almak ve onu yeni nesnelerin veya sistemlerin tasarımına rehberlik etmek için kullanılabilecek genel bir modele soyutlamaktır. Yazılım tersine mühendislikte bu, bir veri akış şeması veya bir yapı şeması şeklini alabilir.
- Gözden geçirmek : Bu, orijinal nesne veya sistemin gerçekçi bir soyutlaması olduğundan emin olmak için modeli gözden geçirmeyi ve çeşitli senaryolarda test etmeyi içerir. Yazılım mühendisliğinde bu, yazılım testi şeklini alabilir. Test edildikten sonra model, orijinal nesneyi yeniden yapılandırmak için uygulanabilir.
Tersine mühendislikle ilgili yasal sorunlar
Patentli bir üründe tersine mühendislik yapmak, sorunlu olabilir. Patent sahipleri, buluşlarını kopyalayan kişilere karşı yasal rücu hakkına sahiptir. Bir programı kopyalamak veya çoğaltmak amacıyla kullanılan tersine mühendislik yazılımı, telif hakkı yasası ihlali oluşturabilir. Bazı yazılım lisansları özellikle tersine mühendisliği yasaklar.
- Diğer sözleşme anlaşmaları, hizmet şartları veya kullanım bildirimleri ve ifşa etmeme ve diğer geliştirici anlaşmaları türleri dahil olmak üzere koda erişim elde etmek için tersine mühendislik kullanımını da sınırlayabilir. Şifreler, şifreleme ve erişim kontrol cihazları gibi teknolojik koruma önlemleri (TPM), genellikle yazılıma ve diğer dijital telif hakkıyla korunan içeriğe erişimi kontrol etmek için kullanılır.
Tersine mühendislikle ilgili çeşitli yasalar aşağıdakileri içerir:
- Patent yasası;
- Telif hakkı ve adil kullanım yasası;
- Ticari sır yasası;
- Dijital Binyıl Telif Hakkı Yasası’nın engellemeye karşı hükümleri;
- Elektronik İletişim Gizlilik Yasası;
Yazılımda Tersine Mühendislik Örneği
Yaygın bir örnek, bir mikroişlemciyle kullanılmak üzere yazılmış bir programı diğerine uyarlamaktır.
Bir örnek, IBM’in tescilli sürümüyle uyumlu olan temel giriş/çıkış sistemi ( BIOS ) yazılımını oluşturan bir ABD yazılım şirketi olan Phoenix’tir. IBM sürümünü, takip ettiği adımları kaydederek ve özel koda başvurmadan onları telif hakkı ücretlerinden koruyacak şekilde tersine mühendislik yaptı.
Kötü amaçlı yazılım, yazılım tersine mühendisliğinin kullanıldığı başka bir alandır. Tehdit aktörleri , kötü niyetli kodlarının keşfedilmesini veya anlaşılmasını önlemek için genellikle yazılım kodu gizleme kullanır. Virüs bulaşmış yazılım veya sistemlerin sahipleri, virüs gibi kötü amaçlı içeriği tanımlamak için tersine mühendislik kullanabilir