A Windows Portable Executable formátumnak megvannak a maga apró árnyalatai, ezért íme egy rövid útmutató a működésükhöz.
A Windows Portable Executable (PE) a Windows natív fájlformátuma futtatható fájlok és más bináris fájltípusok számára. A PE fájlformátumot platformfüggetlenre tervezték, így bármely Windows rendszerű gépen használható ugyanazt az operációs rendszer verziót és processzorarchitektúrát futtatja, mint a fájl összeállított.
Tehát boncolgassuk a Windows PE fájlformátumot, és ismerkedjünk meg szerkezetével és alkotóelemeivel.
Mi az a Windows hordozható végrehajtható fájl?
A Windows Portable Executable formátum felfedezése előtt fontos tisztázni az alapokat. Tegyünk egy lépést hátra, és ismerkedjünk meg a Windows PE – COFF alapkoncepciójával.
Amikor a forráskódot egy programba fordítja, a fordító létrehoz egy objektumfájlt (.obj). Ez az objektumfájl bináris formátumban tartalmaz utasításokat a számítógéphez.
A COFF vagy a Common Object File Format a bináris utasítások megjelenítésére vonatkozó szabványos konvenciók halmaza. A COFF segít fenntartani a platformok közötti kompatibilitást, mivel az összes COFF fájlformátum ugyanazokat a szabályokat és konvenciókat követi a kód és az adatok rendszerezésére. Bár a COFF-ot eredetileg *NIX rendszereken való használatra fejlesztették ki, mára minden platformon elterjedt.
A Windows Portable Executable (PE) fájlformátum a COFF módosítása, és kizárólagos használatra lett kifejlesztve. 32 bites és 64 bites Windows rendszerek. A COFF-tól eltérően, amely szabványos formátumot biztosít az objektumfájlok számára, a Windows PE szabványos formátumot biztosít a végrehajtható és a könyvtári fájlokhoz.
Olyan szakaszokat és fejléceket tartalmaz, amelyek információt nyújtanak a kérdéses végrehajtható fájlról, és segítik a rendszerbetöltőt a végrehajtható fájlhoz kapcsolódó adatok kezelésében. A PE-fájl fejlécei segítenek a rendszerbetöltőnek a fájl memóriába való leképezésében, a függőségek, például az API-exportálás/importálás feloldásában, az erőforrások kezelésében és a fájl előkészítésében a végrehajtásra.
A Linuxnak megvan a maga COFF-iterációja is; ezt Executable Link File-nak hívják, vagy röviden ELF binárisnak. A fájl futtatásával ellenőrizheti, hogy egy fájl ELF-e vagy sem fájl parancsot Linuxon a fájlnévvel az első argumentumként.
A Windows hordozható végrehajtható fájl szerkezete
A Portable Executable fájlformátum több összetevőből áll, amelyek mindegyike meghatározott céllal rendelkezik. Ezek az összetevők a következők:
- Szakaszfejlécek, amelyek leírják a fájl egyes szakaszainak elrendezését és jellemzőit Maguk a szakaszok, amelyek végrehajtható kódot, adatokat és erőforrásokat tartalmaznak.
- A PE-fejléc, amely információt nyújt a fájl általános szerkezetéről és követelményeiről.
- A DOS fejléc, amely egy kis programot tartalmaz, amely akkor fut le, amikor a fájl DOS rendszeren fut.
- Végül pedig a PE szakaszfejlécek, amelyek leírják az egyes szakaszok helyét és attribútumait a fájlban.
Összességében ezek az összetevők együttműködve olyan strukturált formátumot hoznak létre, amely lehetővé teszi az operációs rendszer számára a fájlban található végrehajtható kód megfelelő betöltését, végrehajtását és kezelését. Tanuljuk meg pontosan, mit csinálnak az egyes komponensek.
DOS fejléc
A PE-fájl első részét DOS-fejlécnek nevezik. Egy kis mennyiségű végrehajtható kód a DOS-fejlécben van tárolva, amely DOS-gépen is futtatható.
Ezt a kódot MS-DOS csonknak is nevezik, és hibaüzenet küldésére használják olyan rendszereken, amelyek nem támogatják a PE-fájlt.
PE fejléc
A Portable Executable fejléc információkat ad a végrehajtható fájlról, például, hogy mekkora a fájl, hol találhatók a különböző részek, és milyen erőforrásokra van szüksége a végrehajtható fájlnak. A PE fejléc a végrehajtható fájl típusáról is tartalmaz információkat, függetlenül attól, hogy a Windows .DLL fájl vagy egy .EXE.
Szakaszfejlécek
A szekciók a végrehajtható fájl számos összetevőjét, például kódot, adatokat és erőforrásokat, például szöveges karakterláncokat, képeket stb. A szakaszfejlécek információkat tartalmaznak az egyes szakaszok méretéről és helyéről, valamint a kapcsolódó jelzőkről.
Az egyes szakaszfejlécekhez tartozó jelzők jelezhetik a szakasz különféle attribútumait, például azt, hogy végrehajtható, írható vagy olvasható. Ezek a jelzők segítik az operációs rendszert az egyes szakaszok tartalmának megfelelő betöltésében és kezelésében a programvégrehajtás során.
szakaszok
Maguk a szakaszok tartalmazzák a végrehajtható fájl valós kódját, adatait és erőforrásait. Minden szegmens egy bizonyos memóriahatárhoz igazodik, és saját attribútumkészlettel rendelkezik, amely befolyásolja, hogy az operációs rendszer hogyan kezeli azokat.
Most már mindent tud a Windows Portable végrehajtható fájlformátumáról
A Windows Portable Executable egy robusztus és sokoldalú fájlformátum, amellyel számos Windows-alkalmazás és rendszerösszetevő készíthető. A PE fájlformátum szerkezetének megértésével a fejlesztők hatékony alkalmazásokat hozhatnak létre, amelyek kihasználják a Windows jellegzetes tulajdonságait.
Amellett, hogy alapos ismereteket szerezhet a platformról, amelyen az alkalmazás futni fog, követve néhány szabványos jót kódolási gyakorlatok segítségével maximalizálhatja az alkalmazás minőségét, függetlenül attól, hogy milyen platformon fut. tovább.