Ana sayfa HEPSİ Tersine Mühendislik 4

Tersine Mühendislik 4 [Ollydbg Breakpoints]

411
0

Tersine Mühendislik serisinin 4. bölümünde ollydbg içerisinde breakpointleri inceleyeceğiz. Hedef programın çalışma mantığını anladıktan sonra duruma göre çeşitli kesme noktaları (BreakPoint) oluşturacağız. Debug esnasında program ilgili bölüme geldiğinde duracak ve işlemlere satır satır devam edeceğiz.

BreakPoint Eventleri :

Ollydbg breakpoint eventleri

Breakpoint eventleri plugin olarak eklenmektedir.  Ollydbg içerisinde hazır olarak bulunmuyor. Ben modlanmış Ollydbg olarak Win 8.1 Olly kullanıyorum. Peki bu eventlerin anlamları neler? hedef programı incelerken nasıl bir yol izlememiz gerekecek? Devam edelim.

NOT : Bu bilgiler için  TÜRKÇE kaynak bulmak neredeyse imkansız. 🙂

Text Recuperation:

Bu event içerisinde 3 adet tip bulunmaktadır. Birinci eventimiz kullanılan windows apisine göre değişiklik gösterdiği için iki türde incelenir. Bunlar GetWindowText(A/W) ve GetDlgItemText  eventleridir. Öğelerdeki breakpoint noktaları hedef programın giriş metnini okumasını sağlar. Breakpoint noktasına geldiğinizde, hangi kodun giriş metninizi okuduğunu ve bellekte nerede depolandığını görmek için çağrı yığınını izleyebilmenizi sağlar.

Message Boxes:

Mesaj Kutusu

Başlıktanda anlaşıldığı üzere mesaj kutuları eventleridir. Hedef programın lisans bölümünde çıkan uyarıları yakalarken veya hedef programın açılış sırasında ekrana gelen , uyarı , hata mesajlarını silebiliriz. Mesaj kutusu oluşmadan önce bu eventlerin hepsine breakpoint koyarak , programı debug etmeye başlayabiliriz. Mesaj kutusu çıkmadan önce ofset başlangıcında duracaktır.

Dialog Boxes:

Çok seçenekli mesaj kutuları dialog boxes adıyla geçer.

Bu event biraz daha çeşitlidir. Dialog adındanda anlaşılacağı üzere bir işlem için bize 3 veya 2 seçenek sunabilir . Elbet bu seçenekler daha fazla artırılabilir. Ancak genel olarak maksimum 3 olarak gelmekte. Dialogboxlar oluşum esnasında veya opsiyonel cevapların verilmesine göre breakpoint koyulabilmekte.

Files BreakPoint :

Dosya işlemleri için kesme noktası oluşturma

Benim en sevdiğim breakpoint eventlerinden bir tanesi. Hatta en sık kullandığımda diyebilirim. Çünkü Dosya okuma işlemlerini , yazma işlemlerini , taşıma işlemleri gibi bir çok durum için kesme noktası oluşturabilmekteyiz. Serinin 4. bölümünde eklenecek olan videoda Files BreakPointleri inceleyeceğiz. Yinede terimlerinin bir kısmını anlatalım .

  1. Create File  = Dosya oluştururken çalışır.
  2. Delete File  = Dosya silinirken çalışır.
  3. Move File    = Dosya Taşınırken çalışır.
  4. Open File    = Dosya açılırken çalışır.
  5. Read File    = Dosya okunurken çalışır.
  6. Write File    = Dosya yazılırken çalışır.
  7. GetFileSize  = Dosyanın boyutunu hesaplarken çalışır.
  8. GetFileType = Dosyanın türünü alırken çalışır.

Önceki bölümlerde neden kodlama öğrenmemiz gerektiğini vurgulamıştık. İşte bu terimlerin anlamlarını ve kullanım mantığını programlama ile ilgilenenler anlayacaktır .Kendi fikirlerini yürütebilecekleri ilk fırsat diyebiliriz…

Modules And Libraries :

Windows içerisindeki modul ve kütüphaneleri çağırma bölümü

Bu kısımlar biraz daha ileri düzey diyebiliriz. Çünkü programlama koşullarında sıkça kullanmadığımız apilerdir bunlar. Yaygın olarak virüs , trojan , worm gibi zararlı yazılımlar daha fazla kullanmaktadır. Oyun hilelerinde vs kullanımı çok yaygındır. 2. bir programa dışarıdan müdahale ve inject işlemlerinde kernel32 kütüphanesi üzerinden gidilir. GetModuleHandleA eventinin microsoft’un kendi sitesinde vermiş olduğu bilgiler şöyle.

Minimum destekleme Windows XP [desktop apps only]
Minimum destekli Server Windows Server 2003 [desktop apps only]
Hedef Platform Windows
Header libloaderapi.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

Memory Management:

Bellek Yönetimi

Mavi ekran hatası ile alakalı değildir.. 🙂 Daha önceden başına mavi ekran hatası gelenler hemen atlamasın çünkü durum çok farklı. Bellek yönetimi ile ilişkili olan temel bölümdür. Örnek olarak yazılan kodun referans tiplerinin Garbage Collector tarafından ele alınır ve nesne örneklerinin yaşam döngüsünden, onların bellek üstündeki fragmantasyonlarından ve serbest bırakılmalarından sorumlu olduğunu söyleyerek özetleyebiliriz. Win32 ile  .Net Memory Management hemen es geçilemeyecek kadar detaylıdır. Bu yüzden konuyu ayrıca ele alalım konumuz dağılmasın.R

Registry:

Kayıt defteri işlemleri için

Regedit üzerindeki hemen hemen bütün işlemler için breakpoint koyulabilir. Hedef program lisans kayıt için veya versiyon bilgileri vb. dataları buraya kaydedebilir. Tersine mühendislikte regeditin incelenmesi önemli yer tutar. okunacak veri yollarınıda kesme noktaları sayesinde görebiliriz.

Directory And Paths:

File Event ile yakından ilişkili olan bölümdür. Dizin ve dosya yollarını bulmada kullanılır. Hedef programın sistem içerisine sakladığı lisans dosyası yada settings bölümü gibi yolları açığa çıkarabilir. Yine dosya işlemlerinin farklı jenerasyonu olduğu için üzerinde fazla durmamıza gerek yok.

Drives:

Sürücü üzerindeki işlemler için eventler

Sürücüler hakkında bilgi alma işlemlerinde sıkça kullanılan eventlerden oluşan bir listeyi barındırır. Boş disk alanı , dolu disk alanı gibi hesaplamalar için kesme noktalarına bu bölümlerden ulaşabiliriz.

Time:

Cmd saat tarih değiştirme

Ollydbg içerisine attığımız hedef program sistem saatini alırken kesme noktası belirleyip aldığı saatten sonra yapacağı işlemleri değiştirebiliriz. Örnek olarak deneme günü 30 gün olan demo version bir programı sistem saatini aldıktan sonra işlem yaptığı ofsetlerde müdahil olup , lisanslanmış gibi algılatabiliriz. Her zaman bahsettiğim gibi bütün programları sabit yöntemler ile değiştirip kıramayız. Sebebi ise bu yöntemler zamanla programcılar tarafından öğrenilir ve farklı kontroller sağlanarak , işlemler zorlaştırılır.

VB APIs:

Sadece visual basic kütüphanesini kullanan programlar için geçerli olan eventlerdir. Eğitim serisinin 3. bölümünde basic ile yazılmış bir program incelemiştik ve İntermodular call skısımlarından bu eventlere direk erişim ile kesme noktası sağlamıştık . 

Videolu Anlatım :

 

 

BİR CEVAP BIRAK

Lütfen bir yorum yazın!
Lütfen Adınızı Girin!