Sistem Analizi ve Tasarımı

Evrik Mühendislik (Reverse Engineering) Nedir?

Evrik mühendislik(Tersine Mühendislik) nedir?

Tersine mühendislik, nasıl çalıştığını görmek için bir nesneyi sökme eylemidir. Öncelikle bir şeyin nasıl çalıştığı hakkında bilgi edinmek ve analiz etmek için yapılır, ancak genellikle nesneyi çoğaltmak veya geliştirmek için kullanılır. Yazılım, fiziksel makineler, askeri teknoloji ve hatta genlerin nasıl çalıştığıyla ilgili biyolojik işlevler de dahil olmak üzere birçok şey tersine mühendislik yapılabilir.

Bilgisayar donanımı ve yazılımına uygulanan tersine mühendislik uygulaması eski endüstrilerden alınmıştır. Yazılım tersine mühendislik, bir programın makine koduna odaklanır – mantık işlemcisine gönderilen 0’lar ve 1’ler dizisi. Program dili ifadeleri, makine kodunu orijinal kaynak koduna geri döndürmek 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. Bilginin nasıl kullanıldığı veya neyle ilgili olduğu önemli değil, tersine mühendislik, bu bilgiyi bitmiş bir nesneden elde etme sürecidir.

Tersine mühendisliğin amacı nedir?

Tersine mühendisliğin amacı, bir nesnenin veya sistemin nasıl çalıştığını bulmaktır. Bunu yapmak için çeşitli nedenler var. Tersine mühendislik, bir şeyin nasıl çalıştığını öğrenmek ve nesneyi yeniden oluşturmak veya eklenen geliştirmelerle benzer bir nesne oluşturmak için kullanılabilir.

Çoğu zaman tersine mühendislik yazılımı veya donanımının amacı, benzer bir ürünü daha ucuza veya orijinal ürün artık mevcut olmadığı için 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.

Müzisyenlerin müzik bestelemesine, kaydetmesine, düzenlemesine, düzenlemesine ve miksajına izin veren Apple’ın Logic Pro yazılımı buna iyi bir örnektir. Logic Pro yalnızca Mac cihazları için mevcuttur ve nispeten pahalıdır. Programın birkaç tescilli dijital enstrümanı vardır. Biraz araştırmayla, bir programcı bu dijital enstrümanlarda tersine mühendislik yapabilir, nasıl çalıştıklarını anlayabilir ve onları Logic Pro’da kullanım için özelleştirebilir veya Windows ile uyumlu diğer müzik yazılımlarıyla birlikte çalışabilir hale getirebilir.

Tersine mühendislik süreci nasıl işliyor?

Tersine mühendislik işlemi, üzerinde gerçekleştirildiği nesneye özgüdür. Bununla birlikte, bağlam ne olursa olsun, tüm tersine mühendislik çabalarında ortak olan üç genel adım vardır. Onlar içerir:

  • Bilgi çıkarma: 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. Programı bileşenlerine ayırmak için bir sökücü gibi araçların kullanımını da içerebilir.
  • 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 nesnenin 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.

Yazılım tersine mühendislik, çeşitli araçların kullanımını içerir. Araçlardan biri, bir programın ikili sayılarını onaltılık olarak yazdıran veya görüntüleyen onaltılık bir damperdir. Tersine mühendis, işlemci talimatlarını temsil eden bit kalıplarının yanı sıra talimat uzunluklarını bilerek, nasıl çalıştıklarını görmek için bir programın bölümlerini tanımlayabilir.

Başka bir yazılım tersine mühendislik aracı sökücüdür. İkili kodu okur ve yürütülebilir her talimatı metin olarak görüntüler. Bir ayrıştırıcı, yürütülebilir bir komut ile programın kullandığı veriler arasındaki farkı söyleyemez, bu nedenle, ayrıştırıcının bir programın veri bölümlerini çözmesini önlemek için bir hata ayıklayıcı kullanılır. Bu araçlar bir bilgisayar korsanı tarafından kullanılabilir ve bir bilgisayar sistemine giriş sağlayabilir veya başka zararlara neden olabilir.

Bilgisayar destekli tasarım (CAD), orijinal plan artık mevcut olmadığında üretilmiş bir parçayı yeniden oluşturmak için kullanılan bir tersine mühendislik tekniğidir. Parçanın yeniden üretilebilmesi için 3D görüntülerinin üretilmesini içerir. Bir koordinat ölçüm makinesi parçayı ölçer ve ölçüldüğünde, CAD yazılımı kullanılarak bir 3D tel çerçeve görüntüsü oluşturulur ve bir monitörde görüntülenir. Ölçüm tamamlandıktan sonra tel çerçeve görüntüsü boyutlandırılır. Bu yöntemler kullanılarak herhangi bir parça tersine mühendislik yapılabilir.

Tersine Mühendislik Örnekleri (Evrik Mühendislik Örnekleri)

Tersine mühendislik, uygulandığı şeye ve teknolojiyi tersine mühendislik yapma amacına bağlı olarak değişir. Yaygın örnekler şunları içerir:

Yazılım

Yazılımı sökmek için tersine mühendisliğin kullanıldığı birkaç örnek vardır. Yaygın bir örnek, bir mikroişlemciyle kullanılmak üzere yazılmış bir programı diğerine uyarlamaktır. Diğer örnekler arasında kayıp kaynak kodunun yeniden yapılandırılması, bir programın belirli işlemleri nasıl gerçekleştirdiğinin incelenmesi, performansın iyileştirilmesi ve hataların düzeltilmesi veya kaynak kodu mevcut olmadığında hataların düzeltilmesi yer alı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. Bunu yapmak için Phoenix, IBM sürümünü, takip ettiği adımları kaydederek ve özel koda atıfta bulunmadan 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. ABD Savunma İstihbarat Teşkilatı, kendi saldırgan siber silahlarını oluşturmak için düşman kötü amaçlı yazılımlarını tersine mühendislik yapmak için bu teknikleri kullanmayı amaçladığını söyledi. Örneğin, Ulusal Güvenlik Ajansı’nın WannaCry kötü amaçlı yazılımını tersine mühendislik yapmak için kullanılan Ghidra yazılımı gibi kötü amaçlı yazılımların tersine mühendisliğine yardımcı olacak araçlar mevcuttur.

Bilgisayar parçaları

Bir işlemci üreticisi rakibin işlemcisinin nasıl çalıştığını görmek isterse, rakibin işlemcisini satın alabilir, tersine mühendislik yapabilir ve öğrendiklerini kendi işlemcisini yapmak için kullanabilir. Bu süreç birçok ülkede yasa dışıdır ve çok fazla uzmanlık gerektirir ve pahalıdır. Tersine mühendislik, genellikle eski ekipman için orijinal parçalar artık mevcut olmadığında yedek parçalar oluşturmak için kullanılır. Güvenliği artırmak için bilgisayar parçalarının tersine mühendislik de yapılır. Örneğin, Google’ın Sıfır Projesi, tersine mühendislik kullanarak mikroişlemcilerdeki güvenlik açıklarını belirledi.

Ağ güvenliği değerlendirmeleri

Ağ güvenliği değerlendirmeleri yapan şirketler, araçlarından biri olarak tersine mühendislik de kullanıyor. Güvenlik gruplarını iki takıma ayırırlar. Bir takım saldırıları simüle eder ve diğer takım ağı izler ve diğer takımın saldırılarını tersine mühendislik yapar. Bu sahte saldırılardan elde edilen bilgiler şirket ağını güçlendirmek için kullanılır.

Tersine mühendislikle ilgili yasal ve etik zorluklar

Patentli bir üründe tersine mühendislik yapmak, genellikle Ticari Sırları Savunma Yasası uyarınca yasaldır, ancak yasallığının sorgulanabilir olduğu durumlar da vardır. 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.

Parolalar, ş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. TPM’yi atlatmak yasal sorunları gündeme getirebilir.

Tersine mühendislikle ilgili çeşitli yasalar aşağıdakileri içerir:

  • Patent kanunu;
  • 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ı; ve
  • söz konusu ürüne özel herhangi bir sözleşme kanunu.

Bir tersine mühendislik sorunu mahkemeye taşındığında, nesnenin, sistemin veya fikri mülkiyetin asıl sahibi, nesneyi kendisinin yarattığını veya patent veya telif hakkına sahip olduğunu kanıtlamalıdır. Tersine mühendislik yapan kişi veya kuruluş, bilgileri yasal yollarla elde ettiğini kanıtlamak zorundadır.

Patent veya telif hakkı ihlalinden kaçınmak için kasıtlı olarak tersine mühendislik yapmanın ve yeni bir yazılım ürünü geliştirmenin bir yolu, orijinalin doğrudan kopyalanmamasını sağlayarak iki ayrı programcı grubunun proje üzerinde çalıştığı bir temiz oda veya etik duvar tekniği kullanmaktır. .

Tersine mühendislik, karmaşık bir etik ve hukuk alanıdır. Bilgi teknolojisinin günlük yaşamın birçok sektöründe yaygınlaşması, onu daha da karmaşık hale getiriyor.