Natural

natural

Breaking News

X64dbg'ye Giriş

X64dbg'ye Giriş


Mr. Exodia tarafından x64dbg kullanımıyla ilgili bu kısa, giriş niteliğindeki eğiticiye hoş geldiniz Bu öğreticinin amacı, size x64dbg'nin bazı temellerini öğretmek ve özelliklerinin ve esnekliğinin yakın kuzeni Ollydbg'ye ne kadar benzediğini göstermektir. X64dbg hala alfa aşamasındayken, hataları küçüktür ve yalnızca bir çökme ile çok azdır olası olmayan koşullar altında oluyor.

1. Yapılandırma.
X64dbg'yi yapılandırmak oldukça basittir çünkü menü ollydbg'den çok daha özlüdür, bu da süreci çok daha kullanıcı dostu hale getirir. Yapılandırma iletişim kutusuna erişmek için Seçenekler menüsüne gidin ve Tercihler'i tıklayın. Olaylar etiketli ilk sekmede, x64_dbg'nin meydana geldiklerinde hangi olayları durdurmasını istediğinizi yapılandırabilirsiniz.


Yukarıdaki ekran görüntüsündeki yapılandırma, genellikle önerdiğim ve basit hata ayıklama için kullandığım şeydir. Buradaki seçenekler, birkaç ek özellikle birlikte ollydbg 1.10'da bulunanlar gibidir. İşte bu özelliklerin ne işe yaradığının özü.

Sistem Kesme Noktası: Yeni bir işlem yüklerken, hata ayıklamaya çalıştığınız uygulamayı başlatan sistem işlevinde x64dbg'nin bozulmasına neden olur.

TLS Geri Aramaları: TLS Geri Araması, ana uygulama çalışmadan önce çağrılan bir işlevdir. Bu, parametreleri ayarlayabilir veya hatta bazı koruyucular tarafından hata ayıklama teknolojisini uygulamak için kullanılabilir. Bu, bu işlevi kırmanıza izin verir.

Giriş Kesme Noktası: Bu, x64dbg'nin uygulamadaki Giriş noktasında kesilmesine neden olur. Genel hata ayıklama için, kontrol etmeniz gereken tek kesme noktası budur.

DLL Girişi: Bu, hata ayıkladığınız işlem tarafından yüklenen herhangi bir DLL'nin giriş noktasında kırılır.

İş Parçacığı Girişi: Bu, mevcut işlem tarafından başlatılan herhangi bir yeni iş parçacığının ilk talimatında kesilecektir.

Kesme Noktası Ekle: Bu işaretlendiğinde, x64dbg'nin etkin bir işleme eklenirken DbgUiRemoteBreakin işlevinde bozulmasına neden olur. İşaretlenmezse, işlemi askıya almadan bağlanacaktır. DLL Yükleme / DLL Kaldırma:

Bu, etkin işleme yeni bir kitaplık (DLL) yüklendiğinde veya bu işlemden kaldırıldığında sistem işlevini bozar. DLL Yük kesme noktası, kodundan herhangi biri yürütülmeden önce gerçekleşir.

İş Parçacığı Başlangıcı / İş Parçacığı Sonu: Bu, hata ayıklanan uygulamamız bir iş parçacığını başlattığında veya sonlandırdığında sistemde kırılmamızı sağlar.

















Motor bölmesinde, hata ayıklama motoru için birkaç gelişmiş ayar bulacaksınız. Bu, çoğu durumda varsayılan olarak bırakılmalıdır, ancak burada nasıl çalıştıklarının bir özeti.

Hata Ayıklama Ayrıcalığını Etkinleştir: Bu, sistem işlemlerine eklemenizi sağlar.
Kesme Noktası Türü: Bu özellik, programınız varsayılan INT3'ü algılar veya engellerse farklı kesme noktası türlerini denemenizi sağlar.
Sembol Adlarını Dekore Etme: Bu, sembol adlarının daha temiz görünmesini sağlar. Estetik bir özelliktir.

















İstisnalar bölmesinde, x64_dbg'ye hangi istisnaları yok saymak ve programa geçmek istediğinizi söyleyebilirsiniz. Bunu boş bırakmak, x64_dbg'nin her istisna durumunda çalışmasına izin verecektir. Tüm istisnaları yok saymak istiyorsanız, Aralık Ekle düğmesini kullanarak 0-ffffffff aralığını ekleyin. Sonuncuyu Ekle düğmesi, şu anda hata ayıkladığınız programın en son istisnasını yok sayma listesine eklemenize olanak tanır.

















Sökülen talimatların görünümünü değiştirmek için Disasm bölmesini kullanabiliriz. İşte bu seçeneklerin ne işe yaradığının bir özeti.

Argüman Spaces: Bu değişen her tartışma sonrasında bir boşluk koyacağız mov RAX RDX için mov rax, RDX . Esasen her virgülden sonra bir boşluk koyar.

Bellek Alanları: Bu, bellek referans talimatları ve operatörleri arasına bir boşluk koyar. Bu, mov eax, byte ptr ds: [edx + 18] 'in mov eax, byte ptr ds: [edx + 18] gibi görünmesine neden olur .

Büyük harf: Bu, tüm metni büyük harfe dönüştürür.

Yalnızca CIP'de otomatik yorumlar: Bu, talimat işaretçisi haricinde geçerli sökmeden gelen referanslar dahil tüm yorumları kaldıracaktır.

















Misc sekmesi, x64_dbg'yi Tam Zamanında Hata Ayıklayıcı olacak şekilde yapılandırmanıza olanak tanır, böylece sistem bir sorun oluştuğunda onu bir işleme ekleyebilir.

1. x64_dbg Hata Ayıklama Örneği:
 Bu öğreticiyi biraz daha pratik hale getirmek için, x64_dbg Sample adında küçük bir program oluşturdum. O ve kaynağı, aşağıdaki bağlantıdaki x64_dbg sourceforge dizininden doğrudan indirilebilir:
http://sourceforge.net/projects/x64dbg/files/extra/

Bunu indirdikten sonra arşivden çıkarın ve x64_dbg'de açalım. Bunu yapmak için, x64_dbg'yi başlatabilir ve dosyayı sökme penceresine sürükleyip bırakabilir veya aynısını yapmak için Dosya -> Aç seçeneğini kullanabilirsiniz. Alternatif olarak, varsayılan x64_dbg programının sizin için otomatik olarak bir kabuk uzantısı kaydetmesine izin verebilirsiniz, böylece dosyaları sağ tıklama menüsünden açabilirsiniz.



Açtıktan ve daha önce olay ayarlarını yalnızca Giriş Noktası olarak yapılandırdıktan sonra, ana modülün giriş noktasında olmalısınız. Arayüzde, x64_dbg'nin ollydbg ile aynı kısayol tuşlarının çoğuna sahip olduğunu göreceksiniz.





















Hata ayıklama menüsünde, x64_dbg'nin Ollydbg ile aynı kısayol tuşlarına sahip olduğunu görebilirsiniz. Bu komutlar, normal hata ayıklama etkinliklerinizde kullanmanız gereken bazı temel işlemleri sağlar.

Çalıştır (F9): Bu, işlemi normal şekilde başlatır veya devam ettirir.

Çalıştır (istisnaları atla) (Shift + f9): Bu, mevcut ve sonraki tüm istisnaları işleme geçirirken işleme devam edecektir.

Duraklat (F12): Bu, mevcut işlemi askıya alır.

Yeniden Başlat (Ctrl + F2): Bu, hata ayıklanan işlemi sonlandırır ve yeniden yükler.

Kapat (Alt + F4): Bu, hata ayıklanan işlemi sonlandırır ve kaldırır.

Step Into (F7) : Bu, bir rutin girmemize veya bir tekrarlama talimatında sonraki adımı yürütmemize izin verir.

Step Into (istisnaları atla) (Shift + F7): Bu, mevcut istisnayı uygulamaya geçirirken bir tekrarlama talimatında bir rutin girmemize veya sonraki adımı yürütmemize izin verir.

Step Over (F8): Bu, tüm bir altyordamı çalıştırmanıza veya komut adım adım atmadan talimatı tekrarlamanıza izin verir.

Step Over (istisnaları atla) (Shift + F8): Bu, geçerli istisnayı uygulamaya geçirirken talimatla talimatla adım adım ilerlemeden tüm bir alt yordamı yürütmenize veya talimatı tekrarlamanıza olanak tanır.

Geri Dönüşe Kadar Yürüt (Ctrl + F9): Bu, bir dönüş talimatı yürütülene kadar işleme devam eder.

Geri Dönene Kadar Yürüt (istisnaları atla) (Ctrl + Üst Karakter + F9): Bu, geçerli istisnayı uygulamaya geçirirken bir dönüş talimatı yürütülene kadar işlemi sürdürür.

Kesme noktaları:
Hata ayıklarken, kullanmak istediğiniz birincil özelliklerden birine kesme noktaları denir. 3 ana tür kesme noktası vardır. Bunları burada kısaca tartışacağız.

Yürütme Kesme Noktası: Bu, en yaygın ve en çok kullanılan kesme noktası türüdür. Belirli bir adresteki bir kesme noktasını değiştirdiğinizde, bu hata ayıklayıcıya yürütmede o adrese ulaşıldığında durmasını söyler. Bunu kullanmak için, kırmak istediğiniz bir adresin üzerindeyken F2'ye basmanız yeterlidir.

Bellek Kesme Noktası: Bellek kesme noktası, belirli bir bellek alanına erişildiğinde, bu alana yazıldığında veya çalıştırıldığında bir uygulamayı duraklatmak için kullanılır. Bu, program tarafından belirli bir bellek alanının ne zaman kullanıldığını veya kullanılıp kullanılmadığını belirlemek istediğinizde kullanışlıdır. Bu, bellek haritası penceresinin ve döküm bölmesinin sağ tıklama menüsünde bulunur.

Donanım Kesme Noktası: Belirli bir adrese yazıldığında, okunduğunda veya çalıştırıldığında bir uygulamayı duraklatmak için bir donanım kesme noktası kullanılır. Bu, belirli bir değişkenin ne zaman ayarlandığını belirlemek için özellikle yararlıdır. Bu bayt, kelime ve dword okumaları ve yazmaları için kullanılabilir. Bu özellik, onaltılık dökümün sağ tıklama menüsünde mevcuttur.

Hadi başlayalım:
Artık x64_dbg'deki özellikler hakkında genel bir anlayışa sahip olduğumuza göre, ilk hedefimizde hata ayıklamaya başlayabiliriz. Hedefimizi zaten x64_dbg'ye yükledik, öyleyse F9'a basarak çalıştıralım. Gördüğünüz gibi, uygulama ona bağlı hata ayıklayıcı ile çalışmaya başlar. Bu noktada x64_dbg'de uygulamayı duraklatabilir ve birkaç özelliğine göz atabiliriz. Uygulamayı duraklatmak için F12'ye basın.






























Durakladığımızda, x64_dbg tarafından oluşturulan bir break-in iş parçacığının içine varıyoruz. Ana iş parçacığına geri dönmek için, basitçe diziler sekmesine tıklıyoruz ve ana etiketli olana çift tıklıyoruz.









Ana İş Parçacığına ulaştığımızda, rutinleri aşmaya ve çağrı yığınını analiz etmeye başlayabiliriz. Çağrı Yığını penceresi, sizi mevcut konumunuza getiren işlevlerin ve prosedürlerin (rutinler) kapsamlı bir listesini verir. Bu pencereyi, bu rutinleri analiz etmek ve uygulamanızın yürütme rutini hakkında bilgi edinmek için kullanabilirsiniz. Sökücüde takip etmek istediğinize çift tıklayın.




Bellek Haritası bölmesi bize, uygulamamıza ve uygulamamıza ve bağımlılıklarına tahsis edilen tüm RAM bölümlerini veya bölgelerini gösterecektir.

























Devam edelim ve işlemi F9'a basarak devam ettirelim . Uygulamaya '123456' sahte şifresini girmeyi deneyelim ve Check butonuna tıkladığımızda hangi mesajın döndüğüne bakalım.


Gördüğümüz gibi, ' Kimlik Doğrulama Başarısız Oldu ' mesajı nedeniyle bu geçerli bir şifre değil Geçersiz şifre! Artık mesajı bildiğimize göre, bu dizeyi uygulamanın içinde bulup bulamayacağımızı görmek için x64_dbg'deki yerleşik referanslı dizeleri bulma işlevini kullanalım.Bunu yapmak için önce şu anda uygulamanın içinde olduğumuzu doğrulamamız gerekiyor. modül. Bu doğrulandıktan sonra, x64_dbg'nin üst panelindeki 'A' düğmesine tıklayabilir veya sökme bölmesinde sol tıklayıp Ara -> Dize referanslarına gidebiliriz.


Bu, uygulamanın kodunda atıfta bulunulan tüm dizelerin bir listesini oluşturacaktır. Bir liste oluşturduğunuzda, listeyi filtrelemek ve bu dizenin yerini bulmak için arama bölmesini kullanabiliriz. Bununla birlikte, bu küçük bir uygulama olduğu için, aşağıya basit bir kaydırma, dizimizin referans verildiği yeri ve diğer bazı ilginç dizeleri ortaya çıkaracaktır.



Bunlardan herhangi birine çift tıklamak sizi sökme bölmesindeki konumuna götürür. Ayrıca, F2'ye basarak bu referanslar üzerinde bir kesme noktası değiştirebilirsiniz. 'Authentication Failed ..' dizesini izleyelim ve bizi nereye götürdüğünü görelim.



Yukarıdaki resimde, şifremizi kontrol eden fonksiyonun başında bir kesme noktası belirledim. Bunu biraz daha iyi anlayabilmemiz için birkaç görüşmenin yanına bazı yorumlar da ekledim. Bunu, çağrıların üzerine çıkan f8 kullanarak adım atarsak, süreci görebiliriz. Bu fonksiyonun başındaki kesme noktasını F2 kullanarak değiştirelim, 123456 değerini şifre kutusuna girelim ve Kontrol Et butonuna tıklayalım. Hemen kesme noktamızı kıracağız. Adım atarken, metin alanına girdiğimiz şifreyi alacağımızı ve daha sonra yerleşik algoritma ile şifreleyeceğimizi fark edeceksiniz.

Gördüğümüz gibi, şifremiz bir özet veya karma algoritma aracılığıyla çalıştırılıyor ve programda bir dizi olarak saklanan önceden hesaplanmış bir değerle karşılaştırılıyor. Bu programın hangi karma algoritma türünü kullandığını belirlemek için, '123456' dizesinin sonuçlarını karşılaştırmak için yazılım karma yardımcı programımı kullanabiliriz. Hata ayıklama örneğinde, "123456" için döndürülen karma "e10adc3949ba59abbe56e057f20f883e" dir. Bakalım hangi algoritma aynı şeyi üretiyor.

Karma algoritmamızın MD5 olduğu anlaşılıyor. Karma, sabit kodlanmış bir değerle karşılaştırıldığı için, orijinal parolayı zorlamak veya kurtarmak uzun zaman alabilir. X64_dbg kullanarak, herhangi bir şifreyi geçerli olarak kabul edebilmesi için talimatları düzeltme veya değiştirme yeteneğine sahibiz. Yukarıdaki kodda hash'lerimiz karşılaştırılmıştır. Birbirlerine eşitlerse, program bize şifrenin geçerli olduğunu söyler. Değilse, geçersiz olduğu söyleniyor. Yerleşik birleştiriciyi kullanarak, karşılaştırma atlamasının geldiği yeri değiştirebiliriz. Bu, bir sonraki talimatla değiştirirsek, ne girdiğimize bakılmaksızın her zaman parolanın geçerli olduğunu göstereceği anlamına gelir. Birleştiriciyi kullanmak için, değiştirmek istediğimiz talimatın üstüne geldiğimizde boşluk çubuğuna basmanız yeterlidir.



Normalde, şifre geçersizse bu, VA 59EA68'e atlar. Burada, adresi sadece 59EA5A olarak değiştireceğiz, böylece alana ne girdiğimizden bağımsız olarak her zaman geçerli şifre koduna gidecek. Tamam'a tıkladıktan sonra, talimat bellekte hemen değiştirilir. Şimdi yama yaptığımıza göre, '123456' şifresini tekrar test edelim.

Gördüğünüz gibi, şimdi girdiğimiz her şey doğru şifre olacak. Ancak bu yama yalnızca sürecin hafızasını etkiler. Programı yeniden başlattığımızda bu yama gitmiş olacak. Bu yamayı kalıcı hale getirmek istiyorsanız, bunu diske kaydedebilirsiniz. Bu, çalıştırılabilir dosyamızın her zaman sahte bir şifreyi kabul edecek değiştirilmiş bir kopyasını oluşturacaktır. Bunu yapmak için, üstte bandaj bulunan düğmeye tıklayarak yama iletişim kutusunu açıyoruz.


Bu açıldıktan sonra, kaydetmek istediğiniz yamayı kontrol edebiliriz ve bu Yama dosyası'na tıklayın. Bu, değiştirilen programı belirttiğiniz herhangi bir adla doğrudan diske kaydetmenize olanak tanır.

Şimdi, algoritmanın nasıl çalıştığını bildiğimize göre, görelim ki şifreyi kırabilecek miyiz. Çevrimiçi olarak, hashinize bir çözümü olup olmadığını kontrol edecek birden fazla veritabanı vardır. Yerleşik hash'i bir dizge olarak kopyalamak için, dökümdeki değeri izlememiz gerekir.Bunu yapmak için, yerleşik hash'i işaret eden talimata sağ tıklayın ve Dökümde İzle -> Adres'e gidin.


 Artık dökümde olduğumuza göre, hash dizesinin onaltılık değerlerini, sağ tıklamayı ve tıklama düzenlemesini vurgulamamız gerekiyor.


Bu, dizeyi doğrudan panomuza kopyalamamıza izin verecektir. Artık hash elimizde olduğuna göre, hashkiller.co.uk adresinde bulunan gibi bir hash çözücüye yapıştırabiliriz.



Şaşırtıcı bir şekilde, şifrenin ba321c olduğunu söyleyen bir çözüm buldu. Değiştirilmemiş programı açalım veya hata ayıklayıcımızdaki programı yeniden başlatalım ve parola alanında bu değeri deneyelim.



Aklımızı kullanarak ve bu basit yaklaşımı kullanarak şifreyi bulduk.

Bu, x64_dbg için bu giriş öğreticisini sonlandırır. Bu, en zor görevleri bile başarmak için çok çeşitli özellikler ve esneklik sunan çok güçlü bir tersine mühendislik aracıdır. Yazarın bunu özgür ve açık kaynak haline getirdiği için çok şanslıyız. Bunun üzerinde çok çalışan geliştiriciye küçük bir bağış veya katkı ile teşekkür etmek için her zaman zaman ayırmalıyız. Umarım bu öğreticiyi faydalı bulmuşsunuzdur. Herhangi bir sorunuz varsa, aşağıda sormaktan çekinmeyin. Bir dahaki sefere kadar, mutlu geri dönüşler.


http://reverseengineeringtips.blogspot.com/2015/01/an-introduction-to-x64dbg.html


Hiç yorum yok