Ana sayfa Tersine Mühendislik Tersine Mühendislik 4.1

Tersine Mühendislik 4.1 [ Ollydbg inject ]

2

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.

GENEL DEĞERLENDİRME
Tersine Mühendislik 4.1 [Ollydbg İnject]
Önceki makaleiPhone Kestirmeler Uygulaması
Sonraki makaleinstagram Bağlantıyı Kopyalama Yok! Nasıl Açılır?
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.

2 Yorum

  1. 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.

    • 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.

BİR CEVAP BIRAK

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