Natural

natural

Breaking News

Unpack Temizleme





: Kullanılan Programlar :
Scanner / Detect It Easy (Die)
Decompiler / dnSpy

Cleaners / Constant Decrypter , Proxy Call Fixer , Switch Killer , De4dot
CrackMe Link İçin Tıklayın !




Öncelikle bu programın Unpack edilişi youtube'de zaten var fakat Unpackten sonrası hiçbir yerde yok. Bugün bu crackme yi tamamı ile çözeceğiz.

Programımızı Taratalım.
Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.

Programımızda standart bir Confuser varmış gibi duruyor.
Direkt de4dot'a verdiğimiz zaman hata çıktığını göreceğiz. Daha sonrasında hatayı görmezden gelip dnSpy üzerinde programı decompile ettiğimiz zaman uygulamanın tam temizlenmediğni de göreceğiz.
Programımızı sırası ile şu cleanerlardan Geçirelim ;
Constant Decryptor
Proxy Call Fixer
Switch Killer
De4dot
Daha sonrasında programı tekrar decompile edip modül üzerinde patch işlemi uygulayarak programın açılmasını sağlayalım.. (Burayı çok yüzeysel anlattığımın farkındayım ama zaten videoda görüntülü bir şekilde anlatılmış o yüzden fazla üstünde durmuyorum.)
Gelelim asıl işimiz olan nasıl çözüldüğüne.

Programımızı decompile ettikten sonra Main fonksiyonuna gidince karşımıza çıkan ekran budur ;
Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.

Program bir crackMe uygulaması yani bir XML okuyucu değil. Dolayısıyla bu ekran da gördüğünüz XML okuyucu kodlarının hepsi gereksiz ve method içerisinde ki dosyaları incelerseniz Sürekli kapatmaya yönelik komutlar var. Sürekli bir debugger engeli yapıp kapatıyor fakat işimiz bununla değil.
Dolayısıyla programın XML okuyucu olan kısımlarını editleyerek siliyoruz.
Düzenledikten sonra bu hali alacaktır ;

Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.

Şimdi methodları açıklayacak olursak ;
smethod_3 : Debugger kontrolü yapan kısım
smethod_2 : Uygulamadan direkt çıkış yapan kısım
smethod_1 : Lisans işini yapan kısım (string değer döndüren kısım)

Dolayısıyla smethod_3 ve smethod_2 kısımlarını programdan tekrar editleyerek siliyoruz.
Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.

Fakat arkadaşlar bir sorun daha var.
Görecek olursanız bir console uygulaması ve sonunda programa durmasını emreden hiçbir kod yok.
Gördüğümüz gibi text değişkenine yazdığımız passwordu alıyor ve daha sonrasında text'i smethod_1 ' den dönen değer ile kontrol ediyor.
Ve eğer doğru ise sonunda bir doğru mesajı göstererek direkt flagı veriyor.
dolayısıyla doğru yaptığımız zaman programın durmasını sağlayacak kod bloğunu da ekleyelim.
Kod:
Console.ReadKey();
Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.

Programımızın tam olarak son hali bu şekilde oluyor.
Şimdi gelelim lisans olayına gördüğümüz gibi sadece bir kontrol işlemi var ve oldukça basit bir durum.
smethod_1 ' in üstüne bir kez tıklayarak olayın içine girelim.

Karşımıza bu kodlar gelecek zaten bakarsanız burdada sadece iki değer return ediyor ya üstteki veya bir olaydan daha geçirip alttakini return edecek.
Üstteki tamamen kafa karışıklığı yaratsın diye yapılmış bir durum.
Kendisinden kendisini çıkartıyor ve sonuç 500 ' den büyük mü diye kontrol ediyor ?

Şimdi gelelim devamına
method_2 ' nin içine girelim.
Ve gördüğünüz gibi yine kafa karışıklığına sebep verebilecek bir durum olarak iki şey return ettirilmiş fakat yine aynı kontrol işlemi var kendisinden kendisini çıkartarak 500 den büyük mü diye kontrol ettiriyor. oradan da atlatarak sadece string_0 ve string_1 değişkenini yan yana yazdırılmış halini return ediyor. Oraya bp koyarak programı debuglayalım.


Evet password girdikten sonra Locals kısmında string_0 ve string_1 değerini görüyorsunuz.
Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.

Yani Password :
Kod:
systemadmin
BreakPoint'i oradan kaldırarak programı baştan çalıştıralım

Mutlu son 

Flag :
Kod:
HTB{SySt3m4dmin}

Tam Temizlenmiş Hali Exe İndir :
https://yadi.sk/d/iMFM9A7v4Eb8Eg

Unpack Ediliş Videosu : (Bana ait değildir)
https://www.youtube.com/watch?v=ShQBAvRXJZA

Hiç yorum yok