HACKER - Reverse Engineering - Visual Basic P-Code
  Ana Sayfa
  Ziyaretçi defteri
  HACKER OLAMAK İSTİYENLER
  Başkaların Bilgisayarını Haclemek istiyenler
  Hackerlerin Kullandığı Programlar
  HABERLER
  Hack-Güvenlik
  => Kişisel Güvenlik ve Korunma Yöntemleri
  => Wireless Şifresi Kırma
  => Domain Adınızı Güncellemeyi Unutursanız...
  => Bir Rootkit Hikayesi...
  => RootKit Nedir ve Sistemden Nasıl Temizlenir?
  => Bruteforce Yöntemi İle Şifre Kırma Hesaplaması
  => Sosyal Mühendislik ve Senaryolar
  => Detaylarıyla Denial Of Service
  => N-Keylogger v1.3 ve Kullanımı
  => Access, Mssql ve Mysql ile Sql Injection
  => Soru-Cevap ile Hack Nedir, Nasıl Yapılır?
  => CSRF nedir, Nasıl yapılır?
  => Sql Server Şifreleri Nasıl Saklar?
  => PGP ye Pratik Giriş, PGP Kullanımı ve E-mail Güvenliği
  => Sanal Mağazacılık Ve Sanal Alışveriş
  => Veritabanı Saldırıları
  => Reverse Engineering - Visual Basic P-Code
  => Efkan Forum 2 - Database Yolu ile Hackleme Yöntemi 2
  => Efkan Forum - Database Yolu ile Hackleme Yöntemi
  => Kredi Kartları Güvenliği ve Carding Hakkında
  => Sosyal Mühendislik Hakkında
  => İnternet Bankacılığı ve Güvenliği
  => Reverse Engineering - Self Modifying
  => Reverse Engineering - Hedef Bölge
  => Reverse Engineering - Keygenler
  => Reverse Engineering - .Net Programları
  => Reverse Engineering - DeDe & VBDecompiler
  => Telnet ile Mailbox Temizlemek
  => Port Listesi
  => Virüs Çeşitleri
  => Proxy, Firewall ve kurulumu
  => Kredi Kartlarının Onaylanması ve Check Digit Algoritması
  => Exploit Nedir, Sistemlere Sızma Yolları
  => Exploitler Nedir, Nereden Bulunur ve Nasıl Kullanılır?
  => Advanced Coding / Buffer Overflow Exploit -3
  => Advanced Coding / Buffer Overflow Exploit -2
  => Advanced Coding / Buffer Overflow Exploit -1
  Windows Püfleri
  Arşiv
  İletişim

Reverse Engineering - Visual Basic P-Code

 

Merhaba arkadaşlar. Bu yazımda P-Code ile derlenmiş Visual Basic uygulamaları üstünde çalışmaktan bahsedeceğim. Visual Basic’de bilindiği üzere iki çeşit derleme tipi var.Native ve P-Code.Native bildik düz derleme biçimi.Native olarak derlenmiş programları debuggerımız (Ollydbg vs) disassembler eder ve üzerinde sorunsuzca çalışabiliriz.Fakat P-Code ile derlenmiş bir uygulamayı Ollydbg ile açtığımızda bir miktar asm kodu ve geniş veri alanları görürüz.P-Code programlama dilleriyle alakasız,kısaltma amacıyla konulan ve çalışma zamanında yorumlayıcı tarafından yorumlanan ara koddur.Avantajı programın boyutunun küçülmesini sağlaması.Fakat native’e göre performans düşüyor.Sebebi ara dilden çevrilirken vakit kaybedilmesi.

Asıl konumuza gelirsek.P-Code derlenmiş bir uygulamada Ollydbg işimizi görmüyor.Bu sebeple VB P-Code uygulamalarına özel bir debugger olan Wktvbdebugger kullanmamız gerek.

Gerekenler
Wktvbdebugger
VB Decompiler Lite/Pro (Lite yeterli)
Flexhex veya herhangi bir hex editör.

Örnek programı da buradan indirebilirsiniz.

Öncelikle örnek programımıza önbakış atarsak; Şifreye göre diğer forma geçmemizi sağlayan basit bir uygulama.Şifreyi yanlış girincede “Yanlış şifre!” mesaj penceresi çıkıyor.

Not: Programın olduğu klasörde debugger için MSVBVM60.DLL bulunması gerekiyor.

Programımızı debugger ile açmadan önce VB decompiler lite ile bir gözatalım ve bize gereken yerin/yerlerin adreslerini alalım.

Butona tıklanınca gerçekleşen olayı seçtiğimizde resimde gördüğünüz üzere bir sürü garip kod bizi karşılayacak.Bunlar kısaltma amacıyla konulmuş ve hepsinin birer karşılığı var.Örneğin BranchF ile koşula göre belirli adrese zıplanıyor.Şifre yanlışsa zıplanarak program akışına devam ediliyor.

Reverse Engineering - Visual Basic P-Code

 

Şimdi command1_click’in en başındaki P-Code’un adresini not edelim.Bu adrese debuggerda breakpoint koyacağız ve orayı analiz edeceğiz. Adresi not ettiysek VB Decompiler’ı kapatalım ve debuggerı açalım.Programı seçelim ve üstteki menüden run’a basarak çalıştıralım.

Debuggerda kodların gözükeceği siyah ekranda sağ tıklayıp show bpx list’i seçin ve çıkan pencerede not aldığınız adresi yazıp add butonuna basarak ekleyin.Artık butona tıkladığımızda program akışı orada duraklayacak ve orayı adım adım ilerleyerek analiz etmiş olacağız.KısayoluOllydbg’dakiyle aynı (F8) Breakpoint’i koyduysak kafamızdan şifre sallayıp butona basalım ve olaya girelim.

Reverse Engineering - Visual Basic P-Code

 

Butona tıkladıktan sonra program akışı breakpoint koyduğumuz noktada duraklayacak ve karşımıza gördüğünüz küçük ekranda kodlar gelmiş olacak.Dilerseniz memory dump butonuna basıp bulunduğunuz adresi girip oradaki kodların assembly karşılıklarını da görebilirsiniz.Hatta dump edebilir yada text olarak ta kaydedebilirsiniz.



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 FireX 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..

 

Bugün 32 ziyaretçi (33 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol