Reverse Engineering - Visual Basic P-Code

Şimdi F8 ile ilerleyip programı analiz edelim.İlerlerken stack ekranındaki değişiklikler göze çarpacak,burası bizim için önemli.String işlemleri gördüğünüz üzere göz önünde ve şifreyide burada görmüş oluyoruz.Fakat bu her zaman bu kadar kolay olmayabilir.Orada gördüğünüz p-codelar hakkında daha fazla bilgi sahibi olmanız gerekebilir veya assembly’e çevrilmiş şekillerinde memory viewer’dan inceleyebilirsiniz. Şifreyi girin ve diğer forma geçin.

Şimdi diğer olaya geçelim.Diyelim ki şifreyi bulmak yerine programı patchleme yoluna gittik.Yapacağımız şifrenin doğru olup olmadığına göre zıplayan zıplama komutunda değişiklik yapmak.Öncelikle debuggerda zıplama noktasının adresini alıyoruz.Debuggerda 41028F olarak geçecek.Bu RVA cinsinden değeridir.400000 imagebase değeri ekleniyor.Hex editörümüzde ise 0’dan başlıyor.41028F’den 400000 çıkartarak 1028F olan adresimizi bulup oraya konumlanacağız yada dilerseniz.O bölgenin hexadecimal değerlerini not edip hex editörünüzde aratıp oraya da ulaşabilirsiniz.

Hex editörümüzde adresimize konumlanıyoruz ve 1C E7 00’ın olduğu bölüme geliyoruz.E7 BranchF'in opcodu, 1C ise ne kadar ilerleyeceğini belirleyen hexadecimal değer.Hatırlarsanız şifre yanlışsa zıplıyordu.Bizim yapacağımız 1Cyi 04 ile değiştirip bir sonraki komuta zıplaması(!?) ve program akışına devam etmesi.04 yapmamızın sebebi kendisinin 3 byte yer kaplaması ve 4.de zaten diğer komutun başlangıcı oluyor.Bu şekilde kaydedersek şifre ne olursa olsun butona basınca diğer forma geçecek.

Bu konu hakkında anlatacaklarım bu kadar.Bu yazı,ekran görüntüleri,örnek program tamamen -anonimleştirildi- tarafından hazırlanmıştır. Umarım kopyalayanlar emeğe saygı duyarlar(Her ne kadar bu satırı kopyalamadan yazılarımı dağıtanlar olduğunu bilsemde).Saygılarımla..

Tarih:
Hit: 7095
Yazar: anonim6918524

Taglar: reverse engineering - visual basic p-code


Yorumlar


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