Tersine mühendislik basitçe derlenmiş bir binary veya bir exe uzantılıi yani çalıştırılabilir bir dosyanın nasıl çalıştığını anlamaya yönelik uygulanan sürece denir.
Tersine mühendislik bir sistemin daha yüksek bir soyutlama seviyesinde temsilini yaratmak için analiz edilmesi işlemidir.
Programcı programı genellikle yüksek seviyeli dillerde (c ,c++, visual basic v.b.) yazmaktadır. Bu yazılan kodlar insanlar tarafından anlaşılmaktadır fakat kod derlendikten sonra makinanın anlayabileceği dile çevrilir çevirildikten sonra ise insanlar tarafından çok zor anlaşılır duruma gelir.
Tersine Mühendislikle Neler Yapılabilir
– Açık kaynak kodlu olmayan yazılımın kaynak kodlarını ortaya çıkarma
– Malware analiz edebilme olanağı
– Programların lisans korumasını atlatma (Cracking)
– Yazılımlarda zafiyet aramak (Yazılımların sağlamlığını kontrol etme)
– Yazılımlara ek özelikler getirme (patching)
– Oyun hileleri
Reversing (Analiz) çeşitleri:
· Statik analiz
· Dinamik analiz
Statik Analiz: statik program analizi execute etmeden yani programı çalıştırmadan yapılan yazılım analizidir.
Dinamik Analiz: dinamik program analizi ise o an sanal veya gerçek bir process üzerinde execute olan programa yapılan analizidir.
Tersine Mühendislikte en çok kullanılan programlar:
· Disassemblerlar
· Debuggerlar
· PE Editörleri
· Hex-Resource Editörler
· Sistem izleme araçları
Disassembler: bu yazılımlar, programı disassembly işleminden geçirerek programın assembly kodu şeklindeki halini gösterir. Bu olay bize programda çağrılan fonksiyonları, string değerleri vs. görüp incelememize olanak sağlar.
En yaygın olarak kullanılan disassembler IDA dır.
Debugger: debuggerlar ile programın çalışmasını satır satır izleyebiliriz. Disassembler gibi çalışırlar fakat ek olarak işlemleri izleme imkanımız olur.
Çoğu zaman cracking, malware analizi, exploit geliştirme aşamalarında kullanılırlar.
Bir debugger ile programın çalışması esnasında değişiklik yapılabilir.
En yaygın olarak kullanılan debuggerlar:
En yaygın olarak kullanılan debuggerlar:
– ImmunitlyDebugger
– OllyDbg
– WinDbg
Hex- Resource Editörleri:
Diğerlerine göre çok yaygın olarak kullanılmaz. Basit string düzenlemeleri. Bayt değiştirmeleri. Hızlı kod analizi yapabilir.
Birçok hex-resource editör mevcut;
– HxD
– Hes Workshop
– ResEdit