Soru sorabilmek için 300 puana ulaşmanız gerekmektedir.
Sitemizi ilk defa ziyaret ediyorsun . Bizi onurlandırdın , umarım sana kaliteli bilgiler sunabiliriz.
0 oy
14 gösterim
Bilgisayar kategorisinde (8.7k puan) sordu


Diyelim ki hedef süreçteki MessageBoxA apisini kancalayacağız ve bunu yönlendirme’ye kendi istediğimiz argümanları geçirip öyle çağırmak istiyoruz. Bu işlemi yonlendirme fonksiyonumumuzun içinde yapmamız sonucu sonsuz yinelemeye girecek ve durum stack taşmasıyla sonuçlanacaktır. MessageBoxA yı yönlendirme fonksiyonumuz içinden çıkartabiliriz ama eğer MessageBoxA’ya erişen başka iş parçacıkları varsa bu bir yarış durumuna neden olacak ve muhtemelen programın çökmesiyle sonuçlanacaktır. Bu gibi sorunları engellemek için şöyle bir şey yapacağız; Öncelikle hedef süreçteki MessageBoxA apisinin ilk 5 byte’nı depolayacağız, ihtiyaç durumunda kancasız olan bu komutları çalıştırabiliriz.

Bir örnek:
image
İlk 5 byte ekstrem talimatlar olmadığı sürece yürütmede bir problem çıkmayacaktır. Çözmemiz gereken başka bir problem de fonksiyonun ilk 5 byte’nın tüm komut setini içermemesi. Örnekte fonksiyonun ilk 5 byte 3 talimattan oluşmakta.

mov edi, edi; 
push ebp; 
mov ebp, esp


Eğer programın ilk talimatı 10 byte olsaydı ve biz 5 bytelik alan depolamış olsaydık, bu sefer çağrı eksik talimatlar ile yürütülmeye çalışacak ve bom! Bunu engellemek için bütün talimatların uzunluğunu kontrol edebileceğimiz bir disassembler kullanacağız. Senaryodaki en iyi durum ilk talimatların tam olarak 5 byte tutmasıdır, en kötü durum da ise ilk set için 4 byte ikinci komut seti için 16 (x86 komut setinin maksimum uzunluğu dahilinde) byte’lık daha yer gerekecek,  4 + 16 = 20 byte ve 5 byte’da kanca işlevinde geri gitmek için yani toplamda 25 byte’lik bir alana ihtiyacımız olacak. 

image

Öncelikle kancalanan fonksiyonu yönlendirebileceğimiz bir yonlendirici fonksiyon tanımlamamız gerekiyor. Bu hedefle aynı çağrı kuralı, dönüş tipi ve parametrelere sahip olacak. Örneğimizde kancalanan hedef MessageBoxA fonksiyonun parametrelerini çekip ekrana print edecek bir işlev yazacağız., print işleminden sonra Asıl MessageBoxA’nın yedeklediğimiz eskiMessageBoxA yı çağırarak normal bir çağrı işlevini de tamamlamış olacağız.

image

eskiMessageBox kanca işlevinin trambolinini depolayacağı 25 byte’lık bir alana işaret eden bir tür olarak tanımlıyoruz..

image

Kanca fonksiyonu için aşağıdaki parametreleri tanımlayıp kullanacağız.

1-) isim = Kanca fonksiyonunun ismi.
2-) dll    = Hedef fonksiyonun dll’si.
3-) yonlendir = Yönlendirici fonksiyona bir gösterici. (yeniMessageBoxA)
4-) original    = Trambolinin depolanacağı 25 byte’lık bir alana işaret eden işaretçi.
5-) uzunluk   = Tramboline depolanan talimatların byte değerini tutan bir işaretçi.

image

Kanca fonksiyonunun içinde hedef fonksiyonun adresini alacağız, her talimatın uzunluğunu öğrenmek için bir disassembler ek kütüphanesini projeye dahil edeceğiz. hde32_disasm’ı parametrenin işaret ettiği talimatların uzunluğunu döndürür.

<img src="" style='bac

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

İlgili sorular

+1 oy
1 cevap 19 gösterim
0 oy
1 cevap 9 gösterim
0 oy
1 cevap 234 gösterim

168 soru

102 cevap

10 yorum

206 üye

-delphi-rio-crack acik-port aireplay-ng akinci-yazilimi all-of-domain-attack android-mantigi-nasil android-nasil-yazilir android-nedir android-yazilim api-kancalama api-nasil-alinir api-nedir api-yakalama aselsan-yazilim assembly-resolve-nedir audit-guvenlik-denetim-araci bapi-kurulumu benzocaine bilgisayar-denetim-araci bilincalti-nedir blackhat-seo burpsuite-nedir-nasil-kullanilir busbar buy calistir-komutlari cmd-attrib cmd-delphi cmd-komutlari command-komutlari delphi delphi-alma delphi-api delphi-apk-muzik delphi-cikarilabilir-usb delphi-community-edition-download delphi-firemonkey-source delphi-fmx delphi-get delphi-iletisim-kurma delphi-image delphi-ip delphi-map-service delphi-minecraft delphi-music delphi-muzik-gomme-yerlestirme delphi-pascal delphi-removable-list delphi-rio-download delphi-rio-indir delphi-send delphi-source delphi-usb-baglanti-kurma delphi-usb-contact delphi-usb-list delphi-uygulama-izinleri devaudit-nedir domain-saldiri dos-attrib doscommand-delphi dress elmastan-saglam-madde firemonkey fmx godaddy-indirim godaddy-kupon godaddy-yenileme gunes-sistemi-tess hayvan-robotlar herve html-agility-pack html-cookie html-get html-veri-cekme iha-yazilimi interposer-class-nedir-nasil-kullanilir kuzgun-yazilim leger lidocaine misir-robot nano-robotlar nasa-tess patlamis-misir-robotu port-kapatma process-forest-forensics-tool pubg-banned python-os-process-parameter seo-analizi seo-spam-nedir-kurtulma siha-yazilimi sinergoloji-nedir sinyal-yansitici-boya-nedir-nerelerde-kullanilir-nerelerde-bulunur url-kısaltıcı-kullanımı uses-permissions-delphi uydu-tess wifi-card wifi-dos-attack wifi-kart-hazirlama wifi-saldiri wifi-saldiri-mantigi wifi-saldiri-ogrenme
5 Online
0 Member And 5 Guest
Today Visits : 1173
Yesterday Visits : 1736
All Visits : 407349
...