Keresés

Új hozzászólás Aktív témák

  • ddekany

    veterán

    válasz Phvhun #26 üzenetére

    A C/C++ nyelv nagyban épít arra, hogy a CPU számára a memória címek csupán számok (pointer aritmetika, stb)... ezért lehetetlen minden lehetséges balesetre automatikus ellenőrzést írni, a tömb túlindexelés is csak bizonyos esetekben detektálható. A Java ill. C# viszont olyan nyelvek, amik eleve úgy lettek tervezve, hogy ilyen, mint memória cím (meg kontrollálatlan kasztolás) nincs. Sőt, a gépi kód amire lefordulnak (ami nem x86, hanem Java bytecode ill. CIL) sem címekben gondolkodik. Persze ettől még ezek sem sérthetetlenek, mert pl. lehet hiba a ezeket futtató C/C++-ben írt virtuális gép megvalósításában (bár ez azért valószínűleg hamar kiderül és javítva lesz), ill. azokban a modulokban amiket hívhatsz a programodból de még nem írtak át ilyen biztonságos nyelvekre... Aztán persze, a memória telibehányása (ami pl. Java és C#-ben nincs) csak egy a betörési módszerek közül, bár kétségtelenül messze a legnépszerűbb.

  • P.H.

    senior tag

    válasz Phvhun #26 üzenetére

    Tökéletesen egyetértve mindazzal, amit ddekany leírt, kiegészíteném, hogy volt ilyen kézzelfogható próbálkozás is, pl. a 286-386 idején az Intel részéről, csak a hardware-kívánalmai meghaladták sokszorosan a kor teljesítőképességét (hardware-es fordítás, multi-chip megvalósítás, specializált fordítók). Aztán a többit ismerjük, a 386 bebetonozta magát.

    "Arra vagyok kiváncsi, mikor lövik már végre ki winből a buffer overflow feature-t.."
    Egyes Windows-verzókban, ahol ez nem default, kézzel magadnak, bármikor: DEP beállítása az alkalmazásokra is; csak fel kell venni kivételbe a futásidőben gépi kódot generáló programokat, különben érdekes futási eredményeket kapsz :) (Én pl. timer-kezelésben elég sokszor alkalmaztam.)

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Új hozzászólás Aktív témák