Merhaba ve tekrar hoş geldiniz.
Bu derste, Ghidra'yı kullanarak bu şeyin nasıl paketlendiğini araştırmaya çalışacağız ve ardından nasıl açılacağına
dair bir fikir edineceğiz.
O yüzden devam edin ve Ghidra'nızı fırlatın.
Yeni bir proje oluşturalım.
Paylaşımsız.
İleri'ye tıklayın.
Masaüstüne gitmek için üç noktaya tıklayın.
Kötü amaçlı yazılımı içeren klasörü seçin ve ona bir ad verin.
Simda diyelim.
Son'a tıklayın.
Ardından, Simda kötü amaçlı yazılımını aynı klasöre sürükleyin.
Bir PE yürütülebilir dosyası olarak tanımladı.
Tamam'a tıklayın.
Her ikisini de işaretleyin ve Erişime İzin Ver'e tıklayın.
Ve ardından Tamam'a tıklayın.
Ardından, Simda kötü amaçlı yazılımını kod tarayıcısına sürükleyin.
Analiz edilmediğini söylüyor ve analiz etmek isteyip istemediğinizi soruyor.
Evet'e tıklayın.
Derleyici Parametre Kimliğini kontrol ettiğinizden emin olun, aşağı kaydırın ve PDB'yi kontrol edin.
Aşağı kaydırın ve Windows WindowsPE x86 PE Propagate
External Parameters seçeneğini işaretleyin ve Analyze seçeneğine tıklayın.
Ardından analizin durumu ve ilerleyişi için sağ alt köşeye göz atın.
Birkaç dakika sürebilir, bu yüzden videoyu duraklatacağım ve bittiğinde geri geleceğim.
Bunu kapatmak için Tamam'a tıklamanız yeterlidir.
Ve şimdi tamamlandı.
Şimdi, içe aktarmalara bir göz atarsanız, çok az işlev bulacaksınız, bu da daha önceki bulgularımızı
doğruluyor, çünkü çok az işlev var, bu muhtemelen
paketlenmiş.
Şimdi girişe, giriş noktasına
gidelim.
Bundan önce, tercihlerimizi, Araç Seçeneklerini düzenleyeceğiz.
Listeleme Alanlarımız için
İmleç Metin Vurgulaması yapmak istiyoruz.
Sol Fare Tıklaması.
Uygula'ya tıklayın.
Yani burası giriş noktası.
Ve sonra bu fonksiyonun geri dönüşüne doğru ilerlerseniz, bazı anormal
geri dönüşler fark edeceksiniz.
Emekli olmadan hemen önce bir itme.
Burada bir tane daha var.
Retten hemen önce itin ve böyle devam edin.
Sahte getiri ile kastettiğimiz budur.
Yani yaptığı şey, bunu yığına itmek ve sonra bu adrese geri dönmektir.
Şimdi buraya atlar ve bunu çalıştırırsak, bu şey yine bunu yığına iter ve sonra geri döndüğünde, yığının
en üstünde ne varsa ona geri döner, ki bu aslında budur.
Ve yine, burada bunu yığına iter ve sonra
geri döndüğünde, aslında burada olan buna da geri döner.
Şimdi, epilogun bu standart dışı yolu nedeniyle, bu şey Ghidra tarafından sökülmedi.
Yani bu tam bir işlev değildir.
Dolayısıyla, işlevi tamamlamak üzere yeniden yapılandırmaya çalışmak için Ghidra'ya dışarıda bırakılan bu parçayı
sökmesini söyleyebiliriz.
Bu yüzden buna sağ tıklayıp Parçalara Ayır'a tıklamamız gerekiyor ve Ghidra tüm bunları bizim için bir araya getirecek.
Yapmak istediğimiz bir sonraki şey, tüm bunları NOP'lamak ve ardından yeni sökülen bölgeyi dahil etmek için tüm
işlevi yeniden oluşturmaktır.
Bunu yapmak için, tüm bunları seçip sağ tıklayabilir ve ardından Kod Baytlarını Temizleyebiliriz.
Şimdi hex editörüne gidebilir ve tüm bunları NOP yapabiliriz.
Burada Pencereyi seçiyoruz ve Bytes'ı seçiyoruz, bu da hex editörünü açacak.
Ve şimdi, tüm bunlara atıfta bulunan 6898 ve benzeri tüm bu baytları NOP
yapmak için, düzenlemeyi etkinleştirmek üzere bu simgeye tıklayacağız.
Sonra da buraya gelip NOP yapabiliriz.
Ve NOP yaptığınızda, NOP onaltılık olarak 0x90'dır, 90 işlem yok anlamına gelir.
Bu, bu adreslerde hiçbir şeyin yürütülmesini istemediğimiz anlamına gelir.
Bu yüzden tekrar tekrar 9090 yazmaya devam ediyoruz ve siz 9090 yazdıkça
bunların her biri değişikliği yansıtacaktır.
Bu yüzden, NOP ya da işlem yok olarak da bilinen tüm bu 90'ları, buradaki son C3 baytına
kadar ekleyeceğiz.
Bunu yapmaya devam edelim.
Ve sonuncusu.
Şimdi tüm bunları NOP'ladığımıza göre, tekrar kilitleyebiliriz.
Ve şimdi kodun bu kısmını onararak Ghidra'ya işlevi, henüz parçalarına ayrılmış olan alt bölümü de içerecek şekilde
yeniden oluşturmasını söyleyebiliriz.
Bunu yapmak için, burada üstte bir yeri seçiyoruz ve ardından sağ tıklayıp Akışı Temizle ve Onar'ı
seçiyoruz.
Ve sonra varsayılan olarak Akışı Onar.
Sadece Tamam'a
tıklayın.
Tamam, şimdi Ghidra gördüğünüz gibi talimatların bu yeni bölümünü içerecek şekilde şeyi yeniden
oluşturdu ve biz de değişikliği yansıtmak için yeni bir fonksiyon oluşturacağız.
Böylece burada artık size tam olarak orijinal işlevi gösteren yeni bir işlev olduğunu görebiliriz.
Şimdi buradaki sonuncuya tıklayabilir, geri dönebilir ve daha fazla anormal sahte geri dönüş olup olmadığına bakabiliriz.
Şimdi, burada en alta bakarsanız, anormal bir itme ve geri dönüş göreceksiniz.
Dolayısıyla bu durum, daha yapılacak çok şey olduğunu gösteriyor.
Bunu burada izleyebiliriz, 0x401130.
Görünüşe göre buradaki satırda bu adres bir yazmaca itiliyor.
Böylece EAX'a taşınır ve ardından EAX'taki değer yığına itilir.
Şimdi bunu çift tıklayarak geriye doğru izlersek, fonksiyona
gidebilir ve orada neler olduğunu görebiliriz.
Ve eğer aşağıya doğru inersek,
burada da göreceksiniz, burada
anormal bir sıçrama
var.
Bunu gördün mü?
Bu da, bu gecikmeye asla ulaşılamayacağı anlamına gelir.
ECX'i iter ve doğrudan 0x401167'ye atlar, bu da burada ret'in kendisidir.
Yani bu da beklenmedik bir sıçrama.
Peki ECX'in içinde ne var?
ECX.
ECX'i buradan takip ederseniz, ECX'i seçebilirsiniz ve sizin için vurgulanır.
Bu da ECX'e gönderilen verinin adresidir.
Şimdi bunun üzerine çift tıklayarak izini sürüyoruz ve burada tanımsız olduğunu görüyoruz.
Tamam.
Önceki konuma geri dönmek için tıklayalım.
Dolayısıyla, burada ECX'e tam olarak neyin itildiğini bilmek için bir hata ayıklayıcı kullanmamız gerekir.
Bu, burada bir yere bir kesme noktası koymamız ve ardından hata ayıklayıcının bu noktaya kadar çalışmasına izin vermemiz gerektiği anlamına gelir.
O zaman ECX'in değerinin ne olduğunu ve orada gerçekte neyin paketinden çıkarılmaya çalışıldığını araştırabiliriz.
Ve muhtemelen orada bir kabuk kodu bulacağız.
Bunu bir sonraki derste yapacağız.
İzlediğiniz için teşekkürler.