Tersine mühendislik serisinin 6. bölümünde IDA PRO nasıl kullanılır? Hedef programın lisans fonksiyonları nelerdir? Bu verilerin nerede nasıl oluştuğunu inceleyeceğiz.
Konu Başlıkları
IDA PRO Nedir?
IDA PRO, Hex-Rays Firması tarafından geliştirilen bir disassembler aracıdır. Windows kütüphanesine doğrudan bağlı dosyaları analiz etmekte kullanılır. Ağaçlandırma özelliği sayesinde karmaşık kodları daha anlaşılabilir hale getirir ve sizlere fonksiyonlar arası geçişlerin kontrollerin detaylı olarak görünümünü sağlar.
Ağaçlandırma özelliğini en iyi kullanan yazılım IDA diyebilirim. Aracın temel kullanım amacı aslında geniştir. Malware analizlerinde ve tersine mühendislik alanında sıkça kullanılan bu araç küçük değişikler ile patch işlemi yapmanızı sağlar. Exe dosyaları ve DLL dosyaları üzerindede rahatça işlem yapılabilir.
IDA PRO Patch İşlemi :
Kullanılan Araçlar :
Derste kullanacağımız araçları edindiğinizi varsayıyorum. Hedef programımızı hem patch edeceğiz hem ida pro hakkında genel ve giriş düzeyinde bir bilgi edineceğiz.
Adım 1 : Hedef Programı Tanımak
Hedef programımızın arayüzünde incelemeler yapıyoruz ve bir tür hata mesajı aramamız gerekiyor. Resimdeki gibi bir key deniyoruz programımıza.
Rasgele bir key salladığımızda bize “Bad boy” şeklinde bir uyarı veriyor bunu bir yere not alalım bize gerek olacak.
Adım 2 : Programın Yazıldığı Dil
Hedef programda herhangi bir koruma (obfuscate / pack) işlemi olup olmadığını kontrol etmek. Obfuscator ve paketlemeler hakkında bilgi sahibi değilseniz, tersine mühendislik 1. bölümüne göz atabilirsiniz burada detaylı olarak obfuscatorler hakkında bilgi vermiştik.
DIE bize programın hangi dilde yazılıdığını ve üzerindeki paketlemelerin neler olduğunu gösteriyor. Compiler yazan bölüm bize MASM32 ile derlendiğini söylüyor. Eğer herhangi bir paketleme olsaydı bize Protector şeklinde bir satır daha sunacaktı.
Adım 3 : IDA Pro Genel Bilgiler
IDA Pro 7.0 x86 sürümünü açıyorum.
IDA açıldıktan sonra programımızı seçip başlatıyoruz ve böyle bir ekran ile karşılacağız. Fonksiyonlar alanında program içerisinde kullanılmış olan isimleri görüyoruz. Bold ve kırmızı renkli alanlar sistemden çağırılan apilerdir. Bu fonksiyonlar içerisinden sistemdeki dll dosyalarına ulaşır ve belirli parametre göndererek veya alarak iletişim kurar.
Windows işletim sistemimizde bulunan dll dosyaları (örnek : kernelbase.dll )içerisinden kullanılan bazı apiler ve anlamlarına bakalım. Eğer önceden bu apileri kullanmışsanız , nerede arama yapacağınızı daha iyi anlamış olacaksınız. Sadece temel ve basit olan bir kaç tanesini öğrenelim ne işe yarıyorlar? Resimde kullanılanlara bakarsak ; lstrlen, lstrcmpA,ExitProcess , IsDebuggerPresent apilerine erişilmiş ve işlem yapılmış hemen anlamlarına bakalım.
lstrlen : Kelimenin toplam uzunluğunu alır ve integer değer olarak dönderir. Örnek: int uzunluk= strlen(“webdeyazilim”); buradaki kodda uzunluk değerimiz 12 olarak dönecek “webdeyazilim” kelimesi 12 harften oluşuyor.
lstrcmpA : Karşılaştırma yapmaya yarar. 2 farklı değeri karşılaştırır. Programa girmiş olduğumuz 123 değerini orjinal lisans kodu ile karşılaştırma yapar.
ExitProcess : Programın kapatılmasını sağlar.
IsDebuggerPresent : Programın debug edip edilmediğine bakar. Ollydbg içerisinde programı açıyorsak buradaki kısım debug edildiğine dair bir değer döndürür. Bu kısımı video ile daha net bir şekilde anlattım.
Programımızın döndürdüğü “Bad boy” mesajını yukarıda görmüştük yanlış bir lisans kodu girildiğinde buton üzerindeki yazı değişiyordu. Şimdi bu kelimeyi ida içerisinde arayalım ve hangi fonksiyon içerisinde olduğunu bulalım. Programda herhangi bir paketleme olmadığı için bu string bilgileri açık olarak yazmakta. Eğer derleme şekli farklı olsaydı bu stringleri göremeyip diğer yollara başvurmamız gerekebilirdi. Başlangıç seviyesinde olduğumuz için belirli bir basitlikte gidiyoruz. Devam ediyoruz.
Bu kısımdan sonra açılan pencere ayarlarım bu şekilde olacak :
Aramanın ardından bizi özel bir pencereye alacak ve sonuçları listeleyecek. Bizim için önemli olan fonksiyon içerisinde bir text verisini bulmak olacak. Birden fazla sonuç olabilir. Belki yüzlerce yerde bu text verisini görebilirsiniz. Önemli olan fonksiyonun işleyişini bakarak doğru yerde olup olmadığımızı kontol etmek.
DialogFunc içerisinde “Bad boy” yazısının geçtiğini görüyoruz. Detaylı bir şekilde görmek için çift tıklayarak fonksiyona gidiyorum.
IDA programın fonksiyon akışını resimde görüldüğü gibi ağaçlandırma sistemiyle görselleştirecek. Arattığımız mesaj fonksiyon içerisindeki akış şeması bu şekildeymiş. İyi ve kötü mesajdan önce görmüş olduğunuz üst kısımda kanallar ikiye ayrılıyor. Bu kısım aslında bir tür karar verme kısmı. Blokların üst kısmında kodların yapmış olduğu işlemler sonucunda bizi iyi veya kötü mesaja atacak ayrılma bölümü var . Şimdi bu bölümü incelediğimizde direk olarak “Good job” bölümüne atlama yapabiliriz. Yani girdiğimiz serial doğru veya yanlış sonuç ne olursa olsun bizi iyi mesaja göndermesi için bir atlama yapalım. Bu düzenlemeyi Olly kullanarak veya Ida içerisinden yapabiliriz. Ben genelde Ollydbg kullanarak yapıyorum. Konu sonunda videolu anlatım ile her ikisininde nasıl yapıldığını gösterdim.
Ida ile değiştirelim ilk önce :
Karar noktasına tıkladıktan sonra yani “jnz short good” tıklıyorum ve Assemble diyorum. Ben bloklara isim verdiğim için bende good ve bad şeklinde blok isimleri değiştirilmiş durumda. Videoda bu kısımın nasıl değiştirildiğini detaylı olarak gösterdim.
İşlem bittikten sonra Edit > Patch Program > Apply patches to input file.. kısmından .exe uzantılı dosyamızı kaydediyoruz. Artık hedef programımız hangi veriyi alırsa alsın bizi olumlu mesaja yönlendirecek.
Ollydbg kullanarak aynı adrese “0x401142” değerine giderek aynı bölüme ulaşabiliriz. “0x” adresini yazdıktan sonra karar verme bloğunun üzerinde “loc_401142” şeklinde bir değer mevcut. Değerin sadece sayısal kısmının ilk başına “0x” koyarak Ollydbg karşılığını bulabiliyoruz.
IDA içerisinde yapmış olduğumuz aynı işlemi burada BP(Break Point) koyduğum adresten sonra ilk sıçrama adresini NOP olarak değiştirdim ve olumlu mesaj adresine atlattım. Fonksiyon akışına göre yazılan şifre doğru ise atlama olmayacak. Yazılan şifre yanlış ise atlama olacak. IDA içerisinde akış bilgisini öğrenip burada işlem yaptık. Dilerseniz direk Ollydbg ilede Graph özelliğini kullanrak aynı görselleştirmeye ulaşmak mümkündür. Ancak IDA kadar detaylı değildir.
Bulduğumuz adrese gidip “G” tuşuna basarak yada fareden sağ tk.> Graph sekmesinden bu bölüme ulaşabiliyoruz.
merhaba crackits ile crackme.exe dosyalari nerden indirebilirim megzn den silinmiş
Hocam Discord Adresiniz varmıdır sohbet etmek isteriz telegrama geldik ama yoksunuz
bu kadar mı yani kullanımı
videolu anlatımlar youtube’dan kaldırıldı. yetişen aldı yetişmeyen başka bahara kaldı maalesef. 🙁
Herşey için teşekkürler. Bir dosyadan watermark (filigran) kaldırmak ile ilgili bir videonuz mevcut mu acaba?
youtube kanalı kapatınca arşiv gitti maalesef.
Merhaba Mert hocam usb dongle üzerine takılan smart kart ile korunan tasarım programı kullanıyorum bunun üzerinde çalışma yapabilir miyiz ?
iyi çalışmalar, öncelikle çalışmanız için teşekkür ederim. MEGA’dan indirdiğim dosyayı açtıktan sonra tools çıkarırken easyvideocutter adlı bir çok dosya oluşturuyor bu normal midir? Ayrıca bir programın lisanslanmasını ve bir video ile anlatılmasını istiyorum tabiki emek karşılığında, mümkünse mail bekliyorum. İyi çalışmalar.
reis IDA Çalışmıyor exe açıyorum opps internet hatası veriyor
Bunun bir çok sebebi olabilir. Biraz daha detay verebilirseniz yardımcı olabilirim.
Banada benzer bir destek için mail atabilir misiniz?
Konu hakkında bilgi vermeniz gerekmekte.
Mwehaba Konu gerçekten Çok güzel olmuş
elimde birkatane hwid isteyen exe var unpack edilip bypass yapılması lazım
ücret karşılıgında yardımcı olabilirmisiniz acaba
Mail adresinize dönüş yapılmıştır.