İçeriğe atla

Tersine mühendislik

Tersine mühendisliğin adımları
1. Orijinal ürünün 3B taranması
2. Veri işleme
3. Mühendislik
4. Prototip üretme
5. Reprodüksiyon (yeniden üretme, çoğaltma)

Tersine mühendislik, 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 dâhil 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ühendisliğin türleri ve uygulamaları

Bilgisayar destekli tasarım (CAD) daha popüler hâle geldikçe, tersine mühendislik, 3D bilgisayar destekli tasarım (CAD), bilgisayar destekli üretim (CAM), bilgisayar destekli mühendislik (CAE) ve diğer yazılımlarda kullanılmak üzere, var olan parçaların üç boyutlu sanal modellerinin yaratılması için kullanılabilir bir metot hâline gelmiştir. Tersine mühendislik işlemi bir objenin ölçümünü ve ardından üç boyutlu model olarak oluşturulmasını içerir. Fiziksel objenin boyutları, koordinat ölçme makinesi (Coordinat measuring machine, CMM), üç boyutlu üçgenli lazer tarayıcılar, üç boyutlu yapısal ışık sayısallaştırıcılı tarayıcı veya bilgisayarlı tomografi gibi üç boyutlu tarama teknolojileri kullanılarak ölçülebilir. Genellikle bir nokta bulutu olarak temsil edilen ölçülmüş veri kendi başına, topolojik bilgi eksikliği taşır ve bu yüzden sıklıkla, üçgen kaplı ağ veya bir CAD modeli gibi daha kullanışlı bir formata dönüştürülür. Imageware Rapidform 11 Ekim 2016 tarihinde Wayback Machine sitesinde arşivlendi. veya Geomagic gibi uygulamalar nokta bulutlarını; 3D CAD, CAM, CAE gibi uygulamalarda veya görselleştirmede kullanılabilecek formatlara dönüştürü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 dokümanlardan yola çıkarak, yeni teknik dokümanlar ve planlar oluşturdular.

Birlikte işlerlik amacıyla (örneğin; belgesiz dosya formatlarını veya donanım ekipmanlarını desteklemek için) yapılmış tersine mühendislik donanım veya yazılımlarının, patent sahipleri çoğunlukla buna karşı çıksa da ve kendi ürünlerinin herhangi bir sebeple ters mühendisliğe uğramasını engellemeye çalışsa da, legal olduğuna inanılır.

Benzer şekilde, yazılım mühendisliğindeki kara kutu testinin ters mühendislikle pek çok ortak noktası vardır. Testi yapan çoğunlukla uygulama programlama arayüzüne sahiptir fakat amaçları, ürüne dışarıdan saldırarak hataları ve belgelendirilmemiş özellikleri bulmaktır.

Güvenlik denetimi, kopya korumanın kaldırılması (yazılımı kırma, krekleme), tüketici elektronik eşyalarında bulunan erişim önlemesini giderme, gömülü sistemlerin (motor yönetim sistemleri gibi) uyarlanmasında, ev içi tamirat ve uyarlamalarda, düşük maliyetli arızalı donanımlarda (bazı grafik kartları çipleri gibi) ek özelliklerin sağlanmasında veya sadece merak gidermek gibi amaçlar, tersine mühendisliğin diğer amaçlarındandır.

Tersine mühendislik aynı zamanda, işletmeler tarafından, kendi ürünlerinin üç boyutlu dijital kayıtlarını yapmak veya rakiplerinin ürünlerine değer biçmek için, var olan fiziksel geometriyi dijital ürün geliştirme ortamlarına aktarmak için kullanılır. Örneğin; bir ürünün nasıl çalıştığını, ne yaptığını, hangi bileşenlerden oluştuğunu analiz etmek için, maliyetini hesaplamak için ve potansiyel patent ihlalini saptamak için kullanılır.

Değer mühendisliği işletmeler tarafından kullanılan benzer bir aktivitedir. Yapı çözümlemeyi ve ürünü analiz etmeyi içerir ancak asıl amacı maliyeti azaltmak için fırsatlar bulmaktır.

Son olarak, tersine mühendislik sıklıkla özel bir aletin dokümanlarının kaybolması (veya hiç yazılmaması) ve onu inşa eden kişinin artık şirket için çalışmaması sebebiyle yapılır. Entegre devreler çoğunlukla modası geçmiş, tescilli sistemler üzerine dizayn edilir, bu şu anlama gelir; işlevselliği yeni teknoloji ile birleştirmenin tek yolu, var olan çip üzerinde tersine mühendislik yapmak ve onu yeniden dizayn etmektir.

Bir diğer önemli tersine mühendislik örneği ise string ifadeleri tersten yazdırmaktır.

Yazılımda tersine mühendislik

Yazılımlarda “tersine mühendislik” terimi insandan insana değişir; Chikofsky ve Cross çeşitli kullanımları araştıran ve bir taksonomi tanımlayan bir çalışma yapmışlardır. Bu çalışmaya göre;

Tersine mühendislik bir sistemin daha yüksek bir soyutlama seviyesinde temsilini yaratmak için analiz edilmesi işlemidir.[1]

Aynı zamanda geliştirme çevriminde geriye gitme olarak da görülebilir.[2] Bu modelde, uygulama fazının çıktısına (kaynak kodu formunda) tersine mühendislik uygulanarak, geleneksel şelale modelinde (waterfall model) geri dönerek, analiz fazına geri gidilmiştir.

Tersine mühendislik sadece, modifiye edilmediği (ki bu onu yeniden yapılandırma anlamındadır) düşüncesi altında, yazılım sistemini inceleme işlemidir.

Pratikte, tersine mühendisliğin iki çeşidi bulunur: Birinci durumda, yazılım için kaynak kodu zaten vardır fakat programda kötü şekilde yazılmış veya yazılıp da artık geçerli olmayan yüksek seviye görünüşlerinin bulunmasıdır. İkinci durumda yazılım için uygun kaynak kodu yoktur ve yazılım için kaynak kodunu bulmak için yapılan bütün teşebbüsler tersine mühendislik olarak adlandırılır. Birçok insan bu ikinci terime aşinadır.

Yazılımların tersine mühendisliği, telif hakları ihlallerinden sakınmak için temiz oda dizaynı tekniği denen (clean room design) teknikten faydalanır.

İkili Yazılım

Bu işlem bazen tersine kod mühendisliği (Reverse Code Engineering, RCE) olarak da adlandırılır.[3] Bir örnek olarak, java platformu için ikili kodların kaynak koduna dönüştürülmesi JAD (Joint Application Development) kullanılarak yapılabilir. Tersine mühendisliğin ünlü bir örneği yıllardır bilgisayar donanım platformuna hâkim olan IBM PC compatible endüstrisindeki PC BIOS'un ilk IBM kaynaklı olmayan uygulamasıdır.

Amerika’da Digital Millennium Copyright Act adlı telif hakları yasası, önleme yasağından muaf olarak dosya formatlarının birlikte işlerliğini hedefleyen bazı tersine mühendislik uygulamalarını yasaklar fakat yargıçlar anahtar davalarda bu kanunu göz ardı eder, çünkü kullanım kısıtlamalarını önleyebilmekte fakat giriş kısıtlamalarını önleyememektedir.[4] Önlemedeki kısıtlamaların yanında, yazılımların tersine mühendisliği Amerika’da telif hakkı kanunundaki adil kullanım istisnasıyla korunmaktadır.[5]

Microsoft Windows sistemlerini çalıştıran sistemlere onu çalıştırmayan sistemlerle dosya paylaşımına izin veren Samba yazılımı tersine mühendislik yazılımının klasik bir örneğidir[], çünkü Samba projesi Windows'un dosya paylaşımıyla ilgili yayınlanmamış bilgiyi, Windows kullanmayan bilgisayarlar buna öykünebilsin diye, tersine mühendislikle bulmak zorundaydılar. Wine yazılımı projesi Windows API için aynı şeyi yapar ve OpenOffice.org bunu Microsoft Office dosya formatları için yapar. Reactos projesi ise ikili (ABI ve API) uyumluluğun NT dalının günümüz Windows işletim sistemine, yazılıma ve Windows için yazılmış sürücülerin bir temiz oda ters mühendislik uygulanmış GPL açık kaynak karşılığında çalıştırılmasına izin vererek sağlanması konusunda daha hırslıdır.

Kaynakça

  1. ^ Chikofsky, E.J. (Ocak 1990). "Reverse Engineering and Design Recovery: A Taxonomy in IEEE Software". IEEE Computer Society. ss. 13-17. 
  2. ^ Warden, R. (1992). Software Reuse and Reverse Engineering in Practice. Londra: Chapman & Hall. ss. 283-305. 
  3. ^ Chuvakin, Anton (Ocak 2004). Security Warrior (1. ed. bas.). O'Reilly. 22 Mayıs 2006 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Mayıs 2006. 
  4. ^ "US Code: Title 17,1201. Circumvention of copyright protection systems". 11 Şubat 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Mayıs 2006. 
  5. ^ See Pamela Samuelson and Suzanne Scotchmer, "The Law and Economics of Reverse Engineering", 111 Yale Law Journal 1575-1663 (May 2002).

Dış bağlantılar

İlgili Araştırma Makaleleri

Yazılım mühendisliği, yazılım geliştirme ile ilgilenen mühendislik dalıdır. Yazılım mühendisliği tanımı ilk olarak 1968 yılında Friedrich L. Bauer tarafından Almanya'da gerçekleştirilen NATO toplantısında gündeme gelmiştir. Ayrıca, matematikçi ve bilgisayar bilimcisi Margaret Hamilton "yazılım mühendisliği" terimini ortaya atan kişilerden biri olarak kabul edilmektedir. Yazılım mühendisliği tanım olarak "karmaşık yazılım sistemlerinin belirli bir hedefe ve sisteme dayalı olarak ve iş bölümü yapılarak, belirli prensipler, yöntemler ve araçlar kullanılarak geliştirilmesidir."

<span class="mw-page-title-main">İşletim sistemi</span> bilgisayar donanım kaynaklarını yöneten yazılım

İşletim sistemi ya da işletim dizgesi, bir bilgisayarın donanım kaynaklarını yöneten ve uygulama yazılımlarına hizmet sağlayan yazılımların bir bütünüdür. İşletim sistemleri, bilgisayarın donanımı ile uygulama yazılımları arasında bir köprü görevi görerek kullanıcıların sistemle etkileşim kurmasını sağlar. Öne çıkan örnekler arasında Microsoft Windows, macOS, GNU/Linux dağıtımları, Android ve iOS yer alır.

<span class="mw-page-title-main">Özgür yazılım</span> belirli kullanıcı kullanım, kopyalama, değiştirme, yeniden dağıtma özgürlüğünün (değiştirilmiş dahil) mevcut olduğu yazılım

Özgür yazılım, kullanıcısına yazılımı herhangi bir amaç için çalıştırma, inceleme, değiştirme ve dağıtma özgürlükleri tanıyan yazılım türüdür. Tersi, özel mülk yazılımdır.

<span class="mw-page-title-main">AutoCAD</span>

AutoCAD, Amerika Birleşik Devletleri merkezli Autodesk şirketinin 1980'lerin başından beri geliştirdiği bir bilgisayar destekli tasarım (CAD) yazılımı. Teknik resim çizmek için kullanılan diğer programlar gibi vektör tabanlıdır. Yani CAD programı; çözünürlükten bağımsız, 2-boyutlu ve 3-boyutlu geometrik nesnelerin oluşturulduğu bir veri kümesidir. Bu alandaki ilk vektörel çizim programlarından biridir.

Bilgisayar virüsü, kullanıcının izni ya da bilgisi dahilinde olmadan bilgisayarın çalışma şeklini değiştiren ve kendini diğer dosyaların içerisinde gizlemeye çalışan aslında bir tür bilgisayar programıdır.

<span class="mw-page-title-main">Yazılım</span> bilgisayarın somut olmayan çalıştırılabilir bileşeni

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

<span class="mw-page-title-main">XML</span> W3Cnin veri kodlamak için kullandığı işaretleme dili

XML, hem insanlar hem bilgi işlem sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmaya yarayan bir işaretleme dilidir. W3C tarafından tanımlanmış bir standarttır. Bu özelliği ile veri saklamanın yanında farklı sistemler arasında veri alışverişi yapmaya yarayan bir ara format görevi de görür. SGML'in basitleştirilmiş bir alt kümesidir.

<span class="mw-page-title-main">Makine mühendisliği</span> Mühendislik

Makine mühendisliği, mekanik sistemlerin tasarım, analiz, imalat ve bakımı için mühendislik fiziği ve mühendislik matematiği ilkelerini malzeme bilimi ile birleştiren bir mühendislik dalıdır.

HyperMesh, ABD merkezli Altair Mühendislik tarafından yayınlanan Hyperworks CAE paketindeki pre ve post işlemci yazılımıdır. Popüler sonlu eleman analiz yazılımlarını destekler.

<span class="mw-page-title-main">Korsan ürün</span> korsan yazılım

Warez ya da korsan ürün, telif yasaları çiğnenerek ticareti yapılan telif hakkı saklı materyaller. Bu tanım, genelde arkadaşlar arasındaki peer-to-peer dosya paylaşımları veya özel sunucular sayesinde büyük grupların dosya paylaşımlarından çok; telif hakkına sahip materyallerin, organize gruplar tarafından yasa dışı yayınlarını tanımlar. Telifli ürünlerin kopyalanmasını, çoğaltılmasını ve dağıtımını yapan kişilere korsan, yapılan işe korsancılık denmektedir.

Veri modelleme, bir işletmenin, kurumun hatırlamaya değer bulduğu verilerin şekil ve metin olarak ifade edilmesidir. Diğer bir deyişle bir işletmede teknik ve teknik olmayan herkesin bilişim ihtiyaçlarını ifade etmeye çalışırken birbirini anlamada kullanabileceği görsel bir iletişim dilidir. Yazılım geliştirmenin en önemli süreçlerinden biri olan veri modelleme bilişim ihtiyaçlarının keşfedilmesi ve herkesin anlayabileceği bir şekilde belgelenmesi işlemidir. Bilişim ihtiyaçları, veriler ve işletme ihtiyaçlarını destekleyen işletme kurallarıdır. Bir veri modeli herhangi bir işletmenin veya bir yazılımın karmaşık bilişim ihtiyaçlarının tümünü yeterince ifade edebilmek için kullanılabilecek bir araçtır. Bir bilişim sistemi başlıca 3 ihtiyacı karşılar; çeşitli verilerin saklanması, işlenmesi ve görüntülenmesi. Görüldüğü gibi bilişim sistemlerinin temelinde veri yer almaktadır. Veri Tabanı sistemleri ise en basit ifadeyle; verinin saklanması ve işlenmesi ile ilgili olarak geliştirilen genel amaçlı çeşitli yazılımlardır. Kısaca bilginin işlenmemiş hali olarak tanımlanan verinin modellenmesi herhangi bir bilişim sistemi geliştirmede neredeyse işin yarısını oluşturur. Verinin gerçek sahibi kullanıcıdır. Durum böyle olunca bilişim sistemlerinin geliştirilmesi sırasında kullanıcı temelli bir yaklaşım önem kazanmaktadır. Kullanıcı yönelimli bu yaklaşımın bazı yararları aşağıda sıralanmaktadır.

ArchiCAD, Graphisoft tarafından mimarlar için üretilen 3B CAD yazılımıdır.

Yorumlayıcı, yazılımı kısım kısım ele alarak doğrudan çalıştırır. Yorumlayıcılar standart bir çalıştırılabilir kod üretmezler. Yorumlama işlemi aşama aşama yapılmadığı için genellikle ilk hatanın bulunduğu yerde programın çalışması kesilir.

<span class="mw-page-title-main">Bilgisayar destekli tasarım</span>

Bilgisayar destekli grafik-tasarım, bir tasarımın oluşturulmasına, değiştirilmesine, analizine veya optimizasyonuna yardımcı olmak için kullanılan bir yazılım programı. CAD yazılımı, tasarımcının üretkenliğini ve tasarım kalitesini artırmak, dokümantasyon yoluyla iletişimi geliştirmek ve üretim için bir veritabanı oluşturmak için kullanılır. Üç boyutlu ve iki boyutlu tasarımlar için farklı programlar kullanılabilir. Siemens PLM NX, SOLIDWORKS, Autodesk Maya, AutoCAD, CATIA bu programlardan bazılarıdır.

Zararlı yazılım, kötü amaçlı yazılım veya malware, bilgisayar ve mobil cihazların işlevlerini bozmak, kritik bilgileri toplamak, özel bilgisayar sistemlerine erişim sağlamak ve istenmeyen reklamları göstermek amacı ile kullanılan yazılımdır. 1990 yılında Yisrael Radai tarafından malware ismi konulmadan önce, bu tür yazılımlara bilgisayar virüsü adı veriliyordu. Kötü amaçlı yazılımların ilk türü, parazit (asalak) yazılım parçalarını yürütülebilir, çalışan içeriklere eklemekle ilgileniyordu. Bu yazılım parçaları, mevcut çalışan uygulamayı, sistem üstünde çalışan programları ve hatta bilgisayar sistemlerinin ayağa kaldırılmasında önemli rol oynayan önyükleme (boot) kodlarını etkileyen makine kodları olabilir. Kötü amaçlı yazılımlar, kullanıcıların gereksinimlerine karşı bir davranış sergiler ve sistemin yetersizliğinden kaynaklanan bir sorun yüzünden istemsiz, rastgele bir şekilde verecek yazılım parçaları içermez.

Özel mülk yazılım ya da sahipli yazılım, yazılımın yaratıcısının, yayıncısının veya diğer hak sahibi ortaklarının fikrî mülkiyet hakkını ve telif hakkını kendi elinde tuttuğu bilgisayar yazılımıdır. Yazılımın alıcılarına, yazılımı özgürce paylaşma veya değiştirme hakkı vermez. Özel mülk yazılımlar, mülk sahipleri tarafından ücretli ya da ücretsiz olarak yayınlanabilir.

<span class="mw-page-title-main">Hesaplamalı geometri</span>

Hesaplamalı geometri, geometri açısından ifade edilebilen algoritmaların incelenmesine ayrılmış bilgisayar bilimlerinin bir dalıdır. Bazı çalışmalar tamamen geometrik problemlerden meydana gelirken bazıları ise hesaplamalı geometrik algoritmaların incelenmesi sonucunda meydana gelmektedir. Bunun gibi problemlerin hesaplama geometrisinin bir parçası olduğu düşünülmektedir. Modern hesaplamalı geometri son zamanlarda gelişme göstermesine karşın, tarihin antik dönemine kadar uzanan en eski bilgi işlem alanlarından biridir.

<span class="mw-page-title-main">Bilgisayar destekli modelleme</span> Application of computer

Bilgisayar Destekli Modelleme veya Bilgisayar Destekli İşleme olarak da bilinen Bilgisayar destekli imalat , iş parçalarının imalatında takım tezgahlarını ve ilgilileri kontrol etmek için yazılımın kullanılmasıdır. Bu, CAM için tek tanım değildir. Ancak en yaygın olanıdır. CAM, planlama, yönetim, nakliye ve depolama dahil olmak üzere bir üretim tesisinin tüm operasyonlarında yardımcı olmak için bir bilgisayarın kullanımına da atıfta bulunabilmektedir.

AOMedia Video 1 (AV1), başlangıçta İnternet üzerinden video iletimleri için tasarlanmış, açık, telif hakkından muaf bir video kodlama formatıdır. VP9'un halefi olarak, 2015 yılında kurulan ve yarı iletken firmaları, isteğe bağlı video sağlayıcıları, video içerik üreticileri, yazılım geliştirme şirketleri ve web tarayıcı satıcılarını içeren bir konsorsiyum olan Açık Medya İttifakı (AOMedia) tarafından geliştirilmiştir. AV1 bit akışı özelliği, bir referans video codec bileşeni içerir. 2018'de Facebook, gerçek dünya koşullarına yaklaşan testler yaptı ve AV1 referans kodlayıcı, libvpx-vp9, x264 Yüksek profil ve x264 Ana profile göre sırasıyla %34, %46,2 ve %50,3 daha yüksek veri sıkıştırması elde etti.

REMnux, kötü amaçlı yazılımların tersine mühendislik ve analizine yönelik bir Linux araç setidir. REMnux, kötücül yazılım analizi gerçekleştirenlere, topluluk tarafından geliştirilen ücretsiz araçlardan oluşan bir koleksiyon sağlar. Analistler, araçları bulmak, kurmak ve yapılandırmak zorunda kalmadan doğrudan kötü amaçlı yazılımları araştırmak için kullanabilirler. REMnux, 2010 yılından itibaren kurucusu ve birincil sorumlusu olan Lenny Zeltser, 2017'den itibaren dağıtımın mimari ve danışma olarak hizmet veren Erik Kristensen ile 2020'den itibaren dağıtım geliştirme sürecine katılan Corey Forman önderliğinde geliştirilmekte olup, ayrıca açık kaynak kültürü ile topluluğun birçok geliştiricisi ve destekçisi de bulunmaktadır.