Tersine Mühendislik 4.1 [ Ollydbg inject ]

Tersine mühendislik serisinde Ollydbg ile ilgili olan konular 4. bölüm içerisinde detaylandırılacak. Tersine mühendislik 4.1 konusunda Ollydbg ile kod enjekte etmeyi anlatacağım. Böylece bu yazıda Ollydbg inject ve Ollydbg injection kullanımı konusunda bilgi sahibi olacağız.

Kod enjekte etmek ne için kullanılır? [Ollydbg injection]

Kod enjekte etmek programın açılış sırasında mesaj vermesi sağlanabilir. Yada çalışan aktif program akış sırasında başka işlemler yaptırabiliriz. Bu durumu oyun hilelerinde bulunan .dll inject gibi düşünebilirsiniz. Oyunun normal koşullarda barındırmayan kod bloklarını ekleyip yeni özellikler kazandırması gibi.

Ollydbg içerisinde programın başlangıç bölümü

Hedef programımızı ollydbg ile açtık ve başlangıç adresi yani EP(Enrty Point) noktası belirdi. Yapacağımız işlem program açılışında mesaj verdirmek olacak. Program başlamadan enjekte ettiğimiz kod bölümüne yönlendirip normal akışına bırakacağız. Bunun için kodların en altına inip boş kısımlar bulalım.Yazdığımız kodlara başlangıç adresinden sonra JMP komutu ile atlatıp tekrardan başlama noktasına yönlendireceğiz. Amacımız programın akışını değiştirmek olsaydı o konuma gidip yine aynı işlemler ile bunu yapabilirdik.

Ollydbg inject ve Ollydbg injection Kullanımı

Ollydbg inject

boş byte bölümlerini seçip edit kısmınandan ascii karakter olarak mesajlarımı girdim. Ardından mesaj için yazdığım adresleri PUSH komutu ile tutup MessageBoxA apisini çağırdım. Sonrasında jmp ep adresine götüreceğiz.

Enjekte ettiğimiz kodlar program açılışında bu şekilde bir uyarı verdi

Kodların tamamı :
PUSH 0
PUSH 00403341 ; ASCII “mesaj basligi”
PUSH 0040335A ; ASCII “webdeyazilim.com”
PUSH 0
CALL MessageBoxA
PUSH 004014FC
JMP 004012CD

Bu komutları Olly aracı yardımı ile enjekte ettik. Peki tersine mühendislik araçlarını kullanırken bir kez daha tersine düşünelim şimdi. 🙂 Bu enjekte yöntemi daha farklı olarak nerelerde kullanabiliriz ? Konuya hakim olan kullanıcılarımızın aklında şimşekler çaktığını tahmin edebiliyorum. Evet sağlıklı bireyseniz kendi alanınız ile alakalı yapılabilirliği tartışılır fikirler gelmiş olması gerekiyor. Yada çok zorlamayalım ve sizlere nerelerde kullanabileceğimiz konusunda biraz fikir vereyim :

  • Crack yapmış olduğunuz dosyaların açılışında bu mesajlama yöntemi kullanılabilir.
  • Portable program hazırladığınızda kullanılabilir.
  • Sadece mesaj kutusu çıkartmak için düşünmeyin . Windows platformunda kullanılabilen her türlü dll dosyası çağırılıp dosya okuma,yazma ,şifreleme  yada bir programlama dilinde bulunan ne kadar işlem varsa diyelim. Bu şekilde olly içerisinden enjekte edilebilir.

Son olarak : Eğer windows işletim sisteminde bulunan .exe uzantlı dosyalar bir başlangıç ve bitiş noktalarına sahip olmadan çalışabilseydi ollydbg programı ile sadece  “00000000”  olan bir proje açıp .exe dosyası kodlayabilirdik. Ama ne yazık ki bu sadece olly ile mümkün değil. Entropy dediğimiz düzgün yapıdan dağınık yapıya geçme isteği (sadece fizik derslerinde geçmiyor.)  .exe dosyalarının okunması için bir takım bilgiler gerekiyor.

Videolu anlatım talep doğrultusunda eklenecektir.

Photo of author

Mert Dirilik

Eğitimli insanlar topluma borçludurlar. Bir işin nasıl yapılabileceğini biliyorken bir başkasının yapamadığını görüp susmaları kendilerini yetiştiren o topluma ihanettir.

“Tersine Mühendislik 4.1 [ Ollydbg inject ]” üzerine 8 yorum

  1. merhaba bu programı kullanırken şöyle bir sorunum var yardımcı olabilir misiniz? deneemek istediğim programda dosya açmak için bir form daha açılıyor fakat istediğim dosyayı seçmek için seç yada iptal secenekleri aktif olmuyor bunu nasıl aşabilirim

    Cevapla
  2. Hocam yorumlarda program linki paylaşılmış 2 adet biri virüslü diğeri virüssüz bunları kullanmak güvenlimidir?
    Ben proğram ismini kalıcı bir şekilde değiştirmek istiyorum ama bir türlü beceremedim yardımlarınızı bekliyorum. Teşekkürler.

    Cevapla
    • Merhaba, göndermiş olduğun url adreslerindeki dosyaları inceledim. virüssüz olan dediğin ollynin modsuz hali. İkinci ve virüslü dediğin url içerisindeki dosyalarda elbette virüs bulunacaktır. Çünkü adam modlamış içerisine bir dünya araç eklemiş ve bu araçlar hem eski hemde bazı trojan,worm gibi dosyaların paketlenmesinde , editlenmesinde vs kullanıldığı için dosya imzaları yakalanıyor. Her aracın tek tek virüslü olup olmadığını test etmedim. Çünkü buna istesemde zaman bulamam ancak, site üzerinde bir kaç analiz yötemi paylaştık. Bu yöntem ile dosyaları manuel olarak analiz edebilirsin. Unutmayın her virüs tanısı sizin sisteminizi ele geçirecek yada sisteme zarar verecek tanılar değildir. Bunlar sadece toplanmış dosya imzalarının eşleşmesine dayalı raporlamalardır. ScanTime dediğimiz yöntemde dosya zararlı olabilir. Ancak Runtime dediğimiz çalışma anındaki hareketlerini inceleyerek gerçekten zararlı olup olmadığı tespit edilir. Bu işlem tam tersi içinde geçerlidir. Taramada temiz çıkan bir dosya çalışma anında yani Runtime’da zararlı işlemler gerçekleştirebilir.

      Cevapla
  3. Merhaba
    Bazı uygulamalar Sistem DLL lerinide programın kırılmaması için kullanabiliyorlar mı? Bir kaç örneğini gördüğüm için soruyorum. Ayrıca x64 için ollydbg haricinde debugger varmıdır. Artık çoğu uygulamalar benimde dahil olduğum x64 mimarisinde yazılıyorlar. Ayrıca size nasıl ulaşabiliriz.

    Cevapla
    • Merhaba ,
      Sistemde bulunan DLL dosyaları programı oluşturan parçacıklardır zaten , tersine mühendisliği engellemek adına yapılan çalışmaların önüne geçmek için elbette ki tekrardan sisteme dönüp bazı şeyler kullanmak gerekiyor. Şöyle bir örnek vereyim size mesela bir programı debugger edilmemesi için IsDebuggerPresent kernel32.dll içerisinde bulunan bir modüldür. Program açılışında bu değeri kontrol eder ve sonuç döndürür eğer programı debug ediyorsanız direk çıkışa atacaktır. Ayrıca programın kullanıdığı bütün şifreleme özellikleri sistemin bir parçası olduğundan serial avlama işleminde lisans sistemini inceleyip nasıl oluştuğu hakkında mantık yürütürsek hangi modülleri kullandığını tespit edip yakayabiliyoruz.

      Son sorunuza gelecek olursak ben tersine mühendislik işlemlerinde xp sp3 sistem kullanıyorum .X64 bit programlar için ise win7 tavsiyemdir. DotNet kütüphanesine ait programlar için tersine mühendislik yapacaksanız zaten seçenekler azalıyor. Ancak C++ kütüphanesi kullanan programlar (c++,delphi 7, vb6) ollynin çeşitli versiyonlarında açılıyor.

      İletişim için [email protected] adresinden ulaşabilirsiniz.

      Cevapla

Yorum yapın