Bir yazılımın içinde saklanan şifre, lisans anahtarı veya sabit veri gibi bilgileri tespit etmek için tersine mühendislik yöntemleri sıkça kullanılır. Genellikle bu süreç, hedef programın çalıştırılıp kullanıcıdan ne tür girdiler istediğinin gözlemlenmesiyle başlar. Programın verdiği çıktılar, hata mesajları veya kontrol mekanizmaları hakkında fikir verir. Bu ilk gözlemler, analiz sırasında nelere odaklanmamız gerektiğini belirlememizi sağlar.
İkinci adımda, program bir tersine mühendislik aracıyla analiz edilir. Popüler araçlardan biri olan Ghidra, çalıştırılabilir dosyayı yükleyip, yapısını incelemeye olanak tanır. Bu araç içerisinde Symbol Tree, Program Trees, Decompiler ve Listing gibi bölümler yardımıyla kodun fonksiyonel yapısı ortaya çıkarılır. Özellikle main gibi başlangıç fonksiyonları üzerinden programın işleyişi takip edilir. Kodun yapısına göre, kullanıcı girdilerinin nerede karşılaştırıldığını ya da neye göre "doğru" ya da "yanlış" olarak değerlendirildiğini görmek mümkündür.
En önemli aşamalardan biri ise, makine kodunun yüksek seviyeli dile çevrilmesidir. Ghidra’nın decompiler özelliği sayesinde, assembly dilindeki karmaşık komutlar C benzeri okunabilir bir forma dönüşür. Bu bölümde karşılaştırma yapılan sabit metinler (örneğin parolalar), koşullu ifadeler ve mantıksal kontroller daha net şekilde görülebilir. Böylece, orijinal kaynak koda ihtiyaç duymadan, programın içerisinde gömülü olan şifre gibi kritik bilgileri analiz etmek mümkün olur. Bu yöntem, eğitim, güvenlik denetimi ve CTF senaryolarında oldukça etkili bir araçtır.
https://crackmes.one/crackme/5c6fb03b33c5d4776a837d14