folder Tahribat.com Forumları
linefolder Assembly - Reverse Engineering
linefolder Reverse Engineering - Loader&Trainer



Reverse Engineering - Loader&Trainer

  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 sizlere daha önce patching hakkında ipuçları vermiştim.Bu yazımda loaderlardan bahsedeceğim.

    Gerekenler

    Ollydbg
    Masm 9 (Loader kaynak kodunu assemble etmek için)
    Loader kaynak kodu+Loader assemble edimiş+Deneme amaçlı program

    http://rapidshare.com/files/24344033/loader.rar.html

    Günümüzde programların kırılmasına önlem olarak programların çoğunda packer,protectorlar kullanılmakta.Bunlar dosyadaki verileri şifrelemekte ve pe header,IAT(Import adress table)’da değişiklikler yapmak,api redirection,atidebugging,crc check...  gibi yöntemler kullanmaktalar.Bu sebeple eğer cracker programı unpack etmeyi başaramamış.Fakat program memory’e açıldığında değişiklik yapacağı kilit noktaları biliyorsa adreslerini not alıp program çalışırken ekstra program vasıtasıyla o adrese erişip değiştirebilir.Packer programı memoryde unpack ettikten sonra o adreste değişiklik yapılır.Eğer unpack etmeden önce değişiklik yapılırsa o sırada veriler şifreli olduğundan program hata verecektir.

    Mesela packer o bölgeyi “abc” olarak şifreledi unpack ettiğinde “xyz” olarak gözüküyor.Eğer henüz o bölge şifreli yani “abc” iken değeri yazarsak.Packer onu memoryde decrypt ederken veriyide o şekilde okur ve karşımıza farklı bir değer çıkar.Bu nedenle loader ile o bölgeyi sürekli “xyz” oldumu kontrol ederiz.O değer alındığı an bizim değeri  oraya yapıştırırız ve program kırılmış olur.Loaderlar duruma göre 1 seferlik yada her seferinde çalıştırılmak zorunda kalınabilir.

    Örneğin program serial numberı kontrol ediyor ve duruma göre karar verip registrye kayıt giriyor.Eğer loader ile açar programı seri numarayı doğru girmiş gibi kandırırsak program registrye değerleri girmiş olur ve bir daha açmak zorunda kalmayız.Fakat program kısıtlıysa register olayı yoksa her seferinde loader ile açmak zorundayız.Çünkü loader ile yapılan değişiklikler geçicidir.Programı kapatıp açtığınızda yaptığınız değişiklikler gider ve program orjinal haliyle tekrar memorye yüklendiğinden yine eski haline döner.Örneğin Half-life2 oyununun loader ile açılması buna bir örnektir.Oyun konusuna gelmişken loader ve trainerlar kısmen aynı işi görürler.Trainer açar açmaz oraya veriyi yazar ve oyunda ne gibi değişiklikler yapılacaksa yapılır.Fakat loaderda memory kontrol edilir ve değer görülünce oraya yapıştırılır.Ayrıca loaderlara karşı crc check yöntemi kullanılmaktadır.Packerlarla ilgili ayrı bir konu olduğu için bu konu hakkında detaya inmeyeceğim.Fakat ona karşıda birçok teknik geliştirilmiştir.



    Kendi yazdığım loader programının kaynak kodlarını dahil ettim. 0’dan yazmaya uğraşmadan dilerseniz düzenleyip kullanabilirsiniz.Ayrıca deneme amaçlı yazdığım programıda yanına dahil ettim.Şimdi anlatmaya devam edersek öncelikle programın kilit noktasını buluyoruz ve oranın adresini alıyoruz.Bu sefer memorye kayıt yaptığımız için ollydbgdaki adresi aynen kaynak koda yazıyoruz.Adresimiz bu sefer RVA olacak.Yani resimdeki adres (4537F5) Daha sonra kaynak kodumuzdaki finddataya karşılaştırma yapması için verilerin doğruluğu açısından (75 0C) opcode’u yazıyoruz. Memdata bölümümüzede zıplama noktasını geçmek istediğimiz için nop(hiçbirşey yapmadan geç) koyuyoruz.Zıplama noktası 2 byte yer kapladığı için ve nop 1 byte yer kapladığı için 2 tane nop yani 90h değerini yerleştiriyoruz.Loaderı çalıştığımız zaman programı otomatik olarak açacak 1 sn açılış süresi vs gibi detayları bekledikten sonra işleme devam edecek.Önce programı çalıştıracak.1 sn bekleyecek(Açılış için geçen süre vs).Daha sonra memorydeki veriyle bizim yazdığımız veriyi kontrol edip orda olup olmadığına bakacak.Daha sonra programın kırılması amacıyla yazdığımız 90h,90h(nop,nop) verilerini oraya yapıştıracak.Eğer işlemi doğru yaptıysanız “registered” yanlış ise “error” mesaj pencereleri çıkacak.Bunu sadece programlarda değil.Oyunlara trainer maksatlı da kullanabilirsiniz.Dosyaya yaptığımız patching işlemini bu sefer memoryde yaptık.Fakat her bu işlemin geçici olduğundan ve detaylarından üstte bahsetmiştim.Bu konu hakkında anlatacaklarım bu kadar.

    Bu yazı,loader programı ve deneme amaçlı program olmak üzere tüm materyaller -anonimleştirildi- tarafından yazılmıştır.Lütfen kopyalayanlar emeğe saygı duysunlar.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
    yine arşivlik bi dökman.elne sağlık hoja
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek
    Saol kardes paylasim icin;güzel dokuman olmus.

    The king is bleeding.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Stifler
    Stifler's avatar
    Kayıt Tarihi: 22/Eylül/2003
    Erkek
    döktürmüş yine

    3 Hafta önce Sigara Öldürüyor diye okudum, sigarayı bıraktım. 2 hafta önce Alkol Öldürüyor diye okudum, Alkolü bıraktım. Geçenlerde Aşırı Seks öldürüyor diye okudum, okumayı bıraktım..
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    xursi
    xursi's avatar
    Kayıt Tarihi: 18/Eylül/2005
    Erkek

    Firex hocam klawyene sağlık. Gerçektende arşivlik döküman:D bakalım nasıl bişi yazmışsın indirelim:D

     

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    efsun
    efsun's avatar
    Kayıt Tarihi: 28/Ağustos/2005
    Erkek
    abi odc halde falan wer net kopunca okuyom hepsini burdan dar oluyo sıkı  yazıyonuz gözler görmüo :S

    Her türlü piping işleriniz itina ile yapılır.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Draeex
    Draeex's avatar
    Kayıt Tarihi: 04/Nisan/2006
    Erkek
    Devreleri yanmış insan.
    Ne yaptığını bilmiyor, hoş görün =)

    Tariqat Of Tahribat The Murid Draeex Tariqat Dj"i 2007©
Toplam Hit: 2970 Toplam Mesaj: 7