Názor k článku Jak jsem vracel licenci k Windows – Acer 2014 od Lael Ophir - Ad position independent a s pomocí relokační tabulky......

  • Článek je starý, nové názory již nelze přidávat.
  • 7. 11. 2014 0:31

    Lael Ophir (neregistrovaný)

    Ad position independent a s pomocí relokační tabulky... OMG. Position independent code (PIC) je takový kód, který nemá reference na absolutní adresy, a je možné ho zavést na jakoukoliv adresu (pokud zanedbáme alignment). Relokační tabulka se ho netýká.
    Problémem v tom, že Intel x86-32 nemá RIP-relative addressing, takže má výsledný PIC dost mizerný výkon. x86-64 má RIP-relative addressing, a Windows ho používá.

    Relokační tabulka se týká něčeho úplně jiného. Kód není position independent, a při zavedení se může relokovat. Ve Windows mají DLL preferovanou adresu, na kterou jsou předkompilované a kam se preferuje jejich zavádění, pokud (není použito ASLR) && (v address space procesu je místo). Pokud (je použito ASLR) || (místo pro DLL v address space procesu není volné), knihovna se relokuje na jiné místo v paměti. Na x86-64 se používá RIP-relative addressing, takže je těch relokací minimum.

    Ad nejlépe lineárně za sebe - to je fakt super nápad. Slyšel jste někdy o buffer overflow, return-to-libc a ASLR? ASLR vyžaduje nějakou entropii adresního prostoru, nikoliv naskládání knihoven za sebe.