Reverse Engineering - Patching

Daha sonra winhex programını açıyoruz(Gerçek adresini almak için kolaylık açısından VA ‘yi bulmak için matematiksel işlemler gerekiyor.Olly RVA olarak gösteriyor) Kopyaladığımız değerleri Winhex’de menüdeki “search->find hex values” kısmına yapıştırıyoruz.Hex değerlerinin arasındaki boşlukları silerek aratmayı unutmuyoruz!

Adrese konumlandığımızda offset değerini not alıyoruz ve başka bir yerde daha işimiz varsa işlemleri tekrarlıyoruz.

Ben kolaylık olsun diye assemblyde kısa bir patch programı yazdım ve kodlarınıda sizlerle paylaşmak istedim.Kaynak dosyada iki tane patchlenen yer göreceksiniz.İlki register olayı,ikinciside “abc” olan şifreyi “asd” olarak değiştiriyor.İkincisi gereksiz birşey.Fakat çoklu kullanım açısından size yardımcı olsun diye koymayı uygun gördüm.Ayrıca delphide yazdığım deneme amaçlı programı indirip deneyebilirsiniz.

Şimdi patch programımızın kaynak kodlarında adresi girdikten sonra yazacağımız verileri patchdata olarak tanımladığımız yerede yazacağımız verileri binary olarak koymayı unutmuyoruz.Örneğin nop’un opcode’u 90 ise buraya 90 değil binary karşılığını yazacağız.Gözükmeyen bir karakter.Mesela 90 90 değeriyle değiştirecektir.Winhexte 90 90 hex değerini aratıp sağ taraftan binary değerini kopyalayıp programın kaynak kodundaki patchdata bölümüne kopyalarsak sorunsuzca çevirmeye gerek kalmadan çalışacaktır.Programın kaynak kodunu biraz irdelerseniz anlayacağınızdan eminim.Bende açıklamalar yerleştirdim kaynak koda.Ayrıca hata yapma olasılığına karşı dosyanın yedeğinide alıyor.

Tarih:
Hit: 4184
Yazar: FireX

Taglar: reverse engineering - patching


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.