Tahribat.Com - Döküman : Reverse Engineering - Loader&Trainer
 
Tahribat.com Döküman Arşivi > Cracking - Reverse Engineering > Reverse Engineering - Loader&Trainer - Yazar : FireX

Reverse Engineering - Loader&Trainer (Sayfa:1)

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ı Tahribat.Com Dosya Arşivinden veya buraya tıklayarak indirebilirsiniz.

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 FireX tarafından yazılmıştır.Lütfen kopyalayanlar emeğe saygı duysunlar.Saygılarımla..

FireX

[1]

Okunma sayısı :1702


Sözlük

Byte
Cracker
Data
Doku
Port

En Çok okunanlar
Radmin Ile Bilgisayarlara
Code Cracking‘e Gir
Adsl Account Calmak
Sc Keylogger Ve Kullanımı
MSN Messenger Püf Noktala
Beast 2.0.7 Trojan - Tuto
Uçan Balon Yapımı
Php Dersi 1
Programların Içindeki Sür
Port Listesi

 
Son 10 Döküman
Cracking - WinRar‘ın 40 G...
Nvidia Optimus Teknolojis...
JQuery Mobile
USB Bellekte Partition Ol...
MacOS X İçin Kullanıcı Şi...
C ile MySQL Programlama
Online Alışveriş Sırasınd...
C# ile FTP Üzerinde Dosya...
Geri Dönüşümsüz Disk Temi...
IDM'de Cookie Kullanımı
2001-2012 © Tahribat Group - Her Hakkı Saklıdır. - ● Gizlilik İlkeleri ● Kullanım Koşulları ● İletişim