• Eğitim sadece okula gitmek ve bir derece kazanmakla ilgili değildir. Bilginizi genişletmek ve yaşam hakkındaki gerçeği almakla ilgilidir. – Shakuntala Devi

Her fonksiyon arasında 0xCC nedir?

Kemal Ayhan

Administrator
Yönetici
Öncelikle kötü ingilizcem için özür dilerim.

0xCC komutu hakkında bildiklerim bir kesme noktası talimatıdır.

Ancak x64 ikili dosyasını gördüğümde, her işlev birden fazla 0xCC talimatıyla ayrılıyor.

X64'ün 0xCC talimatını yalnızca kesme noktası olarak değil aynı zamanda işlevin serperatörü olarak kullandığını düşünüyorum.

Peki bu durumda 0xCC komutu ne anlama geliyor? Eğer bu komut gerçekten fonksiyonun ayırıcısı anlamına geliyorsa, her zaman her fonksiyonun arasına en az 1 tek 0xCC komutu yerleştiriliyor mu? (en azından kod bölümündeki fonksiyona giden kod bölümünü arayın)

Bu soruyu sormamın nedeni, kodumu her ikilinin çağrı talimatını otomatik olarak doğrulayacak şekilde yapmak istemem, ancak bazı çağrı talimatlarının geçersiz işlevi işaret etmesidir. (bu geçersiz işlevler paketleyici tarafından yapılmıştır)

Düşündüğüm şey, x64 ikili dosyasında her işlev 0xCC ile ayrılmışsa (call_address - 1) 0xCC olmalıdır ve bu benim doğrulama koşulumdan biri olabilir.

Umarım rehberiniz için. Teşekkürler.
 
Derleyiciler, optimizasyon sürecinin bir parçası olarak işlev adreslerini bazı sınırlara hizalayabilir.

Bunu yaparken, işlevler arasındaki boşluk, programın akışında bir sorun olması durumunda yanlışlıkla kod olarak çalıştırılabilecek doldurma baytlarıyla doldurulur.

En yaygın olanları, daha kolay hata ayıklama 0xcciçin derleme ikili dosyalarında hata ayıklama ve bir hata ayıklayıcının eklenmesinin beklenmediği 0x00sürüm derlemeleridir .
 
Geri
Üst