Mfumo wa kuunda saini kiotomatiki za faili zinazoweza kutekelezwa. Muundo wa vipengele vya programu. Faili zinazoweza kutekelezwa zina aina gani ya kiendelezi? Ya kawaida zaidi

2.1 Faili

Mahitaji ya kuhifadhi habari:

2.1.1 Kutaja faili

Urefu wa jina la faili hutegemea OS; inaweza kuwa kutoka kwa herufi 8 (MS-DOS) hadi herufi 255 (Windows, LINUX).

OS inaweza kutofautisha kati ya herufi kubwa na herufi ndogo. Kwa mfano, WINDOWS na madirisha kwa MS-DOS ni sawa, lakini kwa UNIX ni faili tofauti.

Kwenye mifumo mingi ya uendeshaji, jina la faili lina sehemu mbili zilizotenganishwa na kipindi, kwa mfano windows.exe. Sehemu baada ya nukta inaitwa ugani wa faili. Mfumo hutumia kutofautisha aina ya faili.

Kwa MS-DOS kiendelezi ni herufi 3. Kutumia, mfumo hutofautisha aina ya faili, na ikiwa inaweza kutekelezwa au la.

Katika UNIX, ugani ni mdogo kwa saizi ya jina la faili ya herufi 255, na UNIX inaweza kuwa na viendelezi kadhaa, lakini viendelezi hutumiwa zaidi. programu za maombi, sio OS. UNIX haiwezi kubainisha ikiwa faili inaweza kutekelezwa au la kulingana na kiendelezi chake.

2.1.2 Muundo wa faili

Muundo tatu kuu za faili:

    Mlolongo wa Byte- OS haipendezwi na yaliyomo kwenye faili, inaona tu ka. Faida kuu ya mfumo kama huo ni kubadilika kwake kwa matumizi. Inatumika kwenye Windows na UNIX.

    Mlolongo wa maingizo- rekodi za urefu uliowekwa (kwa mfano, kadi iliyopigwa), inasomwa kwa mfululizo. Haitumiki sasa.

    Mti wa kuingia- kila rekodi ina ufunguo, rekodi zinasomwa kwa kutumia ufunguo. Faida kuu ya mfumo kama huo ni kasi ya utaftaji. Bado inatumika kwenye mfumo mkuu.

Aina tatu za muundo wa faili.

2.1.3 Aina za faili

Aina kuu za faili:

    Mara kwa mara- vyenye maelezo ya mtumiaji. Inatumika kwenye Windows na UNIX.

    Katalogi - faili za mfumo, kutoa msaada kwa muundo wa mfumo wa faili. Inatumika kwenye Windows na UNIX.

    Tabia- kwa muundo wa pembejeo-pato. Inatumika kwenye UNIX pekee.

    Zuia- kwa diski za mfano. Inatumika kwenye UNIX pekee.

Aina kuu za faili za kawaida:

    Faili za ASCII- inajumuisha masharti ya maandishi. Kila mstari huisha na urejeshaji wa gari (Windows), mlisho wa laini (UNIX), na zote mbili (MS-DOS). Kwa hivyo, ikiwa utafungua faili ya maandishi iliyoandikwa katika UNIX, katika Windows, basi mistari yote itaunganishwa kwenye mstari mmoja mkubwa, lakini chini ya MS-DOS haitaunganishwa ( hii ni hali ya kawaida kabisa) Faida kuu za faili za ASCII:
    - inaweza kuonyeshwa kwenye skrini na pato kwa printa bila uongofu
    - inaweza kuhaririwa na karibu mhariri yeyote

    Faili za binary- faili zingine (zisizo za ASCII). Kama sheria, wana muundo wa ndani.

Aina kuu za faili za binary:

    Inaweza kutekelezwa- programu, zinaweza kusindika na mfumo wa uendeshaji yenyewe, ingawa zimeandikwa kama mlolongo wa ka.

    Isiyotekelezeka- nyingine.

Mifano ya faili zinazoweza kutekelezwa na zisizoweza kutekelezwa

"Nambari ya uchawi"- kutambua faili kama inayoweza kutekelezwa.

2.1.4 Ufikiaji wa faili

Aina kuu za ufikiaji wa faili:

    Sambamba- kaiti zinasomwa kwa utaratibu. Kutumika wakati kulikuwa na kanda za sumaku.

2.1.5 Sifa za faili

Sifa kuu za faili:

    Ulinzi - ni nani anayeweza kufikia faili na jinsi (watumiaji, vikundi, kusoma / kuandika). Inatumika kwenye Windows na UNIX.

    Nenosiri - nenosiri la faili

    Muumba - ambaye aliunda faili

    Mmiliki - mmiliki wa sasa wa faili

    Bendera ya kusoma pekee - 0 - soma/andika, 1 - soma pekee. Inatumika kwenye Windows.

    Bendera "iliyofichwa" - 0 - inayoonekana, 1 - isiyoonekana katika orodha ya faili za saraka (chaguo-msingi). Inatumika kwenye Windows.

    Bendera "mfumo" - 0 - kawaida, 1 - mfumo. Inatumika kwenye Windows.

    Bendera ya "kumbukumbu" - tayari au si kwa ajili ya kuhifadhi (si kuchanganyikiwa na compression). Inatumika kwenye Windows.

    Bendera "imebanwa" - faili imebanwa (sawa na zip kumbukumbu) Inatumika kwenye Windows.

    Bendera "iliyosimbwa" - algorithm ya usimbuaji hutumiwa. Ikiwa mtu anajaribu kusoma faili ambayo haina ruhusa ya kufanya hivyo, hataweza kuisoma. Inatumika kwenye Windows.

    ASCII/bendera ya binary - 0 - ASCII, 1 - binary

    Bendera ya ufikiaji bila mpangilio - 0 - mfuatano pekee, 1 - ufikiaji wa nasibu

    Bendera "ya muda" - 0 - ya kawaida, 1 - kufuta faili mwishoni mwa mchakato

    Kuzuia bendera - kuzuia ufikiaji wa faili. Ikiwa yuko busy kwa uhariri.

    Wakati wa uumbaji - tarehe na wakati wa uumbaji. UNIX inatumika.

    Wakati wa mwisho wa ufikiaji - tarehe na wakati wa ufikiaji wa mwisho

    Muda mabadiliko ya mwisho- tarehe na wakati wa mabadiliko ya mwisho. Inatumika kwenye Windows na UNIX.

    Ukubwa wa sasa ni saizi ya faili. Inatumika kwenye Windows na UNIX.

2.1.6 Uendeshaji wa faili

Msingi simu za mfumo kufanya kazi na faili:

    Unda - kuunda faili bila data.

    Futa - kufuta faili.

    Fungua - fungua faili.

    Funga - kufunga faili.

    Soma - kusoma kutoka kwa faili, kutoka kwa nafasi ya sasa ya faili.

    Andika - kuandika kwa faili, kwa nafasi ya sasa ya faili.

    Kuongeza - kuongeza hadi mwisho wa faili.

    Tafuta - huweka pointer ya faili kwa nafasi maalum kwenye faili.

    Pata sifa - kupata sifa za faili.

    Weka sifa - weka sifa za faili.

    Badilisha jina - badilisha jina la faili.

2.1.7 Faili zilizopangwa kwa nafasi ya anwani ya kumbukumbu

Wakati mwingine ni rahisi kuonyesha faili kwenye kumbukumbu (huna haja ya kutumia simu za mfumo wa I / O kufanya kazi na faili), na kufanya kazi na kumbukumbu, na kisha kuandika faili iliyobadilishwa kwenye diski.

Kutumia shirika la ukurasa kumbukumbu, faili nzima haijapakiwa, lakini ni kurasa muhimu tu zinazopakiwa.

Kutumia shirika la sehemu kumbukumbu, faili imepakiwa katika sehemu tofauti.

Mfano wa kunakili faili kupitia ramani ya kumbukumbu.

Algorithm:

    Sehemu imeundwa kwa faili 1

    Faili inaonyeshwa kwenye kumbukumbu

    Sehemu imeundwa kwa faili 2

    Sehemu ya 1 imenakiliwa hadi sehemu ya 2

    Sehemu ya 2 imehifadhiwa kwenye diski

Ubaya wa njia hii:

    Ni ngumu kuamua urefu wa faili ya pato

    Ikiwa mchakato mmoja umeweka faili kwenye kumbukumbu na kuibadilisha, lakini faili bado haijahifadhiwa, mchakato wa pili utafungua faili sawa na kufanya kazi na faili iliyopitwa na wakati.

    Faili inaweza kuwa kubwa, kubwa kuliko sehemu au nafasi pepe.

2.2 Saraka

2.2.1 Mifumo ya katalogi ya kiwango kimoja

Katika mfumo huu, faili zote ziko kwenye saraka moja.

Mfumo wa saraka moja una faili nne, faili mbili A, lakini wamiliki tofauti

Faida za mfumo:

    Urahisi

    Uwezo wa kupata faili haraka, hakuna haja ya kupanda kupitia saraka

Hasara za mfumo:

    Watumiaji tofauti wanaweza kuunda faili zilizo na majina sawa.

2.2.2 Mifumo ya katalogi ya ngazi mbili

Kila mtumiaji ana saraka yake mwenyewe.

Mfumo wa katalogi wa ngazi mbili

Wakati mtumiaji anaingia kwenye mfumo, anachukuliwa kwenye saraka yake na hufanya kazi nayo tu. Hii hufanya kutumia faili za mfumo kuwa shida.

Tatizo hili linaweza kutatuliwa kwa kuunda saraka ya mfumo, na ufikiaji wa jumla.

Ikiwa mtumiaji mmoja ana faili nyingi, basi anaweza pia kuhitaji faili zilizo na majina sawa.

2.2.3 Mifumo ya katalogi ya viwango vya juu

Kila mtumiaji anaweza kuunda saraka nyingi kama anahitaji.

Mfumo wa katalogi wa kihierarkia

Karibu mifumo yote ya kisasa ya uendeshaji wa ulimwengu wote imeandaliwa kwa njia hii. Mfumo maalum wa uendeshaji unaweza usihitaji hii.

2.2.4 Jina la njia

Ili kuandaa mti wa saraka, unahitaji njia fulani ya kutaja faili.

Kuna njia mbili kuu za kutaja faili:

    jina la njia kabisa- inaonyesha njia kutoka kwa saraka ya mizizi, kwa mfano:
    - kwa Windows \usr\st\mailbox
    - kwa UNIX /usr/ast/mailbox
    - kwa MULTICS >usr>ast>mailbox

    jina la njia ya jamaa- njia imeonyeshwa kutoka kwa saraka ya sasa (saraka ya kufanya kazi), kwa mfano:
    - Kama saraka ya sasa/usr/ basi njia kabisa/usr/ast/mailbox itaandikwa upya kwa ast/mailbox
    - ikiwa saraka ya sasa ni /usr/ast/, basi njia kamili /usr/ast/mailbox itaandikwa tena kwenye sanduku la barua
    - ikiwa saraka ya sasa ni /var/log/, basi njia kamili /usr/ast/mailbox itaandikwa tena kwa ../../usr/ast/mailbox

./ - inamaanisha saraka ya sasa

../ - inamaanisha saraka ya wazazi

2.2.5 Uendeshaji na saraka

Mfumo wa kimsingi unahitaji kufanya kazi na saraka:

    Unda - tengeneza saraka

    Futa - futa saraka

    OpenDir - funga saraka

    CloseDir - funga saraka

    Badilisha jina - badilisha saraka

Muundo wa Typedef _IMAGE_FILE_HEADER ( WORD Machine; WORD NumberofSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOf OptionalHeader; WORD Sifa Zake; ) IMAGE_FILEADER, IMAGE_FILEADER;
Nitaelezea kwa ukali tu nyanja hizi, kwa sababu ... majina ni angavu na yanawakilisha maana za moja kwa moja, na sio VA, RVA, RAW na mambo mengine ya kutisha, ya kuvutia ambayo hadi sasa tumesikia tu kutoka kwa maharamia wa zamani. Ingawa tayari tumekutana na RAW - hizi ni punguzo tu zinazohusiana na mwanzo wa faili (pia huitwa viashiria mbichi au kukabiliana na faili). Hiyo ni, ikiwa tunayo anwani RAW, hii inamaanisha kwamba tunahitaji hatua kutoka mwanzo wa faili hadi nafasi za RAW ( ptrFile+ MBICHI). Kisha unaweza kuanza kusoma maadili. Mfano wa kushangaza ya aina hii ni e_mpya- ambayo tulijadili hapo juu katika kichwa cha Dos.

*Mashine: WORD - nambari hii (baiti 2) inabainisha usanifu wa kichakataji ambapo programu tumizi hii inaweza kufanya kazi.
IdadiYaSehemu: DWORD - idadi ya sehemu katika faili. Sehemu (hapa tutaziita jedwali la sehemu) hufuata mara baada ya kichwa (PE-Header). Nyaraka zinasema kwamba idadi ya sehemu ni mdogo hadi 96.
TimeDateStamp: WORD - nambari inayohifadhi tarehe na wakati faili iliundwa.
PointerToSymbolTable: DWORD ni suluhu (RAW) kwa jedwali la alama, na SizeOfOptionalHeader ni saizi ya jedwali hili. Jedwali hili iliyoundwa kwa ajili ya kuhifadhi habari ya utatuzi, lakini kikosi hicho hakikuona upotezaji wa mpiganaji tangu mwanzo wa huduma. Mara nyingi uwanja huu husafishwa na sufuri.
SIzeOfOptionHeader: WORD - saizi ya kichwa cha hiari (kinachofuata mara moja cha sasa) Nyaraka zinasema kwamba kwa faili ya kitu imewekwa kwa 0...
*Sifa: NENO - sifa za faili.

* - sehemu ambazo zinafafanuliwa na anuwai ya thamani. Jedwali la maadili yanayowezekana yanawasilishwa katika maelezo ya muundo katika ofisi. tovuti na haitaorodheshwa hapa, kwa sababu Hazibeba chochote muhimu kwa kuelewa muundo.

Hebu tuondoke kisiwa hiki! Tunahitaji kuendelea. Sehemu ya marejeleo ni nchi inayoitwa Optional-Header.

“Ramani iko wapi, Billy? Nahitaji ramani.”
(Kisiwa cha Treasure)

Hiari-Kichwa (IMAGE_OPTIONAL_HEADER)

Jina la bara hili sio nzuri sana. Kijajuu hiki kinahitajika na kina umbizo 2 PE32 na PE32+ (IMAGE_OPTIONAL_HEADER32 na IMAGE_OPTIONAL_HEADER64 mtawalia). Umbizo huhifadhiwa kwenye uwanja uchawi: NENO. Kichwa kina habari muhimu ili kupakua faili. Kama kawaida:

IMAGE_OPTIONAL_HEADER

muundo wa typedef _IMAGE_OPTIONAL_HEADER ( Uchawi wa WORD; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfWORDODWORDOfEntry; DWORDAnwaniOfWORDO; D ImageBase; Mpangilio wa Sehemu ya DWORD; Ulinganishaji wa Faili wa DWORD; NENO KuuUendeshajiSystemVersion; WORD MinorOperatingSystemVersion; NENO MajorImageVersion; NENO MinorImageVersion; WORD MajorSubsystemVersion; WORD MinorSubsystemVersion; DWORD Win32VersionValue; DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; Mfumo Ndogo wa NENO; WORD DllSifa; DWORD SizeOfUkubwa DWORDSizeOfOfOfOf; fHeapReserve; DWORD SizeOfHeapCommit; DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory; ) IMAGE_OPTIONAL_HEADE R , *PIMAGE_OPTIONAL_HEADER;


*Kama kawaida, tutachunguza sehemu kuu ambazo zina athari kubwa zaidi katika kuelewa upakuaji na jinsi ya kusonga mbele na faili. Wacha tukubaliane - sehemu za muundo huu zina maadili na anwani za VA (Anwani halisi) na RVA (Anwani halisi ya jamaa). Hizi sio anwani RAW, na unahitaji kuweza kuzisoma (au tuseme kuzihesabu). Kwa hakika tutajifunza jinsi ya kufanya hivyo, lakini kwanza tutachambua miundo inayofuatana ili usichanganyike. Kwa sasa, kumbuka tu - hizi ni anwani ambazo, baada ya mahesabu, zinaonyesha eneo maalum katika faili. Pia utakutana na dhana mpya - alignment. Tutazingatia kwa kushirikiana na anwani za RVA, kwa sababu haya yanahusiana sana.

AddressOfEntryPoint: DWORD - Anwani ya RVA ya mahali pa kuingilia. Inaweza kuelekeza mahali popote kwenye nafasi ya anwani. Kwa faili za .exe, hatua ya kuingia inafanana na anwani ambayo programu huanza utekelezaji na haiwezi kuwa sawa na sifuri!
BaseOfCode: DWORD - RVA ya mwanzo wa msimbo wa programu (sehemu ya kanuni).
BaseOfData: DWORD - RVA ya mwanzo wa msimbo wa programu (sehemu za data).
ImageBase: DWORD - anwani ya msingi inayopendekezwa ya kupakia programu. Lazima iwe kizidishio cha 64kb. Mara nyingi ni sawa na 0x00400000.
Mpangilio wa Sehemu: DWORD - saizi ya upatanishi (baiti) ya sehemu wakati wa kupakua kwenye kumbukumbu pepe.
Upatanisho wa faili: DWORD - saizi ya upatanishi (baiti) ya sehemu iliyo ndani ya faili.
SizeOfImage: DWORD - ukubwa wa faili (katika byte) katika kumbukumbu, ikiwa ni pamoja na vichwa vyote. Lazima iwe mseto wa SectionAligment.
SizeOfHeaders: DWORD - ukubwa wa vichwa vyote (DOS, DOS-Stub, PE, Sehemu) vilivyounganishwa na FileAligment.
IdadiYaRvaAndSizes: DWORD - idadi ya saraka katika jedwali la saraka (meza yenyewe iko chini). Kwa sasa, sehemu hii daima ni sawa na IMAGE_NUMBEROF_DIRECTORY_ENTRIES ya ishara, ambayo ni sawa na 16.
DataDirectory: IMAGE_DATA_DIRECTORY - saraka ya data. Kwa ufupi, hii ni safu (ya ukubwa wa 16), kila kipengele ambacho kina muundo wa maadili 2 ya DWORD.

Hebu tuangalie muundo wa IMAGE_DATA_DIRECTORY ni nini:

Muundo wa Typedef _IMAGE_DATA_DIRECTORY ( DWORD VirtualAddress; Ukubwa wa DWORD; ) IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
Tuna nini? Tuna safu ya vipengele 16, kila kipengele ambacho kina anwani na ukubwa (nini? jinsi gani? kwa nini? yote kwa dakika). Swali linatokea ni nini hasa sifa hizi. Kwa hili, Microsoft ina viboreshaji maalum vya kulinganisha. Wanaweza kuonekana mwishoni kabisa mwa maelezo ya muundo. Wakati huo huo:

// Maingizo ya Saraka #fafanua IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Hamisha Saraka #fafanua IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Ingiza Saraka #fafanua IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Saraka ya Nyenzo #fafanua IMAGEC_DIREKELELE_DIRECENTER_DIREEN DIRECTORY_ENTRY_ SECURITY 4 // Saraka ya Usalama #fafanua IMAGE_DIRECTORY_ENTRY_BASERELOC 5 / / Jedwali la Uhamisho Msingi #fafanua IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory // IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (matumizi ya X86) #fafanua IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 /ifCRECTORY_Architecture_Define_Architecture_IfeCRECTORY_ArCHITECTURE R 8 // RVA ya GP #fafanua IMAGE_DIRE CTORY_ENTRY_TLS 9 // Saraka ya TLS # fafanua IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Pakia Saraka ya Usanidi #fafanua IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bond Import Directory katika vichwa #fafanua IMAGE_DIRECTORY_ENTRY_IAT Jedwali #DIMENT_IAT_DIMENT_IAT_DIMENT_DIMENTE Jedwali 12 // Kuchelewesha Vielezi vya Kuingiza Mzigo #fafanua IMAGE_DIRECTORY_ENTRY_COM _DESCRIPTOR 14 // kifafanuzi cha Muda wa Kuendesha COM
Ndiyo! Tunaona kwamba kila kipengele cha safu kinawajibika kwa meza iliyounganishwa nayo. Lakini ole na ah, pwani hizi bado hazipatikani kwetu, kwa sababu ... hatujui jinsi ya kufanya kazi na anwani za VA na RVA. Na ili kujifunza, tunahitaji kujifunza ni sehemu gani. Ndio ambao watazungumza juu ya muundo na kazi zao, baada ya hapo itakuwa wazi kwa nini VA, RVA na alignments zinahitajika. Katika makala hii, tutagusa tu juu ya mauzo ya nje na uagizaji. Madhumuni ya mashamba yaliyobaki yanaweza kupatikana katika ofisi. nyaraka au katika vitabu. Hivyo hapa ni. Viwanja halisi:

VirtualAddress: DWORD - RVA kwa jedwali ambalo kipengele cha safu kinalingana.
Ukubwa: DWORD - ukubwa wa jedwali kwa baiti.

Kwa hiyo! Ili kufikia ufuo wa kigeni kama vile majedwali ya uagizaji, mauzo ya nje, rasilimali na mengineyo, tunahitaji kupitia pambano na sehemu. Kweli, kijana wa kabati, hebu tuangalie ramani ya jumla, tubaini tulipo sasa na tuendelee:

Na tuko moja kwa moja mbele ya nafasi wazi za sehemu. Kwa hakika tunahitaji kujua wanaficha nini na hatimaye kutambua aina nyingine ya kushughulikia. Tunataka matukio ya kweli! Tunataka kwenda haraka kwa jamhuri kama vile majedwali ya kuagiza na kuuza nje. Maharamia wa zamani wanasema kwamba sio kila mtu aliweza kuwafikia, lakini wale ambao walirudi na dhahabu na wanawake wenye ujuzi mtakatifu juu ya bahari. Tunaondoka na kuelekea kwenye kichwa cha Sehemu.

“Umeondolewa, Silver! Toka kwenye pipa!”
(Kisiwa cha Treasure)

Kijajuu cha sehemu (IMAGE_SECTION_HEADER)


Haki nyuma ya safu DataDirectory sehemu zinafuatana. Jedwali la sehemu linawakilisha serikali huru, ambayo imegawanywa katika IdadiYaSehemu miji. Kila jiji lina ufundi wake mwenyewe, haki zake, na pia ukubwa wa ka 0x28. Idadi ya sehemu imeonyeshwa kwenye uwanja IdadiYaSehemu, ambayo imehifadhiwa katika kichwa cha faili. Kwa hivyo, wacha tuangalie muundo:

Muundo wa Typedef _IMAGE_SECTION_HEADER ( Jina la BYTE; muungano ( DWORD PhysicalAddress; DWORD VirtualSize; ) Misc; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocations; DWORDNumberToRelocations; DWORDOnRelocations; nambari; Sifa za D NENO; ) IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
Jina: BYTE - jina la sehemu. Kwa sasa ina urefu wa herufi 8.
VirtualSize: DWORD - ukubwa wa sehemu katika kumbukumbu pepe.
SizeOfRawData: DWORD - ukubwa wa sehemu katika faili.
VirtualAddress: DWORD - Anwani ya sehemu ya RVA.
SizeOfRawData: DWORD - ukubwa wa sehemu katika faili. Lazima iwe nyingi Upatanisho wa faili.
PointerToRawData: DWORD - RAW kukabiliana hadi mwanzo wa sehemu. Lazima pia iwe nyingi Upatanisho wa faili
Sifa: DWORD - sifa za ufikiaji kwa sehemu na sheria za kuipakia kwenye mtandao. kumbukumbu. Kwa mfano, sifa ya kufafanua maudhui ya sehemu (data ya awali, data isiyo ya awali, msimbo). Au fikia sifa - soma, andika, tekeleza. Hii sio safu yao yote. Sifa zimewekwa na viunga kutoka WINNT.h sawa, vinavyoanza na IMAGE_SCN_. Unaweza kufahamiana na sifa za sehemu kwa undani zaidi. Sifa katika vitabu vya Chris Kaspersky pia zimeelezewa vizuri - orodha ya marejeleo iko mwisho wa kifungu.

Kuhusu jina, unapaswa kukumbuka yafuatayo - sehemu iliyo na rasilimali inapaswa kuwa na jina.rsrc kila wakati. Vinginevyo, rasilimali hazitapakiwa. Kuhusu sehemu zilizobaki, jina linaweza kuwa chochote. Kawaida kuna majina yenye maana, kwa mfano .data, .src, nk... Lakini pia hutokea:

Sehemu ni eneo ambalo hupakuliwa kwenye kumbukumbu pepe na kazi yote hufanyika moja kwa moja na data hii. Anwani katika kumbukumbu ya kawaida, bila vikwazo vyovyote, inaitwa Virtual address, VA iliyofupishwa. Anwani inayopendekezwa ya kupakua programu, iliyowekwa kwenye uwanja ImageBase. Hii ni kama hatua ambayo eneo la maombi huanza katika kumbukumbu pepe. Na RVA (Anwani pepe inayohusiana) hupimwa kulingana na hatua hii. Hiyo ni, VA = ImageBase+ RVA; ImageBase tunajua kila wakati na kuwa na VA au RVA, tunaweza kuelezea moja kupitia nyingine.

Inaonekana wamezoea hapa. Lakini hii ni kumbukumbu halisi! Na sisi ni katika kimwili. Kumbukumbu halisi kwetu sasa ni kama safari ya kwenda kwenye makundi mengine ya nyota, ambayo tunaweza kufikiria tu. Kwa hivyo hatuwezi kuingia kwenye kumbukumbu ya kawaida kwa sasa, lakini tunaweza kujua nini kitakuwepo, kwa sababu imechukuliwa kutoka kwa faili yetu.

Mpangilio


Ili kuwakilisha kwa usahihi kupakia kwenye mtandao. kumbukumbu, ni muhimu kuelewa utaratibu kama vile alignment. Kwanza, hebu tuangalie mchoro wa jinsi sehemu zinavyowekwa kwenye kumbukumbu.

Kama unaweza kuona, sehemu haijapakiwa kwenye kumbukumbu kulingana na saizi yake. Hapa ndipo mipangilio inatumika. Hii ni thamani ambayo lazima iwe nyingi ya ukubwa wa sehemu katika kumbukumbu. Ikiwa tunatazama mchoro, tutaona kwamba ukubwa wa sehemu ni 0x28, na ukubwa wa sehemu ni 0x50. Hii ni kwa sababu ya saizi ya mpangilio. 0x28 "haifikii" 0x50 na, kwa sababu hiyo, sehemu hiyo itapakuliwa, na nafasi iliyobaki katika ukubwa wa 0x50-0x28 itapunguzwa. Na ikiwa ukubwa wa sehemu ulikuwa ukubwa mkubwa alignment, basi nini? Kwa mfano Ukubwa wa sehemu= 0x78, a Upatanisho wa sehemu= 0x50, i.e. ilibaki bila kubadilika. Katika kesi hii, sehemu hiyo ingechukua 0xA0 (0xA0 = 0x28 * 0x04) ka katika kumbukumbu. Hiyo ni, thamani ambayo ni mgawo wa Upatanisho wa sehemu na inashughulikia kabisa Ukubwa wa sehemu. Ikumbukwe kwamba sehemu katika faili zimeunganishwa kwa njia sawa, tu kwa ukubwa Upatanisho wa faili. Baada ya kupokea msingi unaohitajika, tunaweza kujua jinsi ya kubadilisha kutoka RVA hadi RAW.

"Hii sio tambarare, hali ya hewa hapa ni tofauti."
(V.S. Vysotsky)

Somo kidogo la hesabu


Kabla ya utekelezaji kuanza, baadhi ya sehemu ya programu lazima itumwe kwa nafasi ya anwani ya processor. Nafasi ya anwani ni kiasi cha data iliyoshughulikiwa kimwili na kichakataji. kumbukumbu ya ufikiaji bila mpangilio. "Kipande" katika nafasi ya anwani ambapo programu imepakuliwa inaitwa karibu(picha halisi). Picha ina sifa ya anwani ya msingi ya upakuaji (Msingi wa picha) na saizi (ukubwa wa picha). Kwa hivyo VA (Anwani ya Mtandaoni) ni anwani inayohusiana na mwanzo wa kumbukumbu pepe, na RVA (Anwani ya Pekee Husika) inahusiana na mahali programu ilipakuliwa. Jinsi ya kujua anwani ya msingi ya upakuaji wa programu? Kwa kusudi hili kuna uwanja tofauti katika kichwa cha hiari kinachoitwa ImageBase. Huu ulikuwa utangulizi kidogo wa kuonyesha upya kumbukumbu yako. Sasa hebu tuangalie uwakilishi wa kimkakati wa kushughulikia tofauti:

Kwa hivyo unawezaje kusoma habari kutoka kwa faili bila kuitupa kwenye kumbukumbu ya kawaida? Ili kufanya hivyo, unahitaji kubadilisha anwani kwenye umbizo la RAW. Kisha tunaweza kuingia ndani ya faili hadi eneo tunalohitaji na kusoma data muhimu. Kwa kuwa RVA ndio anwani ya kumbukumbu ambayo data ilikadiriwa kutoka kwa faili, tunaweza kufanya mchakato wa kurudi nyuma. Ili kufanya hivyo tunahitaji hesabu rahisi ya tisa kwa kumi na sita. Hapa kuna baadhi ya fomula:

VA = ImageBase + RVA; RAW = RVA - sectionRVA + rawSection; // RawSection - kukabiliana na sehemu tangu mwanzo wa faili // sehemuRVA - RVA ya sehemu (sehemu hii imehifadhiwa ndani ya sehemu)
Kama unaweza kuona, ili kuhesabu RAW, tunahitaji kuamua sehemu ambayo RVA ni mali. Ili kufanya hivyo, unahitaji kupitia sehemu zote na uangalie hali zifuatazo:

RVA >= sectionVitualAddress && RVA< ALIGN_UP(sectionVirtualSize, sectionAligment) // sectionAligment - выравнивание для секции. Значение можно узнать в Optional-header. // sectionVitualAddress - RVA секции - хранится непосредственно в секции // ALIGN_UP() - функция, определяющая сколько занимает секция в памяти, учитывая выравнивание
Kuweka mafumbo yote pamoja, tunapata orodha hii:

Typedef uint32_t DWORD; typedef uint16_t NENO; typedef uint8_t BYTE; #fafanua ALIGN_DOWN(x, align) (x & ~(align-1)) #fafanua ALIGN_UP(x, align) ((x & (align-1)))?ALIGN_DOWN(x,align)+align:x) // IMAGE_SECTION_HEADER sehemu; // init array sehemu int defSection(DWORD rva) ( kwa (int i = 0; i< numberOfSection; ++i) { DWORD start = sections[i].VirtualAddress; DWORD end = start + ALIGN_UP(sections[i].VirtualSize, sectionAligment); if(rva >= anza && rva< end) return i; } return -1; } DWORD rvaToOff(DWORD rva) { int indexSection = defSection(rva); if(indexSection != -1) return rva - sections.VirtualAddress + sections.PointerToRawData; else return 0; }
*Sikujumuisha tamko la aina au uanzishaji wa safu kwenye msimbo, lakini nilitoa tu chaguo za kukokotoa ambazo zitasaidia katika kukokotoa anwani. Kama unaweza kuona, kanuni haikuwa ngumu sana. Utata kidogo tu. Hii itatoweka ... ikiwa unatumia muda kidogo zaidi kuchezea .exe kupitia disassembler.

HOORAY! Tulifikiria. Sasa tunaweza kwenda kwenye ardhi ya rasilimali, kuagiza na kuuza nje maktaba, na kwa ujumla popote moyo wetu unataka. Tumejifunza jinsi ya kufanya kazi na aina mpya ya kushughulikia. Hebu tupige barabara!

"- Sio mbaya, sio mbaya! Bado, wamepata mgao wao wa leo!”
(Kisiwa cha Treasure)

Jedwali la kuuza nje


Katika kipengele cha kwanza kabisa cha safu DataDirectory RVA imehifadhiwa katika jedwali la kuuza nje, ambalo linawakilishwa na muundo wa IMAGE_EXPORT_DIRECTORY. Jedwali hili ni la kawaida kwa faili zinazobadilika za maktaba (.dll). Kusudi kuu la jedwali ni kuhusisha kazi zinazosafirishwa kwa RVA yao. Maelezo yanawasilishwa katika ofisi. Vipimo:

Muundo wa Typedef _IMAGE_EXPORT_DIRECTORY ( Sifa za DWORD; Stempu ya Tarehe ya DWORD; WORD MajorVersion; WORD MinorVersion; DWORD Name; DWORD Base; DWORD IdadiYaMajina; DWORD NambariYaMajina; DWORD AnwaniO;DWORDAnwaniO;DWORDAnwaniO; ; ) IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
Muundo huu una viashiria vitatu kwa meza tatu tofauti. Hii ni jedwali la majina (kazi) ( AnwaniYaMajina), waratibu ( AnwaniYaMajinaOrdinals), anwani ( AnwaniYaKazi) Sehemu ya Jina huhifadhi RVA ya jina maktaba yenye nguvu. Ordinal ni kama mpatanishi kati ya jedwali la majina na jedwali la anwani, na ni safu ya faharisi (ukubwa wa faharasa ni baiti 2). Kwa uwazi zaidi, fikiria mchoro:

Hebu tuangalie mfano. Wacha tuseme kipengele cha i-th cha safu ya majina kinaonyesha jina la chaguo la kukokotoa. Kisha anwani ya kazi hii inaweza kupatikana kwa kufikia kipengele cha i-th katika safu ya anwani. Wale. mimi ni ordinal.

Makini! Ikiwa unachukua kwa mfano kipengele cha 2 katika jedwali la maagizo, haimaanishi 2 - ni utaratibu wa meza za majina na anwani. Faharasa ni thamani iliyohifadhiwa katika kipengele cha pili cha safu ya kanuni.

Idadi ya maadili katika jedwali la majina ( IdadiYaMajina) na kanuni ni sawa na haziwiani kila wakati na idadi ya vitu kwenye jedwali la anwani ( IdadiYaKazi).

"Walikuja kwa ajili yangu. Asante kwa umakini wako. Sasa lazima wanaua!”
(Kisiwa cha Treasure)

Jedwali la kuingiza


Jedwali la uingizaji ni sehemu muhimu ya programu yoyote inayotumia maktaba zinazobadilika. Jedwali hili husaidia kuoanisha simu na vitendaji vya maktaba vinavyobadilika na anwani zinazolingana. Kuagiza kunaweza kutokea katika tatu modes tofauti: uagizaji wa kawaida, wenye masharti na ucheleweshaji. Kwa sababu Mada ya uagizaji ina mambo mengi na inastahili nakala tofauti; Nitaelezea tu utaratibu wa kawaida, na iliyobaki nitaelezea tu kama "mifupa".

Uingizaji wa kawaida- V DataDirectory Jedwali la kuingiza limehifadhiwa chini ya faharasa IMAGE_DIRECTORY_ENTRY_IMPORT(=1). Ni safu ya vipengele vya aina IMAGE_IMPORT_DESCRIPTOR. Jedwali la kuingiza huhifadhi (katika safu) majina ya chaguo za kukokotoa/awali na ambapo kipakiaji kinapaswa kuandika anwani faafu ya chaguo hili la kukokotoa. Utaratibu huu sio ufanisi sana, kwa sababu Kwa kusema ukweli, yote inakuja kwa kutafuta jedwali zima la usafirishaji kwa kila kazi inayohitajika.

Uingizaji uliofungwa- na mpango huu wa kazi kwenye shamba (katika kipengele cha kwanza meza ya kawaida import) TimeDateStamp na ForwardChain zimewekwa kwa -1 na taarifa ya kumfunga huhifadhiwa kwenye seli DataDirectory yenye faharasa IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT(=11). Hiyo ni, hii ni aina ya bendera kwa kipakiaji ambayo unahitaji kutumia uingizaji uliofungwa. Pia, "mlolongo wa kuagiza uliofungwa" una miundo yake. Algorithm ya kufanya kazi ni kama ifuatavyo - kumbukumbu pepe ya programu inapakuliwa maktaba inayohitajika na anwani zote muhimu "zimefungwa" katika hatua ya mkusanyiko. Moja ya ubaya ni kwamba wakati wa kurudisha dll, utahitaji kurudisha programu yenyewe, kwa sababu. anwani za kazi zitabadilishwa.

Kuchelewesha kuagiza- katika njia hii inachukuliwa kuwa faili ya .dll imeambatishwa kwa ile inayoweza kutekelezwa, lakini haijapakuliwa kwenye kumbukumbu mara moja (kama ilivyo katika mbinu mbili zilizopita), lakini tu wakati programu inapofikia ishara kwa mara ya kwanza (hivi ndivyo vipengele vilivyopakuliwa kutoka kwa maktaba zinazobadilika. zinaitwa). Hiyo ni, programu inatekelezwa katika kumbukumbu na mara tu mchakato umefikia hatua ya kupiga kazi kutoka kwa maktaba yenye nguvu, mhudumu maalum anaitwa kwamba hupakia dll na kusambaza anwani za ufanisi za kazi zake. Kwa uingizaji ulioahirishwa, kipakiaji huwasiliana na DataDirectory (nambari ya bidhaa 15).

Baada ya kuangazia mbinu za uingizaji kidogo, wacha tuelekee moja kwa moja kwenye jedwali la kuagiza.

“Huyu ni baharia! Nguo zake zilikuwa za baharini. - Yah? Ulifikiri ungempata askofu hapa?”
(Kisiwa cha Hazina - John Silver)

Kifafanuzi cha kuingiza (IMAGE_IMPORT_DESCRIPTOR)


Ili kujua kuratibu za jedwali la kuagiza, tunahitaji kufikia safu DataDirectory. Yaani, kwa kipengele cha IMAGE_DIRECTORY_ENTRY_IMPORT (=1). Na usome anwani ya RVA ya meza. Hapa mpango wa jumla njia unayohitaji kuchukua:

Kisha tunapata RAW kutoka kwa RVA, kwa mujibu wa kanuni zilizotolewa hapo juu, na kisha "hatua" kupitia faili. Sasa tuko mbele ya safu ya miundo inayoitwa IMAGE_IMPORT_DESCRIPTOR. Mwisho wa safu unaonyeshwa na muundo wa "zero".

Muundo wa Typedef _IMAGE_IMPORT_DESCRIPTOR ( muungano ( Sifa za DWORD; DWORD OriginalFirstThunk; ) DUMMYUNIONNAME; DWORD TimeDateStamp; DWORD ForwarderChain; Jina la DWORD; DWORD FirstThunk; ) IMAGE_IMPORT_DESCRIPTOR_DESCRIPTOR_DESCRIPTOR;
Sikuweza kupata kiunga cha maelezo ya muundo kwenye msdn, lakini unaweza kuiona kwenye faili ya WINNT.h. Wacha tuanze kuigundua.

OriginalFirstThunk: DWORD - RVA ya jedwali la jina la kuingiza (INT).
TimeDateStamp: DWORD - tarehe na saa.
ForwarderChain: DWORD - faharasa ya herufi ya kwanza iliyosambazwa.
Jina: DWORD - kamba ya RVA yenye jina la maktaba.
KwanzaThunk: DWORD - RVA ya jedwali la anwani ya kuingiza (IAT).

Kila kitu hapa ni sawa na kuuza nje. Pia meza ya majina (INT) na pia rag ya anwani juu yake (IAT). Pia RVA ya jina la maktaba. INT na IAT pekee ndizo zinazorejelea safu ya miundo ya IMAGE_THUNK_DATA. Imewasilishwa kwa fomu mbili - kwa mifumo 64 na 32 na hutofautiana tu kwa ukubwa wa mashamba. Wacha tuangalie x86 kama mfano:

Muundo wa Typedef _IMAGE_THUNK_DATA32 ( muungano ( DWORD ForwarderString; Kazi ya DWORD; DWORD Ordinal; DWORD AddressOfData; ) u1; ) IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32;
Ni muhimu kujibu hilo vitendo zaidi inategemea sehemu muhimu zaidi ya muundo. Ikiwa imewekwa, basi bits zilizobaki zinawakilisha nambari ya tabia inayoingizwa (kuagiza kwa nambari). Vinginevyo (kidogo muhimu zaidi kinafutwa), bits zilizobaki zinataja RVA ya ishara inayoletwa (kuagiza kwa jina). Ikiwa tunayo uingizaji kwa jina, basi pointer huhifadhi anwani kwa muundo ufuatao:

Muundo wa Typedef _IMAGE_IMPORT_BY_NAME ( Kidokezo cha WORD; Jina la BYTE; ) IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
Hapa Kidokezo ni nambari ya chaguo la kukokotoa, na Jina- Jina.

Haya yote ni ya nini? Safu hizi zote, miundo ... Kwa uwazi, hebu fikiria mchoro wa ajabu na

kumbukumbu na kipakiaji cha mfumo wa uendeshaji na kisha kutekelezwa. Katika chumba cha upasuaji Mfumo wa Windows Faili zinazoweza kutekelezwa huwa na viendelezi ".exe" na ".dll". Kiendelezi cha ".exe" kinarejelea programu ambazo zinaweza kuzinduliwa moja kwa moja na mtumiaji. Kiendelezi ".dll" kina kile kinachoitwa maktaba zilizounganishwa kwa nguvu ( kiungo chenye nguvu maktaba). Maktaba hizi husafirisha kazi zinazotumiwa na programu zingine.

Ili kipakiaji cha boot ya mfumo wa uendeshaji kupakia kwa usahihi faili inayoweza kutekelezwa kwenye kumbukumbu, yaliyomo kwenye faili hii lazima yalingane na umbizo lililokubaliwa katika mfumo huu wa uendeshaji faili zinazoweza kutekelezwa. Maumbizo mengi tofauti yalikuwepo na bado yapo kwenye mifumo tofauti ya uendeshaji kwa nyakati tofauti. Katika sura hii, tutaangalia umbizo la Portable Executable (PE). Umbizo la PE ni umbizo la msingi la kuhifadhi faili zinazoweza kutekelezwa katika mfumo wa uendeshaji wa Windows. Mikusanyiko. Faili za NET pia zimehifadhiwa katika umbizo hili.

Zaidi ya hayo, umbizo la PE linaweza kutumika kuwakilisha faili za kitu. Faili za kitu hutumiwa kupanga mkusanyiko tofauti wa programu. Hoja ya ujumuishaji tofauti ni kwamba sehemu za programu (moduli) zimeundwa kwa kujitegemea kuwa faili za kitu, ambazo huunganishwa na kiunganishi kuwa moja. faili inayoweza kutekelezwa.

Na sasa - historia kidogo. Umbizo la PE liliundwa na watengenezaji wa Windows NT. Hapo awali, mfumo wa uendeshaji wa Windows ulitumia umbizo la New Executable (NE) na Linear Executable (LE) kuwakilisha faili zinazoweza kutekelezwa na kuhifadhi. faili za kitu Muundo wa Moduli ya Kitu (OMF) ulitumiwa. Umbizo la NE lilikusudiwa kwa 16-bit Programu za Windows, na umbizo la LE, lililotengenezwa awali kwa OS/2, lilikuwa tayari 32-bit. Swali linatokea: kwa nini? Watengenezaji wa Windows NT iliamua kuachana miundo iliyopo? Jibu linakuwa dhahiri ikiwa utazingatia ukweli kwamba wengi wa timu iliyofanya kazi uundaji wa Windows NT, awali alifanya kazi katika Digital Equipment Corporation. Walikuwa wakitengeneza zana za mfumo wa uendeshaji wa VAX/VMS huko DEC, na tayari walikuwa na ujuzi na msimbo uliotengenezwa tayari kufanya kazi na faili zinazoweza kutekelezeka zilizowasilishwa katika umbizo. Kitu cha Kawaida Umbizo la Faili (COFF). Ipasavyo, umbizo la COFF, katika fomu iliyobadilishwa kidogo, lilihamishiwa kwa Windows NT na kupokea jina PE.

".NET Framework Glossary" inasema kuwa PE ni utekelezaji Muundo wa Microsoft COFF. Wakati huo huo, inaelezwa kuwa PE ni muundo wa faili unaoweza kutekelezwa, na COFF ni muundo faili za kitu. Kwa ujumla, tunaweza kuona mkanganyiko Nyaraka za Microsoft kuhusu jina la muundo. Sehemu zingine wanaita COFF na wengine wanaiita PE. Kweli, mtu anaweza kutambua kwamba katika maandiko mapya jina la COFF linatumiwa kidogo na kidogo. Aidha, umbizo la PE linaendelea kubadilika. Kwa mfano, miaka kadhaa iliyopita Microsoft iliacha kuhifadhi habari ya utatuzi ndani ya faili inayoweza kutekelezwa, na kwa hivyo sasa sehemu nyingi katika miundo ya umbizo la COFF hazitumiwi tu. Zaidi ya hayo, umbizo la COFF ni 32-bit, na toleo la hivi punde Fomati ya PE (inayoitwa PE32+) inaweza kutumika kwenye majukwaa ya maunzi ya 64-bit. Kwa hiyo, inaonekana, mambo yanaelekea kwenye hatua kwamba jina COFF halitatumika tena kabisa.

Inafurahisha kutambua kwamba faili zinazoweza kutekelezwa katika fomati za urithi za NE na LE bado zinaungwa mkono na Windows. Faili zinazoweza kutekelezeka katika umbizo la NE zinaweza kuendeshwa chini ya NTVDM (NT Virtual DOS Machine), na umbizo la LE linatumika kwa viendeshi vya kifaa pepe (

Maumbizo ya faili zinazoweza kutekelezwa

Kumbukumbu halisi ya mchakato ina kadhaa sehemu au mikoa kumbukumbu. Saizi, yaliyomo na eneo la sehemu kwenye kumbukumbu imedhamiriwa na programu yenyewe, kwa mfano, matumizi ya maktaba, saizi ya nambari na data, na muundo wa faili inayoweza kutekelezwa ya programu hii. Mifumo mingi ya kisasa ya uendeshaji ya UNIX hutumia mbili umbizo la kawaida faili zinazoweza kutekelezwa - COFF (Umbo la Faili la Kitu cha Kawaida) na ELF (Umbo linaloweza kutekelezeka na Kuunganisha).

Ufafanuzi wa fomati za faili zinazoweza kutekelezwa zinaweza kuonekana kuwa nyingi, lakini uelewa wao ni muhimu ili kuelezea utendakazi wa msingi wa kernel ya mfumo wa uendeshaji. Hasa, habari iliyohifadhiwa katika faili zinazoweza kutekelezwa za fomati za COFF na ELF hukuruhusu kujibu maswali kadhaa ambayo ni muhimu sana kwa uendeshaji wa programu na mfumo kwa ujumla:

Ni sehemu gani za programu zinahitaji kupakiwa kwenye kumbukumbu?

Je, eneo la data ambayo haijaanzishwa linaundwaje?

Ni sehemu gani za mchakato zinapaswa kuhifadhiwa katika eneo la diski ya kubadilishana ( eneo maalum nafasi ya diski, iliyokusudiwa kwa uhifadhi wa muda wa vipande vya nafasi ya anwani ya mchakato), kwa mfano, wakati wa kubadilisha kurasa, na ni zipi zinaweza kusomwa kutoka kwa faili ikiwa ni lazima, na kwa hivyo hazihitaji kuokoa?

Maagizo ya programu na data ziko wapi kwenye kumbukumbu?

Ni maktaba gani zinahitajika ili kuendesha programu?

Faili inayoweza kutekelezwa kwenye diski, picha ya programu kwenye kumbukumbu, na eneo la kubadilishana diski zinahusiana vipi?

Katika Mtini. 2.3 imetolewa muundo wa msingi kumbukumbu kwa michakato iliyopakiwa kutoka kwa faili zinazoweza kutekelezwa katika fomati za COFF na ELF, mtawalia. Ingawa mpangilio wa sehemu hutofautiana kati ya miundo miwili, vipengele vya msingi ni sawa. Michakato yote miwili ina msimbo (maandishi), data, na sehemu za rafu. Kama unavyoona kutoka kwa takwimu, saizi ya sehemu za data na safu inaweza kubadilika, na mwelekeo wa mabadiliko haya unatambuliwa na umbizo la faili inayoweza kutekelezwa. Saizi ya rafu hubadilishwa kiotomatiki na mfumo wa uendeshaji, wakati saizi ya sehemu ya data inadhibitiwa na programu yenyewe. Tutajadili masuala haya kwa kina katika sehemu ya "Mgao wa Kumbukumbu" baadaye katika sura hii.

Mchele. 2.3. Picha za programu zinazotekelezeka katika umbizo la COFF na ELF

Sehemu ya data inajumuisha data iliyoanzishwa, ambayo inakiliwa kwenye kumbukumbu kutoka kwa sehemu zinazolingana za faili inayoweza kutekelezwa, na data ambayo haijaanzishwa, ambayo imejaa sufuri kabla ya mchakato kuanza kutekelezwa. Data ambayo haijaanzishwa mara nyingi huitwa sehemu ya BSS.

Kutoka kwa kitabu Photoshop CS2 na upigaji picha wa dijiti (Mafunzo). Sura ya 1-9 mwandishi Solonitsyn Yuri

Kutoka kwa Linux kwa kitabu cha Mtumiaji mwandishi Kostromin Viktor Alekseevich

11.4.2. Miundo ya faili za fonti Katika siku za hivi karibuni, kila moja mhariri wa michoro au programu ya kuchapisha ilitumia umbizo la faili yake ya fonti na, kama sheria, programu zingine hazikuunga mkono muundo wa zingine. Baada ya muda, idadi ya fomati zilizotumiwa

Kutoka kwa kitabu Adobe Photoshop CS3 mwandishi Zavgorodniy Vladimir

Sura ya 4 Miundo faili za picha Kuna idadi kubwa ya fomati tofauti za faili za kuhifadhi picha za raster. Miongoni mwao kuna fomati zote mbili za ulimwengu ambazo hazijaunganishwa na programu yoyote maalum, na fomati maalum za "kibinafsi" za raster.

Kutoka kwa kitabu Adobe InDesign CS3 mwandishi Zavgorodniy Vladimir

Miundo ya faili za picha Adobe InDesign inaweza kuleta faili za picha za umbizo mbalimbali - AI, BMP, EPS, GIF, JPEG, PDF, PSD, TIFF na adimu zaidi DCS, EMF, PCX, PICT, PNG, SCT (ScitexCT). ), WMF.Wote miundo ya picha na faili zinatenganishwa kulingana na aina ya habari wanazo

Kutoka kwa kitabu Internet Solutions kutoka kwa Dk. Bob na Swart Bob

1. Miundo ya usimbaji wa faili za mtandao Maumbizo ya faili za mtandao yanaweza kugawanywa katika vikundi kadhaa. Kwanza, fomati za uhamishaji faili kupitia FTP, ambazo mpango wa uuencode/decode ulitayarishwa muda mrefu uliopita, baadaye kubadilishwa na xxencode/decode. Baadaye kulikuwa na kukataliwa kwa niaba ya Base64 na MIME,

mwandishi Raymond Eric Stephen

3.1.6. Miundo ya Faili Nambari Ikiwa mfumo wako wa uendeshaji unatumia umbizo la jozi kwa data nyeti (kama vile akaunti za watumiaji), kuna uwezekano kuwa desturi ya kutumia inayoweza kusomeka na binadamu. miundo ya maandishi kwa maombi hayatazalishwa. Kwa maelezo

Kutoka kwa kitabu Photoshop CS3: Kozi ya Mafunzo mwandishi Timofeev Sergey Mikhailovich

Miundo ya faili za picha Yoyote picha ya mchoro Bila kujali ikiwa ni vector au raster, inaweza kuhifadhiwa kwenye kompyuta tu kwa kuandika kwa faili tofauti. Kila faili huwa na umbizo maalum. Umbizo linaonyesha hivyo

Kutoka kwa kitabu Sanaa ya Kupanga kwa Unix mwandishi Raymond Eric Stephen

3.1.6. Miundo ya Faili Nambari Ikiwa mfumo wa uendeshaji unatumia umbizo la jozi kwa data nyeti (kama vile akaunti za watumiaji), kuna uwezekano kwamba hakutakuwa na desturi ya kutumia fomati za maandishi zinazosomeka kwa programu. Maelezo zaidi kuhusu

Kutoka kwa kitabu Zana za mtandao Linux na Smith Roderick W.

Fonti za Faili za Fonti Kuna aina mbili za fonti: bitmap na fonti za muhtasari (fonti za muhtasari mara nyingi huitwa fonti zinazoweza kuongezeka). Aina hizi za fonti zina sifa tofauti na huchakatwa kwa njia tofauti. Seva nyingi za fonti iliyoundwa kufanya kazi ndani

Kutoka kwa kitabu HTML 5, CSS 3 na Web 2.0. Maendeleo ya tovuti za kisasa. mwandishi Dronov Vladimir

Kutoka kwa kitabu HTML 5, CSS 3 na Web 2.0. Maendeleo ya tovuti za kisasa mwandishi Dronov Vladimir

Miundo ya faili na umbizo la usimbaji Kuna fomati nyingi za faili za media titika kama kuna umbizo la faili za picha. Kama ilivyo kwa michoro ya Mtandao, sio vivinjari vyote vya Wavuti vinavyotumia muundo wa media titika, lakini wachache tu. (Ningependa mwandishi

Kutoka kwa kitabu Kompyuta Sauti Processing mwandishi Zagumennov Alexander Petrovich

Sampuli ya Ad Lib ya fomati za faili za sauti za SMPMuundo unatumiwa na kadi ya sauti ya Ad Lib Gold kupakia sampuli za ala ndani yake. Inaauni 8/16-bit sauti, mono/stereo, 4-bit Yamaha ADPCM compression. Faili katika umbizo hili zina kiendelezi . smp.Amiga SVXAina ya faili hii inatumika

Kutoka kwa kitabu Kuunda Virusi na Antivirus mwandishi Guliev Igor A.

Kiambatisho A Kijajuu cha Faili ya EXE Umbizo la Kichwa cha Faili ya EXE ya Kawaida Mwanzoni mwa faili ya EXE ni sehemu iliyoumbizwa ya kichwa cha faili ya EXE (Jedwali A-1) Inayofuata inakuja Jedwali la Kuhamisha, linalojumuisha viashirio virefu (kukabiliana: sehemu ) juu ya hizo

Kutoka kwa kitabu cha Photoshop CS4 mwandishi Zhvalevsky Andrey Valentinovich

Fomati za picha za faili Umbizo ni njia ya kurekodi picha kama faili. Kuna fomati chache za faili za michoro, lakini katika hali nyingi ni chache tu zinazotumiwa. Kila mmoja wao ana sifa za tabia, kwa hivyo tunapendekeza

Kutoka kwa kitabu Upigaji picha wa kidijitali. Tricks na madhara mwandishi Gursky Yuri Anatolievich

Miundo ya Faili Kuna njia nyingi za kuhifadhi maelezo ya picha na kwa hiyo fomati nyingi za faili. Makini! Ili kuepuka kupoteza data, unapofanya kazi na picha, zihifadhi katika muundo wa TIFF au katika muundo wa "asili" wa programu ya mhariri. JPEGВ

Kutoka kwa kitabu Windows 10. Siri na kifaa mwandishi Almametov Vladimir

Hotuba ya 3. Muundo wa faili

Fasihi

o Mifumo ya uendeshaji ya kisasa, E. Tanenbaum, 2002, St. Petersburg, St. Petersburg, kurasa 1040, (katika djvu 10.1 MB) zaidi>>

o Mifumo ya uendeshaji ya mtandao N. A. Olifer, V. G. Olifer (kumbukumbu ya zip 1.1 MB)

o Mifumo ya uendeshaji ya mtandao N. A. Olifer, V. G. Olifer, 2001, St. Petersburg, Peter, 544 pp., (katika djvu 6.3 MB)zaidi>>

Mafaili

Mahitaji ya kuhifadhi habari:

o uwezo wa kuhifadhi kiasi kikubwa cha data

o habari lazima ihifadhiwe baada ya mchakato kusitishwa

o michakato kadhaa lazima iwe na ufikiaji wa habari kwa wakati mmoja

2.1.1Kutaja faili

Urefu wa jina la faili hutegemea OS; inaweza kuwa kutoka kwa herufi 8 (MS-DOS) hadi herufi 255 (Windows, LINUX).

Mfumo wa uendeshaji unaweza kutofautisha kati ya herufi kubwa na ndogo. Kwa mfano, WINDOWS na madirisha kwa MS-DOS ni sawa, lakini kwa UNIX ni faili tofauti.

Kwenye mifumo mingi ya uendeshaji, jina la faili lina sehemu mbili zilizotenganishwa na kipindi, kwa mfano windows.exe. Sehemu baada ya nukta inaitwa ugani wa faili. Mfumo hutumia kutofautisha aina ya faili.

Kwa MS-DOS kiendelezi ni herufi 3. Kutumia, mfumo hutofautisha aina ya faili, na ikiwa inaweza kutekelezwa au la.

Katika UNIX, ugani ni mdogo kwa ukubwa wa jina la faili la wahusika 255, na UNIX inaweza kuwa na upanuzi kadhaa, lakini upanuzi hutumiwa zaidi na programu za maombi, si kwa OS. UNIX haiwezi kubainisha ikiwa faili inaweza kutekelezwa au la kulingana na kiendelezi chake.

2.1.2 Muundo wa faili

Muundo tatu kuu za faili:

1. Mlolongo wa Byte- OS haipendezwi na yaliyomo kwenye faili, inaona tu ka. Faida kuu ya mfumo kama huo ni kubadilika kwake kwa matumizi. Inatumika kwenye Windows na UNIX.

2. Mlolongo wa maingizo- rekodi za urefu uliowekwa (kwa mfano, kadi iliyopigwa), inasomwa kwa mfululizo. Haitumiki sasa.

3. Mti wa kuingia- kila rekodi ina ufunguo, rekodi zinasomwa kwa kutumia ufunguo. Faida kuu ya mfumo kama huo ni kasi ya utaftaji. Bado inatumika kwenye mfumo mkuu.

Aina tatu za muundo wa faili.

2.1.3 Aina za faili

Aina kuu za faili:

o Mara kwa mara- vyenye maelezo ya mtumiaji. Inatumika kwenye Windows na UNIX.

o Katalogi- faili za mfumo ambazo hutoa msaada kwa muundo wa mfumo wa faili. Inatumika kwenye Windows na UNIX.

o Tabia- kwa muundo wa pembejeo-pato. Inatumika kwenye UNIX pekee.

o Zuia- kwa diski za mfano. Inatumika kwenye UNIX pekee.

Aina kuu za faili za kawaida:

o Faili za ASCII- inajumuisha masharti ya maandishi. Kila mstari huisha na urejeshaji wa gari (Windows), mlisho wa laini (UNIX), na zote mbili (MS-DOS). Kwa hivyo, ukifungua faili ya maandishi iliyoandikwa katika UNIX katika Windows, basi mistari yote itaunganishwa kwenye mstari mmoja mkubwa, lakini chini ya MS-DOS haitaunganishwa ( hii ni hali ya kawaida kabisa) Faida kuu za faili za ASCII:
- inaweza kuonyeshwa kwenye skrini na pato kwa printa bila uongofu
- inaweza kuhaririwa na karibu mhariri yeyote

o Faili za binary- faili zingine (zisizo za ASCII). Kama sheria, wana muundo wa ndani.

Aina kuu za faili za binary:

o Inaweza kutekelezwa- programu, zinaweza kusindika na mfumo wa uendeshaji yenyewe, ingawa zimeandikwa kama mlolongo wa ka.

o Isiyotekelezeka- nyingine.

Mifano ya faili zinazoweza kutekelezwa na zisizoweza kutekelezwa

"Nambari ya uchawi"- kutambua faili kama inayoweza kutekelezwa.

2.1.4 Ufikiaji wa faili

Aina kuu za ufikiaji wa faili:

o Sambamba- kaiti zinasomwa kwa utaratibu. Kutumika wakati kulikuwa na kanda za sumaku.

2.1.5 Sifa za faili

Sifa kuu za faili:

o Ulinzi - ni nani anayeweza kufikia faili na jinsi (watumiaji, vikundi, kusoma / kuandika). Inatumika kwenye Windows na UNIX.

o Nenosiri - nenosiri la faili

o Muumba - aliyeunda faili

o Mmiliki - mmiliki wa sasa wa faili

o Bendera ya kusoma pekee - 0 - soma/andika, 1 - soma pekee. Inatumika kwenye Windows.

o Bendera "iliyofichwa" - 0 - inayoonekana, 1 - isiyoonekana katika orodha ya faili za saraka (chaguo-msingi). Inatumika kwenye Windows.

o Bendera "mfumo" - 0 - kawaida, 1 - mfumo. Inatumika kwenye Windows.

o Bendera "kumbukumbu" - tayari au si kwa ajili ya kumbukumbu (si kuchanganyikiwa na compression). Inatumika kwenye Windows.

o Bendera "imebanwa" - faili imebanwa (sawa na kumbukumbu za zip). Inatumika kwenye Windows.

o Bendera "iliyosimbwa" - algoriti ya usimbaji inatumika. Ikiwa mtu anajaribu kusoma faili ambayo haina ruhusa ya kufanya hivyo, hataweza kuisoma. Inatumika kwenye Windows.

o ASCII/bendera ya binary - 0 - ASCII, 1 - binary

o Bendera ya ufikiaji bila mpangilio - 0 - mfuatano pekee, 1 - ufikiaji wa nasibu

o Bendera "ya muda" - 0 - ya kawaida, 1 - kufuta faili mwishoni mwa mchakato

o Kuzuia bendera - kuzuia ufikiaji wa faili. Ikiwa yuko busy kwa uhariri.

o Wakati wa uumbaji - tarehe na wakati wa uumbaji. UNIX inatumika.

o Wakati wa mwisho wa ufikiaji - tarehe na wakati wa ufikiaji wa mwisho

o Wakati wa mabadiliko ya mwisho - tarehe na wakati wa mabadiliko ya mwisho. Inatumika kwenye Windows na UNIX.

o Ukubwa wa sasa - saizi ya faili. Inatumika kwenye Windows na UNIX.

2.1.6Uendeshaji na faili

Mfumo wa msingi wito kwa kufanya kazi na faili:

o Unda - kuunda faili bila data.

o Futa - futa faili.

o Fungua - fungua faili.

o Funga - kufunga faili.

o Soma - kusoma kutoka kwa faili, kutoka kwa nafasi ya sasa ya faili.

o Andika - kuandika kwa faili, kwa nafasi ya sasa ya faili.

o Ongeza - kuongeza hadi mwisho wa faili.

o Tafuta - huweka pointer ya faili kwa nafasi maalum kwenye faili.

o Pata sifa - kupata sifa za faili.

o Weka sifa - weka sifa za faili.

o Badilisha jina - badilisha faili.