Tersine Mühendislik Nedir?
Tersine mühendislik, mevcut bir sistemin, cihazın ya da nesnenin üretim aşamalarını ve işleyişini anlamak amacıyla ürünü adım adım ya da tabaka tabaka inceleme yöntemidir. Bu kavramın “tersinemühendislik” olarak adlandırılmasının temel nedeni, tasarım sürecini adeta geriye doğru işletme fikrine dayanmasıdır. Tersine mühendislik süreci, yazılımlardan makinelerine, askeri teknolojilerden mimari yapılarına, hatta biyolojik hareketlere kadar birçok alanda uygulanabilir.
Yazılım İle Tersine Mühendislik
Yazılım ile tersine mühendislik, bir programın makine kodunun yani mantık işlemcisine gönderilen 0’ların ve 1’lerin dizesi, program dili ifadeleri kullanılarak, yazıldığı kaynak koduna geri döndürülmesini içerir. Programın kaynak kodunu, kaynak kodu kaybolduğundan, programın belirli işlemleri nasıl yaptığını incelemek, bir programın performansını artırmak, bir hatayı düzeltmek (programdaki bir hatayı düzeltmek) için tersine çevirmek için yazılım ile tersine mühendislik yapılmıştır.
Kaynak kodu mevcut değildir. Virüs gibi bir programdaki kötü amaçlı içeriği tanımlamak veya bir mikroişlemci ile birlikte kullanılmak üzere yazılmış bir programı diğerinde kullanmak üzere uyarlamak için kullanılamaz. Programları kopyalamak veya çoğaltmak amacıyla yapılan ters mühendislik, telif hakkı ihlali oluşturabilir. Bazı durumlarda, yazılımın lisanslı kullanımı özellikle tersine mühendisliği yasaklar.
Yazılım üzerinde ters mühendislik yapan biri, bir programı sökmek için birkaç araç kullanabilir. Bir araç, bir programın ikili sayılarını onaltılık biçimde (ikili bir formattan okunması daha kolay) basan veya görüntüleyen onaltılık bir damperdir. İşlemci talimatlarını ve komut uzunluklarını temsil eden bit kalıplarını bilerek tersine mühendis, nasıl çalıştıklarını görmek için programın belirli bölümlerini tanımlayabilir.
Yaygın olarak kullanılan diğer bir araç da sökücüdür. Disassembler ikili kodu okur ve çalıştırılabilir her talimatı metin biçiminde görüntüler. Bir sökücü, çalıştırılabilir bir komut ile program tarafından kullanılan veriler arasındaki farkı söyleyemez. Bu nedenle, sökücünün bir programın veri bölümlerini sökmekten kaçınmasını sağlayan bir hata ayıklayıcı kullanılır. Bu araçlar, bir kraker tarafından kodu değiştirmek ve bir bilgisayar sistemine giriş kazanmak veya başka zararlar vermek için kullanılabilir.
Donanım ile Tersine Mühendislik
Donanım tersine mühendislik, nasıl çalıştığını görmek için bir cihazı parçalara ayırmayı gerektirir. Örneğin bir makine üreticisi rakip firmadan aynı ürünü satın alabilir, parçalara ayırarak aynı ürünün üretimini rakip firmanın makinesine bakarak üretebilir. Ancak, bu süreç birçok ülkede yasa dışıdır. Genel olarak, donanım tersine mühendislik çok fazla uzmanlık gerektirir ve oldukça pahalıdır.
Başka bir tersine mühendislik türü, parçanın yeniden üretimi için bir plan mevcut olmadığında üretilen parçaların 3 boyutlu görüntülerini üretmeyi içerir. Bir parçayı tersine çevirmek için, parça bir koordinat ölçme makinesi (CMM) ile ölçülür.
Ölçüldüğü gibi, 3 boyutlu bir tel çerçeve görüntüsü üretilir ve ekranda görüntülenir. Ölçüm tamamlandıktan sonra, tel çerçeve görüntüsü boyutlandırılır. Herhangi bir parça bu yöntemler kullanılarak tersine çevrilebilir. İleri mühendislik terimi bazen tersine mühendislikten farklı olarak kullanılır.