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.