Peki yazılımda tersine mühendislik nedir? Yazılımda tersine mühendislik, bir programın kaynak kodunu geri almak, programın belirli işlemleri nasıl gerçekleştirdiğini incelemek, bir programın performansını geliştirmek, bir hatayı düzeltmek amacı ile bir programın kaynak kodunu almak ve analiz etmek için yapılır. 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ı başka bir donanımla kullanmak üzere uyarlamak için kaynak kodu tersine mühendislik ile en küçük parçalarına bölmek gerekir. Ama dikkat edelim yapacağımız bu işlemler her zaman yasal olmayabilir. Programların kopyalanması veya çoğaltılması amacıyla tersine mühendislik yapmak, telif hakkı ihlali teşkil edebilir. Bazı durumlarda, lisanslı yazılım kullanımı özellikle tersine mühendislik yapılmasını yasaklar.
Yazılımın yanı sıra birde donanımda tersine mühendislik vardır. Donanımda tersine mühendislik, nasıl çalıştığını görmek için bir aygıtı ayırmayı gerektirir. Örneğin, bir işlemci üreticisi bir rakibin işlemcisinin nasıl çalıştığını görmek isterse, bir rakibin işlemcisini satın alabilir, parçalarına ayırabilir ve daha sonra buna benzer bir işlemci yapabilir. Ancak, bu süreç birçok ülkede yasa dışıdır. Genel olarak, donanımda tersine mühendislik büyük bir uzmanlık gerektirir ve oldukça pahalıdır.
Başka bir tersine mühendislik, parçanın yeniden üretilmesi için bir planın mevcut olmaması durumunda, imal edilen parçaların 3 boyutlu görüntülerinin üretilmesidir. Bir parçayı tersine çevirmek için, parça bir koordinat ölçüm makinesi (CMM) ile ölçülür. Ölçüldüğü gibi, bir 3D bir kalıp görüntüsü oluşturulur ve bir monitörde görüntülenir. Ölçüm tamamlandıktan sonra 3D kalıp görüntüsü boyutlandırılmıştır. Bu yöntemler kullanılarak herhangi bir parçada ters mühendislik yapılabilir.
Günlük hayatımızdan tersine mühendisliğe örnek verecek olur isek:
1-) Kırılan plastik bir parçanın 3D taraması yapıldıktan sonra üç boyutlu yazıcı ile yeniden basılması
2-) Uyku dişliği olarak da bilinen, sert plastikten yapılan koruma plağının dişlerin kalıbı alınarak imal edilmesi
3-) Aktif bir şekilde çalışan bir uygulamanın güncelleme amacı ile demonte ederek (Parçalanıp yeniden birleştirilebilir bir hale getirmek) güncellenecek bölüme eklemeler yapmak.
4-) Rakip firmaların ürettikleri araç motorlarını alıp parçalayarak işleyişini ve mekanizmasını anlamak ve sonrasında kendi teknolojin ile birleştirerek yeni ve gelişmiş bir motor elde etmek. (UYARI: Bu yöntem bir çok ülkede yasa dışıdır.)