folder Tahribat.com Forumları
linefolder Assembly - Reverse Engineering
linefolder Reverse Engineering - .Net Programları



Reverse Engineering - .Net Programları

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    //Merhaba arkadaşlar bu yazımda .net programlarını üstünde nasıl reverse engineering işlemlerini yapabileceğimiz hemde .net ile program yazan arkadaşların önlemini almazlarsa başlarına neler gelebileceğini göstermek istedim.Aslında bununla ilgili daha önceden video çekmiştim fakat sadece 7 kişinin indirdiğini gördüm.Sanırım biraz üşeniyoruz videolara :) O yüzden biraz daha ayrıntı katıp döküman haline getirdim.Videoyuda assembly/reverse engineering bölümünde bulabilirsiniz.Bu dökümanları yazmam saatlerimi alıyor.O yüzden okuyan arkadaşlar yorumlarını eksik etmezlerse sevinirim.Destekleyen arkadaşlara ve döküman arşivine ekleyen reneye teşekkür ederim.//

    Arkadaşlar bu yazımda .net programları için reverse engineering göstereceğim. .Net programlarının yapısı farklı olduğu için diğer programlar gibi OllyDbg ile açıp Reverse Engineering ortamı sağlayamayız.Çünkü tüm .net uygulamaları derlendiklerinde MSIL  adı verilen ara dile dönüştürülürler.Bu da başka başka platformlara framework yükleyince programlarımızın sorunsuz çalışabilmesi anlamına gelir.MSIL kodlarını incelemek için ILDASM kullanabiliriz.

    Günümüzde özellikle .Net dillerinden C# diline yoğun ilgi bulunmaktadır.Bir sürü ticari amaçlı veya bedava dağıtılan programlar vs. Fakat piyasada gördüğüm kadarıyla ticari program satanlar dahil çoğu kişi .Net dilleriyle yazılmış uygulamaları bekleyen tehlikeden habersiz.MSIL isimli ara dilden bahsetmiştim.Bu ara dil avantajlı olabilir.Fakat çok büyük bir zaafı vardır.Eğer yazdığımız program için özel önlemler almadıysak üst seviye dil koduna kadar programımız açılabilir.Önlem alınmazsa programcı için bir felakete dönüşebilir.

    Korunmamış bir programın başına neler geldiğini görmeniz hem de bir .net programının üstünde nasıl reverse engineering yapabileceğimizi göstermek için C#’da basit bir program yazdım.Program sabit bir anahtar kod soruyor.Doğruysa devam ediyoruz değilse hata mesajı görüyoruz.

    Örnek programı buradan indirebilirsiniz.

    Gerekenler

    Lutz Roader's .NET Reflector
    IDA Pro Advanced 5.1 (Full sürüm bulun Trial sürümde .Net programları için destek verilmiyor)
    Flex HEX yada herhangi bir HEX editör

    Programa bir ön bakış atalım.Program unlock code istiyor.Yanlışsa hata mesajını veriyor.



    Şimdi “Lutz Roader's .NET Reflector” isimli programımızı açalım ve yukarıdaki menüden C#’ı seçtikten sonra File->Open’dan programımızı seçelim.Programımız listenin en altına eklenecek.



    Resimde gördüğünüz üzere programımız listeye eklendi ve ağacı açtık.Şimdi daha alt ağaçları açarak programdaki  fonksiyonların isimlerine bakarak bize gerekli olan yeri bulalım.Burada bir sürü fonksiyon var.Programda unclock code’u giriyoruz ve butona basıyoruz.Doğru girdiysek devam ediyor yanlış girdiysek hata mesajı alıyoruz.Kısacası herşey butona tıkladığımızda gerçekleşiyor.Bu yüzden button click fonksiyonunu arayacağız.

    Kısa bir araştırmadan sonra bulup üstüne çift tıklıyoruz ve korkunç manzara ile karşılaşıyoruz.



    Programın bütün kaynak kodları karşımızda.Resimdede gördüğünüz üzere textbox’daki değer “FireX” string’i ile karşılaştırılmış.Doğru ise “Unlocked!” mesaj penceresi çıkıyor ve program kapanıyor.Yanlış ise hata mesajı veriyor.

    “FireX” stringin’i aldıktan sonra yapılacak iş kalmıyor zaten.Bunun yerine programın seri numarasının doğru olup olmadığını kontrol eden bir fonksiyon düşünebiliriz.Buradaki kodları kopyalayıp kolayca bir keygen yapabiliriz.

    Şimdiki amacımız program üstünde reverse engineering yapmak.Butona bastığımız zaman sadece “FireX” stringinin değil, girdiğimiz tüm değerlerin kabul olmasını sağlayacağız.Bunun için IDA isimli programımızı açarak işe başlıyoruz.

    Yapacağımız adımlar karşımıza gelen mesaj penceresinde New butonuna tıklama ve karşımızdaki pencereden .Net tabını seçtikten sonra .Net Executable’ı seçmek.Oradanda dosyamızı seçiyoruz ve işlemlere devam ediyoruz.



    Programımız analiz edildikten sonra functions tabını seçip button1_Click fonksiyonuna tıklıyoruz.Hatırlarsanız .Net Reflectorde bu fonksiyon ismini görmüştük.Burası önemli.Örneğin programı .Net Reflectorde açtığımızda ve yaptığımız incelemeler sonucunda “regcode” fonksiyonu içerisinde programın seri nosunun hesaplandığını görürsek daha sonra düzenleme yapabilmek için IDA’da açacağımız için bu fonksiyon ismini hatırlamalıyız.

    button1_Click fonksiyonunu bulmuştuk şimdi fonksiyonu inceleyelim.Gördüğünüz üzere MSIL kodlarıyla birlikte şematik olarak karşımızda.



    Kodu incelediğimizde sonuca göre label’a atladığını görüyoruz. Yapmamız gereken o kısmı nop (hiçbirşey yapmadan geç) yaparak  geçmek.  “brtrue.s loc_361” seçiyoruz ve Hex View tabına geçiyoruz.



    Gördüğünüz üzere opcode’u 06 2D 14 bunu 00 00 00 yapacağız ve orası nop nop nop (üç byte yer kapladığı için) olacak.Orada 2D 14 seçili fakat soldaki 06’yıda dahil etmeliyiz 0A önceki kodun bitimini gösteriyor. Bu şekilde labela zıplama ihtimali kalmadan geçilecek.Şimdi hex editörümüzü açıp o bölgede değişiklik yapalım.



    Orayı bulmak için oradaki hexadecimal değerlerin olduğu satırın tamamını seçip hex editörümüzde aratalım ve doğru yerdemiyiz kontrol edelim.





    Oraya ulaştıktan sonra  ve kontrol ettikten sonra değişiklikleri yapıyoruz ve kaydediyoruz.Doğru yaptıysak ne girersek girelim “Unlocked!” yazacak.

    Bu konu hakkında anlatacaklarım bu kadar.Bu yazı,kullanılan örnek program,ekran görüntüleri tamamen -anonimleştirildi- aittir.Copy paste yapanlar emeğe saygı duyarlarsa sevinirim.Saygılarımla..

    -anonimleştirildi-


    λ
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AntiOksidan
    AntiOksidan's avatar
    Kayıt Tarihi: 03/Ekim/2005
    Erkek
    eline sağlık firex hojam.ota boka saol yazanlar buna da birşeyler yazmalı.doğru asm kitabını bitirmiş olsaydım bana da çok faydalı olcakdı ama ilerde inşallah : D .dökmanlar bölmne eklenr ordan okrk : )
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Herbokolog
    KaptaN
    KaptaN's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 30/Ağustos/2005
    Erkek
    eline koluna saglık güzel olmuş hojam sen bi sm dersi evrmeye başlasana burda
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    amele_2
    amele_2's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    hacım eline koluna sağlık

    boş vakit bulursam tüm dökümanlarını okuyacağım 


    Ardından yüz köpek havlamayan kurt, kurt sayılmaz..
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MaxDreameR
    MaxDreameR's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    ya bırak boşver napcaklar .net için reverse fln=)  almaya çalışcam tüm önlemleri bi toplayabilsk herşeyi ,) senin dökünmanların hepsine baştan bi göz atıcam fln iyi olucak inş=) tekrar saolasın hocam =)

    " ' "
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lekton
    lekton's avatar
    Kayıt Tarihi: 01/Ekim/2005
    Erkek

    Yazdıklarının hepsini register ediyorum.. ilgi alanım olmasada okuyorum..eline emegine saglık hjm...


    Dikkat: Hazine Ceyhan ırmağının kıyısında iki köprü arasında... kuru ağacın Dibinde...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Leustad
    Leustad's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek
    Saol hoja sen artık yakında kendini aşcan :D

    Acıma Yetime Döner Koyar Gö....
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Google
    Google's avatar
    Kayıt Tarihi: 26/Ağustos/2005
    Erkek
    hocam eline sağlık çok kaliteli yazıosun valla...

    Abra Kadabra
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek
    Sağolun arkadaşlar yorumlarınız için.Bu veya diğer yazılarım hakkında yada reverse engineering hakkında merak ettiğiniz sormak istediğiniz şeyler varsa sorularınızı alabilirim.

    λ
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ExcaliburTBT
    ExcaliburTBT's avatar
    Kayıt Tarihi: 06/Aralık/2005
    Erkek
    dot netin gülü firex (: T$k yine güsel bir döküman
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    efsun
    efsun's avatar
    Kayıt Tarihi: 28/Ağustos/2005
    Erkek
    abi kitap yazmayı düşündün mü bu konuda yazarsan  söle askerde okurum  :D

    Her türlü piping işleriniz itina ile yapılır.
Toplam Hit: 5306 Toplam Mesaj: 12