എക്സിക്യൂട്ടബിൾ ഫയലുകളുടെ ഒപ്പുകൾ സ്വയമേവ സൃഷ്ടിക്കുന്നതിനുള്ള സിസ്റ്റം. സോഫ്റ്റ്വെയർ ഘടകങ്ങളുടെ ഘടന. എക്സിക്യൂട്ടബിൾ ഫയലുകൾക്ക് ഏത് തരത്തിലുള്ള വിപുലീകരണമാണ് ഉള്ളത്? ഏറ്റവും സാധാരണമായത്

2.1 ഫയലുകൾ

വിവര സംഭരണ ​​ആവശ്യകതകൾ:

    സംഭരണ ​​സാധ്യത വലിയ വോള്യങ്ങൾഡാറ്റ

    പ്രക്രിയ അവസാനിപ്പിച്ചതിന് ശേഷം വിവരങ്ങൾ സൂക്ഷിക്കേണ്ടതാണ്

    ഒന്നിലധികം പ്രക്രിയകൾ ഉണ്ടായിരിക്കണം ഒരേസമയം പ്രവേശനംവിവരങ്ങളിലേക്ക്

2.1.1 ഫയൽ നാമകരണം

ഫയലിന്റെ പേരിന്റെ ദൈർഘ്യം OS-നെ ആശ്രയിച്ചിരിക്കുന്നു; ഇത് 8 (MS-DOS) മുതൽ 255 (Windows, LINUX) പ്രതീകങ്ങൾ വരെയാകാം.

OS-ന് വലിയക്ഷരങ്ങൾ തമ്മിൽ വേർതിരിച്ചറിയാൻ കഴിയും ചെറിയ അക്ഷരങ്ങൾ. ഉദാഹരണത്തിന്, MS-DOS-നുള്ള WINDOWS ഉം വിൻഡോകളും ഒന്നുതന്നെയാണ്, എന്നാൽ UNIX-ന് അവ വ്യത്യസ്ത ഫയലുകളാണ്.

പല ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലും, ഫയലിന്റെ പേര് ഒരു കാലയളവ് കൊണ്ട് വേർതിരിച്ച രണ്ട് ഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു, ഉദാഹരണത്തിന് windows.exe. ഡോട്ടിന് ശേഷമുള്ള ഭാഗത്തെ വിളിക്കുന്നു ഫയൽ വിപുലീകരണം. ഫയൽ തരം വേർതിരിച്ചറിയാൻ സിസ്റ്റം ഇത് ഉപയോഗിക്കുന്നു.

MS-DOS-നുള്ള വിപുലീകരണം 3 പ്രതീകങ്ങളാണ്. ഇത് ഉപയോഗിച്ച്, സിസ്റ്റം ഫയലിന്റെ തരവും അത് എക്സിക്യൂട്ട് ചെയ്യാനാകുമോ ഇല്ലയോ എന്ന് വേർതിരിക്കുന്നു.

UNIX-ൽ, വിപുലീകരണം 255 പ്രതീകങ്ങളുള്ള ഒരു ഫയൽ നാമത്തിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, UNIX-ന് നിരവധി വിപുലീകരണങ്ങൾ ഉണ്ടാകാം, എന്നാൽ വിപുലീകരണങ്ങൾ കൂടുതൽ ഉപയോഗിക്കുന്നു ആപ്ലിക്കേഷൻ പ്രോഗ്രാമുകൾ, OS അല്ല. UNIX-ന് അതിന്റെ വിപുലീകരണത്തെ അടിസ്ഥാനമാക്കി ഒരു ഫയൽ എക്സിക്യൂട്ടബിൾ ആണോ അല്ലയോ എന്ന് നിർണ്ണയിക്കാൻ കഴിയില്ല.

2.1.2 ഫയൽ ഘടന

മൂന്ന് പ്രധാന ഫയൽ ഘടനകൾ:

    ബൈറ്റ് സീക്വൻസ്- ഫയലിന്റെ ഉള്ളടക്കത്തിൽ OS-ന് താൽപ്പര്യമില്ല, അത് ബൈറ്റുകൾ മാത്രമേ കാണൂ. അത്തരമൊരു സംവിധാനത്തിന്റെ പ്രധാന നേട്ടം അതിന്റെ ഉപയോഗത്തിന്റെ വഴക്കമാണ്. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

    എൻട്രികളുടെ ക്രമം- ഒരു നിശ്ചിത ദൈർഘ്യത്തിന്റെ രേഖകൾ (ഉദാഹരണത്തിന്, ഒരു പഞ്ച് കാർഡ്), തുടർച്ചയായി വായിക്കുന്നു. ഇപ്പോൾ ഉപയോഗിക്കുന്നില്ല.

    പ്രവേശന മരം- ഓരോ റെക്കോർഡിനും ഒരു കീ ഉണ്ട്, കീ ഉപയോഗിച്ച് റെക്കോർഡുകൾ വായിക്കുന്നു. അത്തരമൊരു സംവിധാനത്തിന്റെ പ്രധാന നേട്ടം തിരയൽ വേഗതയാണ്. മെയിൻഫ്രെയിമുകളിൽ ഇപ്പോഴും ഉപയോഗിക്കുന്നു.

മൂന്ന് തരം ഫയൽ ഘടനകൾ.

2.1.3 ഫയൽ തരങ്ങൾ

പ്രധാന ഫയൽ തരങ്ങൾ:

    പതിവ്- ഉപയോക്തൃ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

    കാറ്റലോഗുകൾ - സിസ്റ്റം ഫയലുകൾ, ഫയൽ സിസ്റ്റം ഘടനയ്ക്കുള്ള പിന്തുണ നൽകുന്നു. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

    സ്വഭാവം- ഇൻപുട്ട്-ഔട്ട്പുട്ട് മോഡലിംഗിനായി. UNIX-ൽ മാത്രം ഉപയോഗിക്കുന്നു.

    തടയുക- മോഡലിംഗ് ഡിസ്കുകൾക്കായി. UNIX-ൽ മാത്രം ഉപയോഗിക്കുന്നു.

സാധാരണ ഫയലുകളുടെ പ്രധാന തരം:

    ASCII ഫയലുകൾ- ടെക്സ്റ്റ് സ്ട്രിംഗുകൾ ഉൾക്കൊള്ളുന്നു. ഓരോ വരിയും ഒരു ക്യാരേജ് റിട്ടേൺ (വിൻഡോസ്), ഒരു ലൈൻ ഫീഡ് (UNIX), രണ്ടും (MS-DOS) എന്നിവയിൽ അവസാനിക്കുന്നു. അതിനാൽ, നിങ്ങൾ തുറന്നാൽ ടെക്സ്റ്റ് ഫയൽ UNIX-ൽ എഴുതിയത്, വിൻഡോസിൽ, എല്ലാ വരികളും ഒരു വലിയ വരിയായി ലയിക്കും, എന്നാൽ MS-DOS-ന് കീഴിൽ അവ ലയിക്കില്ല ( ഇത് തികച്ചും സാധാരണമായ ഒരു സാഹചര്യമാണ്). ASCII ഫയലുകളുടെ പ്രധാന ഗുണങ്ങൾ:
    - സ്ക്രീനിൽ പ്രദർശിപ്പിക്കാനും പരിവർത്തനം ചെയ്യാതെ പ്രിന്ററിലേക്ക് ഔട്ട്പുട്ട് ചെയ്യാനും കഴിയും
    - മിക്കവാറും ഏത് എഡിറ്റർക്കും എഡിറ്റ് ചെയ്യാൻ കഴിയും

    ബൈനറി ഫയലുകൾ- മറ്റ് ഫയലുകൾ (നോൺ-ASCII). ചട്ടം പോലെ, അവർക്ക് ഒരു ആന്തരിക ഘടനയുണ്ട്.

ബൈനറി ഫയലുകളുടെ പ്രധാന തരം:

    എക്സിക്യൂട്ടബിൾ- പ്രോഗ്രാമുകൾ, അവ ബൈറ്റുകളുടെ ഒരു ക്രമമായി എഴുതിയിട്ടുണ്ടെങ്കിലും ഓപ്പറേറ്റിംഗ് സിസ്റ്റം തന്നെ പ്രോസസ്സ് ചെയ്യാൻ കഴിയും.

    നോൺ എക്സിക്യൂട്ടബിൾ- മറ്റുള്ളവ.

എക്സിക്യൂട്ടബിൾ, നോൺ എക്സിക്യൂട്ടബിൾ ഫയലുകളുടെ ഉദാഹരണങ്ങൾ

"മാജിക് നമ്പർ"- എക്സിക്യൂട്ടബിൾ ആയി ഫയൽ തിരിച്ചറിയുന്നു.

2.1.4 ഫയൽ ആക്സസ്

ഫയൽ ആക്‌സസിന്റെ പ്രധാന തരങ്ങൾ:

    സ്ഥിരതയുള്ള- ബൈറ്റുകൾ ക്രമത്തിൽ വായിക്കുന്നു. കാന്തിക ടേപ്പുകൾ ഉള്ളപ്പോൾ ഉപയോഗിച്ചു.

2.1.5 ഫയൽ ആട്രിബ്യൂട്ടുകൾ

പ്രധാന ഫയൽ ആട്രിബ്യൂട്ടുകൾ:

    സംരക്ഷണം - ആർക്കൊക്കെ ഫയൽ ആക്സസ് ചെയ്യാം, എങ്ങനെ (ഉപയോക്താക്കൾ, ഗ്രൂപ്പുകൾ, വായിക്കുക/എഴുതുക). വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

    പാസ്‌വേഡ് - ഫയലിനുള്ള പാസ്‌വേഡ്

    സ്രഷ്ടാവ് - ആരാണ് ഫയൽ സൃഷ്ടിച്ചത്

    ഉടമ - ഫയലിന്റെ നിലവിലെ ഉടമ

    വായന-മാത്രം ഫ്ലാഗ് - 0 - വായിക്കുക/എഴുതുക, 1 - വായിക്കാൻ മാത്രം. വിൻഡോസിൽ ഉപയോഗിച്ചു.

    ഡയറക്ടറി ഫയലുകളുടെ പട്ടികയിൽ "മറഞ്ഞിരിക്കുന്ന" ഫ്ലാഗ് - 0 - ദൃശ്യമാണ്, 1 - അദൃശ്യമാണ് (സ്ഥിരസ്ഥിതി). വിൻഡോസിൽ ഉപയോഗിച്ചു.

    ഫ്ലാഗ് "സിസ്റ്റം" - 0 - സാധാരണ, 1 - സിസ്റ്റം. വിൻഡോസിൽ ഉപയോഗിച്ചു.

    "ആർക്കൈവ്" ഫ്ലാഗ് - ആർക്കൈവിംഗിന് തയ്യാറാണോ അല്ലയോ (കംപ്രഷനുമായി തെറ്റിദ്ധരിക്കരുത്). വിൻഡോസിൽ ഉപയോഗിച്ചു.

    ഫ്ലാഗ് "കംപ്രസ്ഡ്" - ഫയൽ കംപ്രസ് ചെയ്തു (ഇതിന് സമാനമായി zip ആർക്കൈവുകൾ). വിൻഡോസിൽ ഉപയോഗിച്ചു.

    ഫ്ലാഗ് "എൻക്രിപ്റ്റ്" - എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നു. അനുമതിയില്ലാത്ത ഒരു ഫയൽ ആരെങ്കിലും വായിക്കാൻ ശ്രമിച്ചാൽ, അവർക്ക് അത് വായിക്കാൻ കഴിയില്ല. വിൻഡോസിൽ ഉപയോഗിച്ചു.

    ASCII/ബൈനറി ഫ്ലാഗ് - 0 - ASCII, 1 - ബൈനറി

    റാൻഡം ആക്സസ് ഫ്ലാഗ് - 0 - സീക്വൻഷ്യൽ മാത്രം, 1 - റാൻഡം ആക്സസ്

    പ്രക്രിയയുടെ അവസാനം ഫയൽ ഇല്ലാതാക്കാൻ "താൽക്കാലിക" - 0 - സാധാരണ, 1 - ഫ്ലാഗ് ചെയ്യുക

    ഫ്ലാഗ് തടയുന്നു - ഫയലിലേക്കുള്ള ആക്സസ് തടയുന്നു. അദ്ദേഹം എഡിറ്റിംഗിന്റെ തിരക്കിലാണെങ്കിൽ.

    സൃഷ്ടി സമയം - സൃഷ്ടിയുടെ തീയതിയും സമയവും. UNIX ആണ് ഉപയോഗിക്കുന്നത്.

    അവസാന ആക്സസ് സമയം - അവസാന ആക്സസ് തീയതിയും സമയവും

    സമയം അവസാന മാറ്റം- അവസാന മാറ്റത്തിന്റെ തീയതിയും സമയവും. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

    നിലവിലെ വലുപ്പം ഫയൽ വലുപ്പമാണ്. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

2.1.6 ഫയൽ പ്രവർത്തനങ്ങൾ

അടിസ്ഥാനം സിസ്റ്റം കോളുകൾഫയലുകളിൽ പ്രവർത്തിക്കാൻ:

    സൃഷ്ടിക്കുക - ഡാറ്റ ഇല്ലാതെ ഒരു ഫയൽ സൃഷ്ടിക്കുക.

    ഇല്ലാതാക്കുക - ഒരു ഫയൽ ഇല്ലാതാക്കുന്നു.

    തുറക്കുക - ഒരു ഫയൽ തുറക്കുക.

    അടയ്ക്കുക - ഫയൽ അടയ്ക്കുന്നു.

    വായിക്കുക - ഒരു ഫയലിൽ നിന്ന്, നിലവിലെ ഫയൽ സ്ഥാനത്ത് നിന്ന് വായിക്കുക.

    എഴുതുക - ഒരു ഫയലിലേക്ക്, നിലവിലെ ഫയൽ സ്ഥാനത്തേക്ക് എഴുതുക.

    കൂട്ടിച്ചേർക്കുക - ഫയലിന്റെ അവസാനം ചേർക്കുന്നു.

    സീക്ക് - ഫയലിലെ ഒരു പ്രത്യേക സ്ഥാനത്തേക്ക് ഫയൽ പോയിന്റർ സജ്ജമാക്കുന്നു.

    ആട്രിബ്യൂട്ടുകൾ നേടുക - ഫയൽ ആട്രിബ്യൂട്ടുകൾ നേടുക.

    ആട്രിബ്യൂട്ടുകൾ സജ്ജമാക്കുക - ഫയൽ ആട്രിബ്യൂട്ടുകൾ സജ്ജമാക്കുക.

    പേരുമാറ്റുക - ഫയലിന്റെ പേരുമാറ്റുക.

2.1.7 ഫയലുകൾ മെമ്മറി അഡ്രസ് സ്‌പെയ്‌സിലേക്ക് മാപ്പ് ചെയ്‌തു

ചിലപ്പോൾ മെമ്മറിയിൽ ഒരു ഫയൽ പ്രദർശിപ്പിക്കുന്നത് സൗകര്യപ്രദമാണ് (ഫയലിനൊപ്പം പ്രവർത്തിക്കാൻ നിങ്ങൾ I/O സിസ്റ്റം കോളുകൾ ഉപയോഗിക്കേണ്ടതില്ല), കൂടാതെ മെമ്മറി ഉപയോഗിച്ച് പ്രവർത്തിക്കുക, തുടർന്ന് പരിഷ്കരിച്ച ഫയൽ ഡിസ്കിലേക്ക് എഴുതുക.

ഉപയോഗിക്കുന്നത് പേജ് ഓർഗനൈസേഷൻമെമ്മറി, മുഴുവൻ ഫയലും ലോഡ് ചെയ്തിട്ടില്ല, പക്ഷേ ആവശ്യമായ പേജുകൾ മാത്രമേ ലോഡ് ചെയ്തിട്ടുള്ളൂ.

ഉപയോഗിക്കുന്നത് സെഗ്മെന്റ് ഓർഗനൈസേഷൻമെമ്മറി, ഫയൽ ഒരു പ്രത്യേക സെഗ്മെന്റിലേക്ക് ലോഡ് ചെയ്യുന്നു.

മെമ്മറി മാപ്പിംഗ് വഴി ഒരു ഫയൽ പകർത്തുന്നതിനുള്ള ഒരു ഉദാഹരണം.

അൽഗോരിതം:

    ഫയൽ 1-നായി ഒരു സെഗ്മെന്റ് സൃഷ്ടിച്ചിരിക്കുന്നു

    ഫയൽ മെമ്മറിയിൽ പ്രദർശിപ്പിക്കും

    ഫയൽ 2-നായി ഒരു സെഗ്മെന്റ് സൃഷ്ടിച്ചു

    സെഗ്മെന്റ് 1 സെഗ്മെന്റ് 2-ലേക്ക് പകർത്തി

    സെഗ്മെന്റ് 2 ഡിസ്കിൽ സംരക്ഷിച്ചു

ഈ രീതിയുടെ പോരായ്മകൾ:

    ഔട്ട്പുട്ട് ഫയലിന്റെ ദൈർഘ്യം നിർണ്ണയിക്കാൻ പ്രയാസമാണ്

    ഒരു പ്രോസസ്സ് ഒരു ഫയൽ മെമ്മറിയിലേക്ക് മാപ്പ് ചെയ്യുകയും അത് പരിഷ്‌ക്കരിക്കുകയും ചെയ്‌തെങ്കിലും ഫയൽ ഇതുവരെ സേവ് ചെയ്‌തിട്ടില്ലെങ്കിൽ, രണ്ടാമത്തെ പ്രോസസ്സ് അതേ ഫയൽ തുറന്ന് കാലഹരണപ്പെട്ട ഫയലുമായി പ്രവർത്തിക്കും.

    ഫയൽ വലുതായിരിക്കാം, ഒരു സെഗ്‌മെന്റിനെക്കാളും വെർച്വൽ സ്ഥലത്തേക്കാളും വലുതായിരിക്കാം.

2.2 ഡയറക്ടറികൾ

2.2.1 സിംഗിൾ-ലെവൽ കാറ്റലോഗ് സിസ്റ്റങ്ങൾ

ഈ സിസ്റ്റത്തിൽ, എല്ലാ ഫയലുകളും ഒരു ഡയറക്ടറിയിൽ അടങ്ങിയിരിക്കുന്നു.

നാല് ഫയലുകൾ, രണ്ട് ഫയലുകൾ എ, എന്നാൽ വ്യത്യസ്ത ഉടമകൾ അടങ്ങുന്ന സിംഗിൾ-ഡയറക്‌ടറി സിസ്റ്റം

സിസ്റ്റം നേട്ടങ്ങൾ:

    ലാളിത്യം

    ഒരു ഫയൽ വേഗത്തിൽ കണ്ടെത്താനുള്ള കഴിവ്, ഡയറക്ടറികളിലൂടെ കയറേണ്ട ആവശ്യമില്ല

സിസ്റ്റത്തിന്റെ പോരായ്മകൾ:

    വ്യത്യസ്ത ഉപയോക്താക്കൾക്ക് ഒരേ പേരുകളിൽ ഫയലുകൾ സൃഷ്ടിക്കാൻ കഴിയും.

2.2.2 രണ്ട്-ലെവൽ കാറ്റലോഗ് സിസ്റ്റങ്ങൾ

ഓരോ ഉപയോക്താവിനും അവരുടേതായ ഡയറക്ടറി ഉണ്ട്.

രണ്ട്-ലെവൽ കാറ്റലോഗ് സിസ്റ്റം

ഒരു ഉപയോക്താവ് സിസ്റ്റത്തിലേക്ക് ലോഗിൻ ചെയ്യുമ്പോൾ, അവനെ അവന്റെ ഡയറക്ടറിയിലേക്ക് കൊണ്ടുപോകുകയും അതിൽ മാത്രം പ്രവർത്തിക്കുകയും ചെയ്യുന്നു. ഇത് സിസ്റ്റം ഫയലുകൾ ഉപയോഗിക്കുന്നത് പ്രശ്നമാക്കുന്നു.

സൃഷ്ടിക്കുന്നതിലൂടെ ഈ പ്രശ്നം പരിഹരിക്കാൻ കഴിയും സിസ്റ്റം ഡയറക്ടറി, പൊതുവായ പ്രവേശനത്തോടെ.

ഒരു ഉപയോക്താവിന് നിരവധി ഫയലുകൾ ഉണ്ടെങ്കിൽ, അയാൾക്ക് അതേ പേരുകളുള്ള ഫയലുകളും ആവശ്യമായി വന്നേക്കാം.

2.2.3 ഹൈറാർക്കിക്കൽ കാറ്റലോഗ് സിസ്റ്റങ്ങൾ

ഓരോ ഉപയോക്താവിനും ആവശ്യമുള്ളത്ര ഡയറക്ടറികൾ സൃഷ്ടിക്കാൻ കഴിയും.

ഹൈറാർക്കിക്കൽ കാറ്റലോഗ് സിസ്റ്റം

മിക്കവാറും എല്ലാ ആധുനിക സാർവത്രിക ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളും ഈ രീതിയിൽ ക്രമീകരിച്ചിരിക്കുന്നു. പ്രത്യേക OS-ന് ഇത് ആവശ്യമില്ലായിരിക്കാം.

2.2.4 പാതയുടെ പേര്

ഒരു ഡയറക്‌ടറി ട്രീ ഓർഗനൈസുചെയ്യുന്നതിന്, ഒരു ഫയൽ വ്യക്തമാക്കുന്നതിന് നിങ്ങൾക്ക് ചില വഴികൾ ആവശ്യമാണ്.

ഒരു ഫയൽ വ്യക്തമാക്കുന്നതിന് രണ്ട് പ്രധാന രീതികളുണ്ട്:

    സമ്പൂർണ്ണ പാതയുടെ പേര്- റൂട്ട് ഡയറക്ടറിയിൽ നിന്നുള്ള പാത സൂചിപ്പിക്കുന്നു, ഉദാഹരണത്തിന്:
    - വിൻഡോസ് \usr\ast\മെയിൽബോക്സിനായി
    - UNIX /usr/ast/mailbox-ന്
    - MULTICS >usr>ast>മെയിൽബോക്സിനായി

    ആപേക്ഷിക പാതയുടെ പേര്- നിലവിലെ ഡയറക്‌ടറിയിൽ നിന്ന് പാത സൂചിപ്പിച്ചിരിക്കുന്നു (വർക്കിംഗ് ഡയറക്‌ടറി), ഉദാഹരണത്തിന്:
    - എങ്കിൽ നിലവിലെ ഡയറക്ടറി/usr/ പിന്നെ കേവല പാത/usr/ast/mailbox എന്നത് ast/mailbox എന്നാക്കി മാറ്റിയെഴുതും
    - നിലവിലെ ഡയറക്‌ടറി /usr/ast/ ആണെങ്കിൽ, സമ്പൂർണ്ണ പാത /usr/ast/mailbox മെയിൽബോക്സിൽ തിരുത്തിയെഴുതപ്പെടും.
    - നിലവിലെ ഡയറക്‌ടറി /var/log/ ആണെങ്കിൽ, സമ്പൂർണ്ണ പാത /usr/ast/mailbox ../../usr/ast/mailbox എന്നതിലേക്ക് മാറ്റിയെഴുതും

./ - നിലവിലെ ഡയറക്ടറി എന്നാണ് അർത്ഥമാക്കുന്നത്

../ - പാരന്റ് ഡയറക്ടറി എന്നാണ് അർത്ഥമാക്കുന്നത്

2.2.5 ഡയറക്ടറികൾ ഉള്ള പ്രവർത്തനങ്ങൾ

ഡയറക്ടറികൾക്കൊപ്പം പ്രവർത്തിക്കുന്നതിനുള്ള അടിസ്ഥാന സിസ്റ്റം കോളുകൾ:

    സൃഷ്ടിക്കുക - ഒരു ഡയറക്ടറി സൃഷ്ടിക്കുക

    ഇല്ലാതാക്കുക - ഒരു ഡയറക്ടറി ഇല്ലാതാക്കുക

    OpenDir - ഡയറക്ടറി അടയ്ക്കുക

    CloseDir - ഒരു ഡയറക്ടറി അടയ്ക്കുക

    പേരുമാറ്റുക - ഒരു ഡയറക്ടറിയുടെ പേരുമാറ്റുക

ടൈപ്പ്ഡെഫ് ഘടന _IMAGE_FILE_HEADER ( വേഡ് മെഷീൻ; വേഡ് നമ്പർ ഓഫ് സെക്ഷനുകൾ; DWORD ടൈംഡേറ്റ് സ്റ്റാമ്പ്; DWORD പോയിന്റർ ടോസിംബോൾടേബിൾ; DWORD നമ്പർഓഫ് ചിഹ്നങ്ങൾ; വാക്കിന്റെ വലുപ്പം AGE_PILEADER;WORD തലക്കെട്ട്;
ഞാൻ ഈ ഫീൽഡുകളെ വരണ്ടതായി മാത്രമേ വിവരിക്കുകയുള്ളൂ, കാരണം... പേരുകൾ അവബോധജന്യവും നേരിട്ടുള്ള അർത്ഥങ്ങളെ പ്രതിനിധീകരിക്കുന്നതുമാണ്, അല്ലാതെ VA, RVA, RAW, മറ്റ് ഭയാനകവും കൗതുകകരവുമായ കാര്യങ്ങൾ എന്നിവയല്ല, പഴയ കടൽക്കൊള്ളക്കാരിൽ നിന്ന് മാത്രമേ നമ്മൾ ഇതുവരെ കേട്ടിട്ടുള്ളൂ. ഞങ്ങൾ ഇതിനകം RAW നേരിട്ടിട്ടുണ്ടെങ്കിലും - ഇവ ഫയലിന്റെ തുടക്കവുമായി ബന്ധപ്പെട്ട ഓഫ്‌സെറ്റുകൾ മാത്രമാണ് (അവയെ റോ പോയിന്ററുകൾ അല്ലെങ്കിൽ ഫയൽ ഓഫ്‌സെറ്റ് എന്നും വിളിക്കുന്നു). അതായത്, ഞങ്ങൾക്ക് ഒരു RAW വിലാസമുണ്ടെങ്കിൽ, ഫയലിന്റെ തുടക്കത്തിൽ നിന്ന് RAW സ്ഥാനങ്ങളിലേക്ക് നമ്മൾ ചുവടുവെക്കേണ്ടതുണ്ടെന്നാണ് ഇതിനർത്ഥം ( ptrFile+ റോ). അപ്പോൾ നിങ്ങൾക്ക് മൂല്യങ്ങൾ വായിക്കാൻ തുടങ്ങാം. ശ്രദ്ധേയമായ ഒരു ഉദാഹരണംഈ തരത്തിലുള്ളതാണ് e_lfnew- ഡോസ് തലക്കെട്ടിൽ ഞങ്ങൾ മുകളിൽ ചർച്ച ചെയ്തത്.

*യന്ത്രം: WORD - ഈ നമ്പർ (2 ബൈറ്റുകൾ) ഈ ആപ്ലിക്കേഷന് പ്രവർത്തിക്കാൻ കഴിയുന്ന പ്രൊസസർ ആർക്കിടെക്ചർ വ്യക്തമാക്കുന്നു.
വിഭാഗങ്ങളുടെ എണ്ണം: DWORD - ഫയലിലെ വിഭാഗങ്ങളുടെ എണ്ണം. വിഭാഗങ്ങൾ (ഇനി ഞങ്ങൾ അവയെ വിഭാഗങ്ങളുടെ പട്ടിക എന്ന് വിളിക്കും) ഹെഡറിന് (PE-ഹെഡർ) തൊട്ടുപിന്നാലെ പിന്തുടരുന്നു. വിഭാഗങ്ങളുടെ എണ്ണം 96 ആയി പരിമിതപ്പെടുത്തിയിട്ടുണ്ടെന്ന് ഡോക്യുമെന്റേഷൻ പറയുന്നു.
TimeDateStamp: WORD - ഫയൽ സൃഷ്ടിച്ച തീയതിയും സമയവും സംഭരിക്കുന്ന ഒരു നമ്പർ.
PointerToSymbolTable: DWORD എന്നത് ചിഹ്ന പട്ടികയുടെ ഓഫ്‌സെറ്റ് (RAW) ആണ്, കൂടാതെ SizeOfOptionalHeader ആണ് ഈ പട്ടികയുടെ വലുപ്പം. ഈ മേശസംഭരണത്തിനായി സേവിക്കാൻ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ, എന്നാൽ സേവനത്തിന്റെ തുടക്കത്തിൽ തന്നെ ഒരു പോരാളിയുടെ നഷ്ടം ഡിറ്റാച്ച്മെന്റ് ശ്രദ്ധിച്ചില്ല. മിക്കപ്പോഴും ഈ ഫീൽഡ് പൂജ്യങ്ങളാൽ മായ്‌ക്കപ്പെടുന്നു.
SIzeOfOptionHeader: WORD - ഓപ്‌ഷണൽ ഹെഡറിന്റെ വലുപ്പം (ഇത് ഉടനടി നിലവിലുള്ളത് പിന്തുടരുന്നു) ഒരു ഒബ്‌ജക്റ്റ് ഫയലിനായി അത് 0 ആയി സജ്ജീകരിച്ചിരിക്കുന്നുവെന്ന് ഡോക്യുമെന്റേഷൻ പറയുന്നു.
*സ്വഭാവഗുണങ്ങൾ: WORD - ഫയൽ സവിശേഷതകൾ.

* - മൂല്യങ്ങളുടെ ഒരു ശ്രേണി നിർവചിച്ചിരിക്കുന്ന ഫീൽഡുകൾ. സാധ്യമായ മൂല്യങ്ങളുടെ പട്ടികകൾ ഓഫീസിലെ ഘടന വിവരണത്തിൽ അവതരിപ്പിച്ചിരിക്കുന്നു. വെബ്സൈറ്റ് ഇവിടെ ലിസ്റ്റുചെയ്യില്ല, കാരണം ഫോർമാറ്റ് മനസ്സിലാക്കുന്നതിന് പ്രത്യേകിച്ച് പ്രധാനപ്പെട്ട ഒന്നും അവർ വഹിക്കുന്നില്ല.

നമുക്ക് ഈ ദ്വീപ് വിടാം! നാം മുന്നോട്ട് പോകേണ്ടതുണ്ട്. ഓപ്‌ഷണൽ-ഹെഡർ എന്ന രാജ്യമാണ് റഫറൻസ് പോയിന്റ്.

“മാപ്പ് എവിടെ, ബില്ലി? എനിക്ക് ഒരു മാപ്പ് വേണം.
(നിധി ദ്വീപ്)

ഓപ്ഷണൽ-ഹെഡർ (IMAGE_OPTIONAL_HEADER)

ഈ ഭൂഖണ്ഡത്തിന്റെ തലക്കെട്ട് അത്ര നല്ലതല്ല. ഈ തലക്കെട്ട് ആവശ്യമാണ് കൂടാതെ PE32, PE32+ എന്നീ 2 ഫോർമാറ്റുകൾ ഉണ്ട് (IMAGE_OPTIONAL_HEADER32, IMAGE_OPTIONAL_HEADER64 എന്നിവ യഥാക്രമം). ഫോർമാറ്റ് ഫീൽഡിൽ സംഭരിച്ചിരിക്കുന്നു ജാലവിദ്യ: വാക്ക്. ഫയൽ ഡൗൺലോഡ് ചെയ്യുന്നതിന് ആവശ്യമായ വിവരങ്ങൾ ഹെഡറിൽ അടങ്ങിയിരിക്കുന്നു. എല്ലായ്പ്പോഴുമെന്നപോലെ :

IMAGE_OPTIONAL_HEADER

typedef struct _IMAGE_OPTIONAL_HEADER ( വേഡ് മാജിക്; ബൈറ്റ് മേജർ ലിങ്കർ പതിപ്പ്; ബൈറ്റ് മൈനർ ലിങ്കർ പതിപ്പ്; DWORD സൈസ്ഓഫ് കോഡ്; DWORD സൈസ്ഓഫ്ഇനിഷ്യലൈസ്ഡ് ഡാറ്റ; DWORD വലുപ്പംOfUninitializedData D BaseOfData; DWORD ഇമേജ്ബേസ്; DWORD സെക്ഷൻ അലൈൻമെന്റ്; DWORD ഫയൽഅലൈൻമെന്റ്; WORD മേജർ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പതിപ്പ്; WORD മൈനർ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പതിപ്പ്; WORD MajorImageVersion; WORD മൈനർ ഇമേജ് പതിപ്പ്; വേഡ് മേജർ സബ്സിസ്റ്റം പതിപ്പ്; വേഡ് മൈനർ സബ്സിസ്റ്റം പതിപ്പ്; ഡിവേഡ് വിൻ 32 പതിപ്പ് മൂല്യം; ഡിവേഡ് സൈസ്ഓഫിമേജ്; ഡിവോർഡ് സൈസ്ഓഫ്ഹെഡേഴ്സ്; ഡിവോർഡ് ചെക്ക്സം; വേഡ് സബ്സിസ്റ്റം സി ഡിഒആർഎസ് ഡിഎൽഎൽസി; SizeOfStackCommit; DW ORD SizeOfHeapReserve; DWORD SizeOfHeapCommit; DWORD ലോഡർ ഫ്ലാഗുകൾ; DWORD നമ്പർ ഒഫ്ആർവയും വലുപ്പവും; IMAGE_DATA_ഡയറക്ടറി ഡാറ്റ ഡയറക്റ്ററി; ) IMAGE_DEOPTIONAL R , *PIMAGE_OPTIONAL_HEADER;


*എപ്പോഴും എന്നപോലെ, ഡൗൺലോഡ് മനസ്സിലാക്കുന്നതിലും ഫയലുമായി എങ്ങനെ മുന്നോട്ട് പോകാമെന്നും ഏറ്റവും വലിയ സ്വാധീനം ചെലുത്തുന്ന പ്രധാന ഫീൽഡുകൾ മാത്രമേ ഞങ്ങൾ പരിശോധിക്കൂ. നമുക്ക് സമ്മതിക്കാം - ഈ ഘടനയുടെ ഫീൽഡുകളിൽ VA (വെർച്വൽ വിലാസം), RVA (ആപേക്ഷിക വെർച്വൽ വിലാസം) വിലാസങ്ങളുള്ള മൂല്യങ്ങൾ അടങ്ങിയിരിക്കുന്നു. ഇവ RAW വിലാസങ്ങളല്ല, നിങ്ങൾക്ക് അവ വായിക്കാൻ (അല്ലെങ്കിൽ പകരം എണ്ണാൻ) കഴിയണം. ഇത് എങ്ങനെ ചെയ്യണമെന്ന് ഞങ്ങൾ തീർച്ചയായും പഠിക്കും, എന്നാൽ ആശയക്കുഴപ്പത്തിലാകാതിരിക്കാൻ ആദ്യം ഞങ്ങൾ പരസ്പരം പിന്തുടരുന്ന ഘടനകളെ വിശകലനം ചെയ്യും. ഇപ്പോൾ, ഓർക്കുക - കണക്കുകൂട്ടലുകൾക്ക് ശേഷം, ഫയലിലെ ഒരു പ്രത്യേക സ്ഥാനത്തേക്ക് പോയിന്റ് ചെയ്യുന്ന വിലാസങ്ങളാണിവ. നിങ്ങൾക്ക് ഒരു പുതിയ ആശയവും നേരിടേണ്ടിവരും - വിന്യാസം. RVA വിലാസങ്ങളുമായി സംയോജിച്ച് ഞങ്ങൾ ഇത് പരിഗണിക്കും, കാരണം ഇവ വളരെ അടുത്ത് ബന്ധപ്പെട്ടിരിക്കുന്നു.

വിലാസംഓഫ്എൻട്രിപോയിന്റ്: DWORD - എൻട്രി പോയിന്റിന്റെ RVA വിലാസം. വിലാസ സ്‌പെയ്‌സിലെ ഏത് പോയിന്റിലേക്കും ചൂണ്ടിക്കാണിക്കാൻ കഴിയും. .exe ഫയലുകൾക്കായി, എൻട്രി പോയിന്റ് പ്രോഗ്രാം എക്സിക്യൂഷൻ ആരംഭിക്കുന്ന വിലാസവുമായി പൊരുത്തപ്പെടുന്നു, അത് പൂജ്യത്തിന് തുല്യമാകില്ല!
ബേസ്ഓഫ്കോഡ്: DWORD - പ്രോഗ്രാം കോഡിന്റെ തുടക്കത്തിന്റെ RVA (കോഡ് വിഭാഗം).
BaseOfData: DWORD - പ്രോഗ്രാം കോഡിന്റെ തുടക്കത്തിന്റെ RVA (ഡാറ്റ വിഭാഗങ്ങൾ).
ഇമേജ്ബേസ്: DWORD - പ്രോഗ്രാം ലോഡുചെയ്യുന്നതിനുള്ള തിരഞ്ഞെടുത്ത അടിസ്ഥാന വിലാസം. 64kb യുടെ ഗുണിതമായിരിക്കണം. മിക്ക കേസുകളിലും ഇത് 0x00400000 ന് തുല്യമാണ്.
സെക്ഷൻ അലൈൻമെന്റ്: DWORD - വെർച്വൽ മെമ്മറിയിലേക്ക് അൺലോഡ് ചെയ്യുമ്പോൾ വിഭാഗത്തിന്റെ വിന്യാസ വലുപ്പം (ബൈറ്റുകൾ).
ഫയൽ അലൈൻമെന്റ്: DWORD - ഫയലിനുള്ളിലെ വിഭാഗത്തിന്റെ വിന്യാസ വലുപ്പം (ബൈറ്റുകൾ).
SizeOfImage: DWORD - എല്ലാ തലക്കെട്ടുകളും ഉൾപ്പെടെ മെമ്മറിയിലുള്ള ഫയലിന്റെ വലുപ്പം (ബൈറ്റുകളിൽ). SectionAligment-ന്റെ ഗുണിതമായിരിക്കണം.
സൈസ്ഓഫ്ഹെഡറുകൾ: DWORD - FileAligment-ലേക്ക് വിന്യസിച്ചിരിക്കുന്ന എല്ലാ തലക്കെട്ടുകളുടെയും (DOS, DOS-Stub, PE, Section) വലിപ്പം.
NumberOfRvaAndSizes: DWORD - ഡയറക്ടറി പട്ടികയിലെ ഡയറക്ടറികളുടെ എണ്ണം (പട്ടിക തന്നെ താഴെയാണ്). ഇപ്പോൾ, ഈ ഫീൽഡ് എല്ലായ്പ്പോഴും പ്രതീകാത്മക സ്ഥിരാങ്കമായ IMAGE_NUMBEROF_DIRECTORY_ENTRIES ന് തുല്യമാണ്, അത് 16 ന് തുല്യമാണ്.
ഡാറ്റ ഡയറക്‌ടറി: IMAGE_DATA_DIRECTORY - ഡാറ്റ ഡയറക്ടറി. ലളിതമായി പറഞ്ഞാൽ, ഇതൊരു അറേയാണ് (വലിപ്പം 16), ഓരോ ഘടകത്തിലും 2 DWORD മൂല്യങ്ങളുടെ ഘടന അടങ്ങിയിരിക്കുന്നു.

IMAGE_DATA_DIRECTORY ഘടന എന്താണെന്ന് നോക്കാം:

ടൈപ്പ്ഡെഫ് ഘടന _IMAGE_DATA_DIRECTORY (DWORD വെർച്വൽ വിലാസം; DWORD വലുപ്പം; ) IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
നമുക്ക് എന്താണ് ഉള്ളത്? ഞങ്ങൾക്ക് 16 ഘടകങ്ങളുടെ ഒരു നിരയുണ്ട്, അതിൽ ഓരോ ഘടകത്തിനും ഒരു വിലാസവും വലുപ്പവും അടങ്ങിയിരിക്കുന്നു (എന്ത്? എങ്ങനെ? എന്തുകൊണ്ട്? എല്ലാം ഒരു മിനിറ്റിനുള്ളിൽ). ഈ സ്വഭാവസവിശേഷതകൾ കൃത്യമായി എന്താണ് എന്ന ചോദ്യം ഉയർന്നുവരുന്നു. ഇതിനായി മൈക്രോസോഫ്റ്റിന് പൊരുത്തപ്പെടുത്തുന്നതിന് പ്രത്യേക സ്ഥിരാങ്കങ്ങളുണ്ട്. ഘടനയുടെ വിവരണത്തിന്റെ അവസാനത്തിൽ അവ കാണാൻ കഴിയും. ഇതിനിടയിൽ:

// ഡയറക്‌ടറി എൻട്രികൾ #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // എക്‌സ്‌പോർട്ട് ഡയറക്‌ടറി #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // റിസോഴ്‌സ്_ഡയറക്‌ടറി നിർവചിക്കുക //3YORCE_EXPORT ഡയറക്‌ടറി #നിർവചിക്കുക ഇൻ IMAGE_DIRECTORY_ENTRY_ സെക്യൂരിറ്റി 4 // സെക്യൂരിറ്റി ഡയറക്‌ടറി #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 / / ബേസ് റീലോക്കേഷൻ ടേബിൾ #നിർവചിക്കുക IMAGE_DIRECTORY_ENTRY_DEBUG 6 // ഡീബഗ് ഡയറക്‌ടറി // IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 ഉപയോഗം) #ഇമേജ്_ഡയറക്‌ടറി_ENTRY_ARCHITECTUREture ENTRY_ARCHITECTUREture 7 നിർവചിക്കുക. RY_GLOBALPTR 8 // GP യുടെ RVA #നിർവ്വചിക്കുക IMAGE_DIRE CTORY_ENTRY_TLS 9 // TLS ഡയറക്ടറി # IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 നിർവചിക്കുക // കോൺഫിഗറേഷൻ ഡയറക്‌ടറി ലോഡ് ചെയ്യുക #നിർവ്വചിക്കുക IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // തലക്കെട്ടുകളിലെ ബൗണ്ട് ഇംപോർട്ട് ഡയറക്‌ടറി # define IMAGE_DIRECTORY_ENTRY_ENTRY ENTRY_IAT നിർവചിക്കുക. _DELAY_IMPORT 13 // ഡിലേ ലോഡ് ഇംപോർട്ട് ഡിസ്ക്രിപ്റ്ററുകൾ #define IMAGE_DIRECTORY_ENTRY_COM _DESCRIPTOR 14 // COM റൺടൈം ഡിസ്ക്രിപ്റ്റർ
അതെ! അറേയുടെ ഓരോ ഘടകവും അതിനോട് ഘടിപ്പിച്ചിരിക്കുന്ന പട്ടികയ്ക്ക് ഉത്തരവാദികളാണെന്ന് ഞങ്ങൾ കാണുന്നു. പക്ഷേ അയ്യോ കഷ്ടം, ഈ തീരങ്ങൾ ഇപ്പോഴും നമുക്ക് അപ്രാപ്യമാണ്, കാരണം... VA, RVA വിലാസങ്ങൾ ഉപയോഗിച്ച് എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് ഞങ്ങൾക്ക് അറിയില്ല. പിന്നെ പഠിക്കണമെങ്കിൽ സെക്ഷനുകൾ ഏതൊക്കെയാണെന്ന് പഠിക്കണം. അവരാണ് അവരുടെ ഘടനയെയും പ്രവർത്തനത്തെയും കുറിച്ച് സംസാരിക്കുന്നത്, അതിനുശേഷം VA, RVA, വിന്യാസം എന്നിവ ആവശ്യമായി വരുന്നത് വ്യക്തമാകും. ഈ ലേഖനത്തിൽ, ഞങ്ങൾ കയറ്റുമതിയും ഇറക്കുമതിയും മാത്രം സ്പർശിക്കും. ശേഷിക്കുന്ന ഫീൽഡുകളുടെ ഉദ്ദേശ്യം ഓഫീസിൽ കണ്ടെത്താനാകും. ഡോക്യുമെന്റേഷൻ അല്ലെങ്കിൽ പുസ്തകങ്ങളിൽ. അതുകൊണ്ട് ഇതാ. യഥാർത്ഥ ഫീൽഡുകൾ:

വെർച്വൽ വിലാസം: DWORD - അറേ ഘടകം പൊരുത്തപ്പെടുന്ന പട്ടികയ്ക്കുള്ള RVA.
വലിപ്പം: DWORD - പട്ടിക വലുപ്പം ബൈറ്റുകളിൽ.

അങ്ങനെ! ഇറക്കുമതി, കയറ്റുമതി, വിഭവങ്ങൾ, മറ്റുള്ളവ എന്നിവയുടെ പട്ടികകൾ പോലെയുള്ള വിചിത്രമായ തീരങ്ങളിൽ എത്താൻ, ഞങ്ങൾ വിഭാഗങ്ങളുമായി ഒരു അന്വേഷണത്തിലൂടെ കടന്നുപോകേണ്ടതുണ്ട്. ശരി, ക്യാബിൻ ബോയ്, നമുക്ക് പൊതുവായ ഭൂപടം നോക്കാം, നമ്മൾ ഇപ്പോൾ എവിടെയാണെന്ന് നിർണ്ണയിച്ച് മുന്നോട്ട് പോകാം:

വിഭാഗങ്ങളുടെ വിശാലമായ തുറസ്സായ സ്ഥലങ്ങൾക്ക് മുന്നിൽ ഞങ്ങൾ നേരിട്ട് സ്ഥിതിചെയ്യുന്നു. അവർ എന്താണ് മറച്ചുവെക്കുന്നതെന്ന് ഞങ്ങൾ തീർച്ചയായും കണ്ടെത്തേണ്ടതുണ്ട്, ഒടുവിൽ മറ്റൊരു തരം അഭിസംബോധന കണ്ടെത്തേണ്ടതുണ്ട്. ഞങ്ങൾക്ക് യഥാർത്ഥ സാഹസികത വേണം! ഇറക്കുമതി, കയറ്റുമതി പട്ടികകൾ പോലുള്ള റിപ്പബ്ലിക്കുകളിലേക്ക് വേഗത്തിൽ പോകാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. പഴയ കടൽക്കൊള്ളക്കാർ പറയുന്നത് എല്ലാവർക്കും അവരിലേക്ക് എത്താൻ കഴിഞ്ഞില്ല, എന്നാൽ അവർ സ്വർണ്ണവുമായി മടങ്ങിയെന്നും സമുദ്രത്തെക്കുറിച്ചുള്ള വിശുദ്ധ അറിവുള്ള സ്ത്രീകളുമാണ്. ഞങ്ങൾ സെക്ഷൻ ഹെഡറിലേക്ക് പോയി.

“നീ സ്ഥാനഭ്രഷ്ടനായി, വെള്ളി! ബാരലിൽ നിന്ന് ഇറങ്ങുക! ”
(നിധി ദ്വീപ്)

വിഭാഗം തലക്കെട്ട് (IMAGE_SECTION_HEADER)


അറേയുടെ തൊട്ടുപിന്നിൽ ഡാറ്റ ഡയറക്‌ടറിവിഭാഗങ്ങൾ പരസ്പരം പിന്തുടരുന്നു. സെക്ഷൻ ടേബിൾ ഒരു പരമാധികാര രാഷ്ട്രത്തെ പ്രതിനിധീകരിക്കുന്നു, അത് വിഭജിച്ചിരിക്കുന്നു വിഭാഗങ്ങളുടെ എണ്ണംനഗരങ്ങൾ. ഓരോ നഗരത്തിനും അതിന്റേതായ കരകൗശലവും അതിന്റേതായ അവകാശങ്ങളും 0x28 ബൈറ്റുകളുടെ വലുപ്പവുമുണ്ട്. വിഭാഗങ്ങളുടെ എണ്ണം ഫീൽഡിൽ സൂചിപ്പിച്ചിരിക്കുന്നു വിഭാഗങ്ങളുടെ എണ്ണം, ഇത് ഫയൽ-ഹെഡറിൽ സംഭരിച്ചിരിക്കുന്നു. അതിനാൽ, നമുക്ക് ഘടന നോക്കാം:

ടൈപ്പ്ഡെഫ് ഘടന _IMAGE_SECTION_HEADER (BYTE പേര്; യൂണിയൻ (DWORD ഫിസിക്കൽ അഡ്രസ്; DWORD VirtualSize; ) മറ്റുള്ളവ; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRawData ORD നമ്പർ ഓഫ് റീലോക്കേഷനുകൾ; വേഡ് നമ്പർ ഓഫ് ലൈൻ നമ്പറുകൾ; D WORD സ്വഭാവസവിശേഷതകൾ; ) IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
പേര്: BYTE - വിഭാഗത്തിന്റെ പേര്. നിലവിൽ ഇത് 8 അക്ഷരങ്ങളാണ്.
വെർച്വൽ വലുപ്പം: DWORD - വെർച്വൽ മെമ്മറിയിലെ സെക്ഷൻ വലുപ്പം.
SizeOfRawData: DWORD - ഫയലിലെ സെക്ഷൻ വലുപ്പം.
വെർച്വൽ വിലാസം: DWORD - RVA വിഭാഗം വിലാസം.
SizeOfRawData: DWORD - ഫയലിലെ സെക്ഷൻ വലുപ്പം. ഒന്നിലധികം ആയിരിക്കണം ഫയൽ അലൈൻമെന്റ്.
PointerToRawData: DWORD - വിഭാഗത്തിന്റെ തുടക്കത്തിലേക്ക് റോ ഓഫ്‌സെറ്റ്. ഒന്നിലധികം ആയിരിക്കണം ഫയൽ അലൈൻമെന്റ്
സ്വഭാവഗുണങ്ങൾ: DWORD - വിഭാഗത്തിലേക്കുള്ള ആട്രിബ്യൂട്ടുകളും വെർച്വലിലേക്ക് ലോഡ് ചെയ്യുന്നതിനുള്ള നിയമങ്ങളും. ഓർമ്മ. ഉദാഹരണത്തിന്, ഒരു വിഭാഗത്തിന്റെ ഉള്ളടക്കങ്ങൾ നിർവചിക്കുന്നതിനുള്ള ഒരു ആട്രിബ്യൂട്ട് (പ്രാരംഭ ഡാറ്റ, നോൺ-ഇനിഷ്യൽ ഡാറ്റ, കോഡ്). അല്ലെങ്കിൽ ആട്രിബ്യൂട്ടുകൾ ആക്സസ് ചെയ്യുക - വായിക്കുക, എഴുതുക, നടപ്പിലാക്കുക. ഇത് അവരുടെ മുഴുവൻ ശ്രേണിയും അല്ല. IMAGE_SCN_ ൽ ആരംഭിക്കുന്ന അതേ WINNT.h-ൽ നിന്നുള്ള സ്ഥിരാങ്കങ്ങളാൽ സ്വഭാവസവിശേഷതകൾ സജ്ജീകരിച്ചിരിക്കുന്നു. വിഭാഗങ്ങളുടെ ആട്രിബ്യൂട്ടുകൾ കൂടുതൽ വിശദമായി നിങ്ങൾക്ക് പരിചയപ്പെടാം. ക്രിസ് കാസ്പെർസ്കിയുടെ പുസ്തകങ്ങളിലെ ആട്രിബ്യൂട്ടുകളും നന്നായി വിവരിച്ചിരിക്കുന്നു - റഫറൻസുകളുടെ പട്ടിക ലേഖനത്തിന്റെ അവസാനത്തിലാണ്.

പേരിനെ സംബന്ധിച്ച്, നിങ്ങൾ ഇനിപ്പറയുന്നവ ഓർക്കണം - ഉറവിടങ്ങളുള്ള വിഭാഗത്തിന് എല്ലായ്പ്പോഴും name.rsrc ഉണ്ടായിരിക്കണം. അല്ലെങ്കിൽ, ഉറവിടങ്ങൾ ലോഡ് ചെയ്യപ്പെടില്ല. ശേഷിക്കുന്ന വിഭാഗങ്ങളെ സംബന്ധിച്ചിടത്തോളം, പേര് എന്തും ആകാം. സാധാരണയായി അർത്ഥവത്തായ പേരുകൾ ഉണ്ട്, ഉദാഹരണത്തിന് .data, .src, മുതലായവ... എന്നാൽ ഇതും സംഭവിക്കുന്നു:

വെർച്വൽ മെമ്മറിയിലേക്ക് അൺലോഡ് ചെയ്‌തിരിക്കുന്ന ഒരു മേഖലയാണ് വിഭാഗങ്ങൾ, എല്ലാ പ്രവർത്തനങ്ങളും ഈ ഡാറ്റ ഉപയോഗിച്ച് നേരിട്ട് നടക്കുന്നു. വെർച്വൽ മെമ്മറിയിലുള്ള വിലാസം, ഓഫ്‌സെറ്റുകളൊന്നുമില്ലാതെ, വെർച്വൽ വിലാസം, ചുരുക്കി VA എന്ന് വിളിക്കുന്നു. ആപ്ലിക്കേഷൻ ഡൌൺലോഡ് ചെയ്യുന്നതിനായി തിരഞ്ഞെടുത്ത വിലാസം, ഫീൽഡിൽ സജ്ജമാക്കുക ഇമേജ്ബേസ്. വെർച്വൽ മെമ്മറിയിൽ ആപ്ലിക്കേഷൻ ഏരിയ ആരംഭിക്കുന്ന പോയിന്റ് പോലെയാണിത്. കൂടാതെ RVA (ആപേക്ഷിക വെർച്വൽ വിലാസം) ഓഫ്‌സെറ്റുകൾ ഈ പോയിന്റുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ അളക്കുന്നു. അതായത്, VA = ഇമേജ്ബേസ്+ RVA; ഇമേജ്ബേസ്ഞങ്ങൾ എപ്പോഴും അറിയുകയും ഞങ്ങളുടെ പക്കലുള്ള VA അല്ലെങ്കിൽ RVA ഉണ്ടെങ്കിൽ, നമുക്ക് ഒന്നിലൂടെ മറ്റൊന്ന് പ്രകടിപ്പിക്കാൻ കഴിയും.

അവർ ഇവിടെ ശീലിച്ചതായി തോന്നുന്നു. എന്നാൽ ഇത് വെർച്വൽ മെമ്മറിയാണ്! പിന്നെ നമ്മൾ ശാരീരികാവസ്ഥയിലാണ്. ഇപ്പോൾ നമുക്ക് വെർച്വൽ മെമ്മറി മറ്റ് ഗാലക്സികളിലേക്കുള്ള ഒരു യാത്ര പോലെയാണ്, അത് നമുക്ക് സങ്കൽപ്പിക്കാൻ മാത്രമേ കഴിയൂ. അതിനാൽ ഞങ്ങൾക്ക് ഇപ്പോൾ വെർച്വൽ മെമ്മറിയിൽ പ്രവേശിക്കാൻ കഴിയില്ല, പക്ഷേ അവിടെ എന്തായിരിക്കുമെന്ന് നമുക്ക് കണ്ടെത്താനാകും, കാരണം അത് ഞങ്ങളുടെ ഫയലിൽ നിന്ന് എടുത്തതാണ്.

വിന്യാസം


വെർച്വലിലേക്ക് അപ്‌ലോഡ് ചെയ്യുന്നതിനെ ശരിയായി പ്രതിനിധീകരിക്കുന്നതിന്. മെമ്മറി, വിന്യാസം പോലുള്ള ഒരു സംവിധാനം മനസ്സിലാക്കേണ്ടത് ആവശ്യമാണ്. ആദ്യം, എങ്ങനെയാണ് വിഭാഗങ്ങൾ മെമ്മറിയിലേക്ക് പേജ് ചെയ്യപ്പെടുന്നത് എന്നതിന്റെ ഒരു ഡയഗ്രം നോക്കാം.

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, വിഭാഗം അതിന്റെ വലുപ്പത്തിനനുസരിച്ച് മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്തിട്ടില്ല. ഇവിടെയാണ് വിന്യാസങ്ങൾ ഉപയോഗിക്കുന്നത്. മെമ്മറിയിലെ വിഭാഗത്തിന്റെ വലിപ്പത്തിന്റെ ഗുണിതമായിരിക്കണം ഇത് മൂല്യം. ഡയഗ്രം നോക്കിയാൽ, സെക്ഷൻ സൈസ് 0x28 ആണെന്നും സെക്ഷന്റെ വലിപ്പം 0x50 ആണെന്നും കാണാം. വിന്യാസത്തിന്റെ വലുപ്പമാണ് ഇതിന് കാരണം. 0x28 0x50 "എത്തുന്നില്ല", അതിന്റെ ഫലമായി, വിഭാഗം അൺലോഡ് ചെയ്യും, കൂടാതെ 0x50-0x28 വലുപ്പത്തിൽ ശേഷിക്കുന്ന ഇടം പൂജ്യമാകും. വിഭാഗത്തിന്റെ വലുപ്പമാണെങ്കിൽ വലിയ വലിപ്പംവിന്യാസം, പിന്നെ എന്ത്? ഉദാഹരണത്തിന് വിഭാഗത്തിന്റെ വലിപ്പം= 0x78, എ വിഭാഗം വിന്യാസം= 0x50, അതായത്. മാറ്റമില്ലാതെ തുടർന്നു. ഈ സാഹചര്യത്തിൽ, വിഭാഗം മെമ്മറിയിൽ 0xA0 (0xA0 = 0x28 * 0x04) ബൈറ്റുകൾ ഉൾക്കൊള്ളുന്നു. അതായത്, ഗുണിതമായ ഒരു മൂല്യം വിഭാഗം വിന്യാസംപൂർണ്ണമായും മൂടുന്നു വിഭാഗത്തിന്റെ വലിപ്പം. ഫയലിലെ വിഭാഗങ്ങൾ സമാനമായ രീതിയിൽ വിന്യസിച്ചിരിക്കുന്നുവെന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്, വലുപ്പമനുസരിച്ച് മാത്രം ഫയൽ അലൈൻമെന്റ്. ആവശ്യമായ അടിസ്ഥാനം ലഭിച്ചുകഴിഞ്ഞാൽ, ആർ‌വി‌എയിൽ നിന്ന് റോയിലേക്ക് എങ്ങനെ പരിവർത്തനം ചെയ്യാമെന്ന് നമുക്ക് കണ്ടെത്താനാകും.

"ഇതൊരു സമതലമല്ല, ഇവിടുത്തെ കാലാവസ്ഥ വ്യത്യസ്തമാണ്."
(വി.എസ്. വൈസോട്സ്കി)

ഒരു ചെറിയ ഗണിത പാഠം


നിർവ്വഹണം ആരംഭിക്കുന്നതിന് മുമ്പ്, പ്രോഗ്രാമിന്റെ ചില ഭാഗം പ്രോസസറിന്റെ വിലാസ സ്ഥലത്തേക്ക് അയയ്ക്കണം. അഡ്രസ് സ്പേസ് എന്നത് പ്രോസസർ ഫിസിക്കൽ ആയി അഭിസംബോധന ചെയ്യുന്ന ഡാറ്റയുടെ അളവാണ്. റാൻഡം ആക്സസ് മെമ്മറി. പ്രോഗ്രാം അൺലോഡ് ചെയ്ത വിലാസ സ്ഥലത്ത് "കഷണം" എന്ന് വിളിക്കുന്നു ഫലത്തിൽ(വെർച്വൽ ചിത്രം). അടിസ്ഥാന ഡൗൺലോഡ് വിലാസവും (ഇമേജ് ബേസ്) വലുപ്പവും (ചിത്രത്തിന്റെ വലുപ്പം) ചിത്രത്തിന്റെ സവിശേഷതയാണ്. അതിനാൽ വെർച്വൽ മെമ്മറിയുടെ തുടക്കവുമായി ബന്ധപ്പെട്ട വിലാസമാണ് VA (വെർച്വൽ വിലാസം), കൂടാതെ പ്രോഗ്രാം അൺലോഡ് ചെയ്ത സ്ഥലവുമായി ബന്ധപ്പെട്ട RVA (ആപേക്ഷിക വിർച്ച്വൽ വിലാസം). ഒരു ആപ്ലിക്കേഷന്റെ അടിസ്ഥാന ഡൗൺലോഡ് വിലാസം എങ്ങനെ കണ്ടെത്താം? ഇതിനായി ഓപ്ഷണൽ ഹെഡറിൽ ഒരു പ്രത്യേക ഫീൽഡ് ഉണ്ട് ഇമേജ്ബേസ്. ഇത് നിങ്ങളുടെ ഓർമ്മ പുതുക്കുന്നതിനുള്ള ഒരു ചെറിയ ആമുഖമായിരുന്നു. ഇപ്പോൾ നമുക്ക് വ്യത്യസ്ത വിലാസങ്ങളുടെ ഒരു സ്കീമാറ്റിക് പ്രാതിനിധ്യം നോക്കാം:

ഒരു ഫയലിൽ നിന്നുള്ള വിവരങ്ങൾ വെർച്വൽ മെമ്മറിയിലേക്ക് ഡംപ് ചെയ്യാതെ നിങ്ങൾക്ക് എങ്ങനെ തുടർന്നും വായിക്കാനാകും? ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ വിലാസങ്ങൾ RAW ഫോർമാറ്റിലേക്ക് പരിവർത്തനം ചെയ്യേണ്ടതുണ്ട്. അപ്പോൾ നമുക്ക് ആവശ്യമുള്ള സ്ഥലത്തേക്ക് ഫയലിന്റെ ഉള്ളിൽ ചുവടുവെക്കാനും ആവശ്യമായ ഡാറ്റ വായിക്കാനും കഴിയും. ഫയലിൽ നിന്ന് ഡാറ്റ പ്രൊജക്റ്റ് ചെയ്ത വെർച്വൽ മെമ്മറി വിലാസം RVA ആയതിനാൽ, നമുക്ക് റിവേഴ്സ് പ്രോസസ് ചെയ്യാൻ കഴിയും. ഇത് ചെയ്യുന്നതിന് നമുക്ക് ഒമ്പത് പതിനാറ് ലളിതമായ ഗണിതശാസ്ത്രം ആവശ്യമാണ്. ചില സൂത്രവാക്യങ്ങൾ ഇതാ:

VA = ഇമേജ്ബേസ് + RVA; RAW = RVA - sectionRVA + rawSection; // rawSection - ഫയലിന്റെ തുടക്കം മുതൽ വിഭാഗത്തിലേക്ക് ഓഫ്‌സെറ്റ് ചെയ്യുക // sectionRVA - വിഭാഗത്തിന്റെ RVA (ഈ ഫീൽഡ് വിഭാഗത്തിനുള്ളിൽ സംഭരിച്ചിരിക്കുന്നു)
നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, RAW കണക്കാക്കാൻ, RVA ഉൾപ്പെടുന്ന വിഭാഗം ഞങ്ങൾ നിർണ്ണയിക്കേണ്ടതുണ്ട്. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ എല്ലാ വിഭാഗങ്ങളിലൂടെയും പോയി ഇനിപ്പറയുന്ന വ്യവസ്ഥകൾ പരിശോധിക്കേണ്ടതുണ്ട്:

RVA >= വിഭാഗം VitualAddress && RVA< ALIGN_UP(sectionVirtualSize, sectionAligment) // sectionAligment - выравнивание для секции. Значение можно узнать в Optional-header. // sectionVitualAddress - RVA секции - хранится непосредственно в секции // ALIGN_UP() - функция, определяющая сколько занимает секция в памяти, учитывая выравнивание
എല്ലാ പസിലുകളും ഒരുമിച്ച് ചേർത്താൽ, ഞങ്ങൾക്ക് ഈ ലിസ്റ്റിംഗ് ലഭിക്കും:

Typedef uint32_t DWORD; typedef uint16_t WORD; typedef uint8_t BYTE; ALIGN_DOWN(x, align) (x & ~(align-1)) #define ALIGN_UP(x, align) ((x & (align-1))?ALIGN_DOWN(x,align)+align:x) // IMAGE_SECTION_HEADER വിഭാഗങ്ങൾ; // init അറേ വിഭാഗങ്ങൾ int defSection(DWORD rva) (ഇന് (int i = 0; i< numberOfSection; ++i) { DWORD start = sections[i].VirtualAddress; DWORD end = start + ALIGN_UP(sections[i].VirtualSize, sectionAligment); if(rva >= ആരംഭിക്കുക && 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; }
*ഞാൻ കോഡിൽ ഒരു ടൈപ്പ് ഡിക്ലറേഷനോ അറേ ഇനീഷ്യലൈസേഷനോ ഉൾപ്പെടുത്തിയിട്ടില്ല, വിലാസങ്ങൾ കണക്കാക്കാൻ സഹായിക്കുന്ന ഫംഗ്ഷനുകൾ മാത്രമാണ് നൽകിയത്. നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, കോഡ് വളരെ സങ്കീർണ്ണമായിരുന്നില്ല. ഒരു ചെറിയ ആശയക്കുഴപ്പം മാത്രം. ഡിസ്അസംബ്ലറിലൂടെ .exe ഉപയോഗിച്ച് ടിങ്കർ ചെയ്യാൻ നിങ്ങൾ കുറച്ച് സമയം ചിലവഴിച്ചാൽ ഇത് ഇല്ലാതാകും.

ഹൂറേ! ഞങ്ങൾ അത് മനസ്സിലാക്കി. ഇപ്പോൾ നമുക്ക് വിഭവങ്ങളുടെ നാടുകളിലേക്കും, ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാനും കയറ്റുമതി ചെയ്യാനും, പൊതുവെ നമ്മുടെ ഹൃദയം ആഗ്രഹിക്കുന്നിടത്തേക്കും പോകാം. ഒരു പുതിയ തരം വിലാസം ഉപയോഗിച്ച് എങ്ങനെ പ്രവർത്തിക്കാമെന്ന് ഞങ്ങൾ പഠിച്ചു. നമുക്ക് റോഡിലിറങ്ങാം!

"-മോശമല്ല, മോശമല്ല! എന്നിട്ടും, അവർക്ക് ഇന്നത്തെ റേഷൻ ലഭിച്ചു!
(നിധി ദ്വീപ്)

കയറ്റുമതി പട്ടിക


അറേയുടെ ആദ്യ ഘടകത്തിൽ തന്നെ ഡാറ്റ ഡയറക്‌ടറി IMAGE_EXPORT_DIRECTORY ഘടന പ്രതിനിധീകരിക്കുന്ന കയറ്റുമതി പട്ടികയിൽ RVA സംഭരിച്ചിരിക്കുന്നു. ഡൈനാമിക് ലൈബ്രറി (.dll) ഫയലുകൾക്ക് ഈ പട്ടിക സാധാരണമാണ്. കയറ്റുമതി ചെയ്ത പ്രവർത്തനങ്ങളെ അവയുടെ RVA-യുമായി ബന്ധപ്പെടുത്തുക എന്നതാണ് പട്ടികയുടെ പ്രധാന ലക്ഷ്യം. വിവരണം ഓഫീസിൽ അവതരിപ്പിച്ചിട്ടുണ്ട്. സ്പെസിഫിക്കേഷനുകൾ:

Typedef struct _IMAGE_EXPORT_DIRECTORY ( DWORD സ്വഭാവസവിശേഷതകൾ; DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersion; DWORD പേര്; DWORD ബേസ്; DWORD നമ്പർ; DWORD ബേസ്; DWORD നമ്പർ പ്രവർത്തനരീതികൾ; DWORD വിലാസം DWORD വിലാസം നമ്പർ; es; DWORD വിലാസംഓർഡിനലുകൾ; ) IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
ഈ ഘടനയിൽ മൂന്ന് വ്യത്യസ്ത പട്ടികകളിലേക്കുള്ള മൂന്ന് പോയിന്ററുകൾ അടങ്ങിയിരിക്കുന്നു. ഇത് പേരുകളുടെ ഒരു പട്ടികയാണ് (പ്രവർത്തനങ്ങൾ) ( വിലാസം), ഓർഡിനലുകൾ ( വിലാസംഓർഡിനലുകൾ), വിലാസങ്ങൾ ( പ്രവർത്തനങ്ങളുടെ വിലാസം). നെയിം ഫീൽഡ് പേരിന്റെ RVA സംഭരിക്കുന്നു ഡൈനാമിക് ലൈബ്രറി. ഓർഡിനൽ എന്നത് പേരുകളുടെ പട്ടികയ്ക്കും വിലാസങ്ങളുടെ പട്ടികയ്ക്കും ഇടയിലുള്ള ഒരു ഇടനിലക്കാരനെപ്പോലെയാണ്, ഇത് സൂചികകളുടെ ഒരു നിരയാണ് (സൂചിക വലുപ്പം 2 ബൈറ്റുകൾ). കൂടുതൽ വ്യക്തതയ്ക്കായി, ഡയഗ്രം പരിഗണിക്കുക:

നമുക്ക് ഒരു ഉദാഹരണം നോക്കാം. നെയിംസ് അറേയുടെ i-th ഘടകം ഫംഗ്ഷന്റെ പേര് സൂചിപ്പിക്കുന്നുവെന്ന് നമുക്ക് പറയാം. അപ്പോൾ ഈ ഫംഗ്‌ഷന്റെ വിലാസം വിലാസ അറേയിലെ i-th എലമെന്റ് ആക്‌സസ് ചെയ്‌ത് ലഭിക്കും. ആ. ഞാൻ ഒരു ഓർഡിനലാണ്.

ശ്രദ്ധ!നിങ്ങൾ ഒരു ഓർഡിനലുകളുടെ പട്ടികയിലെ 2-ാമത്തെ മൂലകത്തെ ഉദാഹരണമായി എടുക്കുകയാണെങ്കിൽ, അത് 2 എന്നല്ല അർത്ഥമാക്കുന്നത് - ഇത് പേരുകളുടെയും വിലാസങ്ങളുടെയും പട്ടികകൾക്കുള്ള ഒരു ഓർഡിനലാണ്. ഓർഡിനലുകളുടെ നിരയിലെ രണ്ടാമത്തെ മൂലകത്തിൽ സംഭരിച്ചിരിക്കുന്ന മൂല്യമാണ് സൂചിക.

നെയിം ടേബിളിലെ മൂല്യങ്ങളുടെ എണ്ണം ( പേരുകളുടെ എണ്ണം) കൂടാതെ ഓർഡിനലുകൾ തുല്യമാണ്, വിലാസ പട്ടികയിലെ ഘടകങ്ങളുടെ എണ്ണവുമായി എല്ലായ്പ്പോഴും പൊരുത്തപ്പെടുന്നില്ല ( പ്രവർത്തനങ്ങളുടെ എണ്ണം).

"അവർ എനിക്കായി വന്നു. നിങ്ങളുടെ ശ്രദ്ധയ്ക്ക് നന്ദി. ഇപ്പോൾ അവർ കൊല്ലുകയായിരിക്കണം!"
(നിധി ദ്വീപ്)

ഇറക്കുമതി പട്ടിക


ഡൈനാമിക് ലൈബ്രറികൾ ഉപയോഗിക്കുന്ന ഏതൊരു ആപ്ലിക്കേഷന്റെയും അവിഭാജ്യ ഘടകമാണ് ഇറക്കുമതി പട്ടിക. ഡൈനാമിക് ലൈബ്രറി ഫംഗ്‌ഷനുകളിലേക്കുള്ള കോളുകൾ അനുബന്ധ വിലാസങ്ങളുമായി പരസ്പരബന്ധിതമാക്കാൻ ഈ പട്ടിക സഹായിക്കുന്നു. ഇറക്കുമതി മൂന്നിൽ സംഭവിക്കാം വ്യത്യസ്ത മോഡുകൾ: സ്റ്റാൻഡേർഡ്, ബൗണ്ട് ഇറക്കുമതി, കാലതാമസം ഇറക്കുമതി. കാരണം ഇറക്കുമതി വിഷയം തികച്ചും ബഹുമുഖവും ഒരു പ്രത്യേക ലേഖനത്തിന് അർഹവുമാണ്; ഞാൻ സ്റ്റാൻഡേർഡ് മെക്കാനിസത്തെ മാത്രമേ വിവരിക്കുകയുള്ളൂ, ബാക്കിയുള്ളവ ഞാൻ "അസ്ഥികൂടം" എന്ന് മാത്രം വിവരിക്കും.

സ്റ്റാൻഡേർഡ് ഇറക്കുമതി- വി ഡാറ്റ ഡയറക്‌ടറിഇറക്കുമതി പട്ടിക IMAGE_DIRECTORY_ENTRY_IMPORT(=1) എന്ന സൂചികയ്ക്ക് കീഴിലാണ് സംഭരിച്ചിരിക്കുന്നത്. ഇത് IMAGE_IMPORT_DESCRIPTOR തരത്തിലുള്ള ഘടകങ്ങളുടെ ഒരു നിരയാണ്. ഇംപോർട്ട് ടേബിൾ (ഒരു അറേയിൽ) ഫംഗ്‌ഷനുകളുടെ/ഓർഡിനലുകളുടെ പേരുകളും ഈ ഫംഗ്‌ഷന്റെ ഫലപ്രദമായ വിലാസം ലോഡർ എഴുതേണ്ട സ്ഥലങ്ങളും സംഭരിക്കുന്നു. ഈ സംവിധാനം വളരെ ഫലപ്രദമല്ല, കാരണം വ്യക്തമായി പറഞ്ഞാൽ, ആവശ്യമുള്ള ഓരോ ഫംഗ്ഷനും മുഴുവൻ കയറ്റുമതി പട്ടികയിലൂടെയും തിരയുന്നതിലേക്ക് എല്ലാം വരുന്നു.

ബന്ധിത ഇറക്കുമതി- ഫീൽഡുകളിലെ ഈ ജോലിയുടെ സ്കീമിനൊപ്പം (ആദ്യ ഘടകത്തിൽ സാധാരണ പട്ടികഇറക്കുമതി) TimeDateStamp, ForwardChain എന്നിവ -1 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു, കൂടാതെ ബൈൻഡിംഗ് വിവരങ്ങൾ സെല്ലിൽ സൂക്ഷിക്കുന്നു ഡാറ്റ ഡയറക്‌ടറി IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT(=11) സൂചികയ്‌ക്കൊപ്പം അതായത്, നിങ്ങൾ ബന്ധിപ്പിച്ച ഇറക്കുമതി ഉപയോഗിക്കേണ്ട ലോഡറിലേക്കുള്ള ഒരു തരം ഫ്ലാഗാണിത്. കൂടാതെ, "ബൗണ്ട് ഇംപോർട്ട് ചെയിൻ" സ്വന്തം ഘടനകൾ ഉണ്ട്. പ്രവർത്തന അൽഗോരിതം ഇപ്രകാരമാണ്: ആപ്ലിക്കേഷന്റെ വെർച്വൽ മെമ്മറി അൺലോഡ് ചെയ്തു ആവശ്യമായ ലൈബ്രറികൂടാതെ ആവശ്യമായ എല്ലാ വിലാസങ്ങളും സമാഹാര ഘട്ടത്തിൽ "ബൈൻഡ്" ചെയ്തിരിക്കുന്നു. ഒരു പോരായ്മ, dll വീണ്ടും കംപൈൽ ചെയ്യുമ്പോൾ, നിങ്ങൾ ആപ്ലിക്കേഷൻ തന്നെ വീണ്ടും കംപൈൽ ചെയ്യേണ്ടതുണ്ട്, കാരണം ഫംഗ്‌ഷൻ വിലാസങ്ങൾ മാറ്റപ്പെടും.

ഇറക്കുമതി വൈകുക- at ഈ രീതി.dll ഫയൽ എക്‌സിക്യൂട്ടബിൾ ഒന്നിൽ ഘടിപ്പിച്ചിട്ടുണ്ടെന്ന് അനുമാനിക്കപ്പെടുന്നു, പക്ഷേ അത് ഉടനടി മെമ്മറിയിലേക്ക് അൺലോഡ് ചെയ്യുന്നില്ല (മുമ്പത്തെ രണ്ട് രീതികളിലെന്നപോലെ), പക്ഷേ ആപ്ലിക്കേഷൻ ആദ്യം ചിഹ്നത്തിലേക്ക് പ്രവേശിക്കുമ്പോൾ മാത്രം (ഇതാണ് ഡൈനാമിക് ലൈബ്രറികളിൽ നിന്നുള്ള ഘടകങ്ങൾ അൺലോഡ് ചെയ്യുന്നത്. വിളിക്കുന്നു). അതായത്, പ്രോഗ്രാം മെമ്മറിയിൽ എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു, കൂടാതെ ഒരു ഡൈനാമിക് ലൈബ്രറിയിൽ നിന്ന് ഒരു ഫംഗ്ഷനെ വിളിക്കുന്ന ഘട്ടത്തിൽ പ്രോസസ്സ് എത്തിയ ഉടൻ, ഒരു പ്രത്യേക ഹാൻഡ്ലറെ വിളിക്കുന്നു, അത് dll ലോഡ് ചെയ്യുകയും അതിന്റെ പ്രവർത്തനങ്ങളുടെ ഫലപ്രദമായ വിലാസങ്ങൾ വിതരണം ചെയ്യുകയും ചെയ്യുന്നു. മാറ്റിവെച്ച ഇറക്കുമതിക്കായി, ലോഡർ ഡാറ്റ ഡയറക്‌ടറിയുമായി ബന്ധപ്പെടുന്നു (ഇനം നമ്പർ 15).

ഇറക്കുമതി രീതികൾ അൽപ്പം ഉൾക്കൊള്ളിച്ച ശേഷം, നമുക്ക് നേരിട്ട് ഇറക്കുമതി പട്ടികയിലേക്ക് പോകാം.

“ഇതൊരു നാവികനാണ്! അവന്റെ വസ്ത്രങ്ങൾ നോട്ടിക്കൽ ആയിരുന്നു. - അതെ? നിങ്ങൾ ഇവിടെ ഒരു ബിഷപ്പിനെ കണ്ടെത്തുമെന്ന് നിങ്ങൾ കരുതിയിരുന്നോ?
(ട്രഷർ ഐലൻഡ് - ജോൺ സിൽവർ)

ഇമ്പോർട്ട്-ഡിസ്ക്രിപ്റ്റർ (IMAGE_IMPORT_DESCRIPTOR)


ഇറക്കുമതി പട്ടികയുടെ കോർഡിനേറ്റുകൾ കണ്ടെത്തുന്നതിന്, ഞങ്ങൾ അറേ ആക്സസ് ചെയ്യേണ്ടതുണ്ട് ഡാറ്റ ഡയറക്‌ടറി. അതായത്, IMAGE_DIRECTORY_ENTRY_IMPORT ഘടകത്തിലേക്ക് (=1). കൂടാതെ പട്ടികയുടെ RVA വിലാസം വായിക്കുക. ഇവിടെ പൊതു പദ്ധതിനിങ്ങൾ സ്വീകരിക്കേണ്ട പാത:

അപ്പോൾ നമുക്ക് RVA-യിൽ നിന്ന് RAW ലഭിക്കും, മുകളിൽ നൽകിയിരിക്കുന്ന സൂത്രവാക്യങ്ങൾക്ക് അനുസൃതമായി, തുടർന്ന് ഫയലിലൂടെ "ഘട്ടം". ഇപ്പോൾ നമ്മൾ IMAGE_IMPORT_DESCRIPTOR എന്ന് വിളിക്കുന്ന ഘടനകളുടെ ഒരു നിരയുടെ മുന്നിലാണ്. അറേയുടെ അവസാനം സൂചിപ്പിക്കുന്നത് "പൂജ്യം" ഘടനയാണ്.

ടൈപ്പ്ഡെഫ് സ്ട്രക്റ്റ് _IMAGE_IMPORT_DESCRIPTOR (യൂണിയൻ (DWORD സ്വഭാവസവിശേഷതകൾ; DWORD OriginalFirstThunk; ) DUMMYUNIONNAME; DWORD TimeDateStamp; DWORD ForwarderChain; DWORD AGEM,DWORD Name RT_DESCRIPTOR;
msdn-ൽ ഘടനയുടെ വിവരണത്തിലേക്കുള്ള ഒരു ലിങ്ക് എനിക്ക് കണ്ടെത്താൻ കഴിഞ്ഞില്ല, എന്നാൽ WINNT.h ഫയലിൽ നിങ്ങൾക്കത് കാണാൻ കഴിയും. നമുക്ക് അത് കണ്ടുപിടിക്കാൻ തുടങ്ങാം.

OriginalFirstThunk: DWORD - ഇറക്കുമതി നാമ പട്ടികയുടെ (INT) RVA.
TimeDateStamp: DWORD - തീയതിയും സമയവും.
ഫോർവേഡർചെയിൻ: DWORD - ആദ്യം കൈമാറിയ പ്രതീകത്തിന്റെ സൂചിക.
പേര്: DWORD - ലൈബ്രറി പേരുള്ള RVA സ്ട്രിംഗ്.
ഫസ്റ്റ് തങ്ക്: DWORD - ഇറക്കുമതി വിലാസ പട്ടികയുടെ (IAT) RVA.

ഇവിടെ എല്ലാം കയറ്റുമതിയോട് സാമ്യമുള്ളതാണ്. പേരുകളുടെ ഒരു പട്ടികയും (INT) കൂടാതെ അതിൽ വിലാസങ്ങളുടെ ഒരു റാഗ് (IAT). കൂടാതെ ലൈബ്രറിയുടെ പേരിന്റെ RVA. INT, IAT എന്നിവ മാത്രമേ IMAGE_THUNK_DATA ഘടനകളുടെ ഒരു നിരയെ പരാമർശിക്കുന്നുള്ളൂ. ഇത് രണ്ട് രൂപങ്ങളിൽ അവതരിപ്പിച്ചിരിക്കുന്നു - 64, 32 സിസ്റ്റങ്ങൾക്ക്, ഫീൽഡുകളുടെ വലുപ്പത്തിൽ മാത്രം വ്യത്യാസമുണ്ട്. നമുക്ക് x86 ഉദാഹരണമായി നോക്കാം:

Typedef struct _IMAGE_THUNK_DATA32 ( യൂണിയൻ ( DWORD ForwarderString; DWORD ഫംഗ്ഷൻ; DWORD Ordinal; DWORD AddressOfData; ) u1; ) IMAGE_THUNK_DATA32,*PIMAGE_THUNK_DATA32;
അതിന് ഉത്തരം പറയേണ്ടത് പ്രധാനമാണ് തുടർ പ്രവർത്തനങ്ങൾഘടനയുടെ ഏറ്റവും പ്രധാനപ്പെട്ട ഭാഗത്തെ ആശ്രയിച്ചിരിക്കുന്നു. ഇത് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ശേഷിക്കുന്ന ബിറ്റുകൾ ഇംപോർട്ട് ചെയ്യുന്ന പ്രതീകത്തിന്റെ എണ്ണത്തെ പ്രതിനിധീകരിക്കുന്നു (സംഖ്യ പ്രകാരം ഇറക്കുമതി ചെയ്യുക). അല്ലെങ്കിൽ (ഏറ്റവും പ്രധാനപ്പെട്ട ബിറ്റ് മായ്‌ച്ചു), ശേഷിക്കുന്ന ബിറ്റുകൾ ഇറക്കുമതി ചെയ്യുന്ന ചിഹ്നത്തിന്റെ RVA വ്യക്തമാക്കുന്നു (പേര് പ്രകാരം ഇറക്കുമതി ചെയ്യുക). പേരിനനുസരിച്ച് ഞങ്ങൾക്ക് ഒരു ഇറക്കുമതി ഉണ്ടെങ്കിൽ, പോയിന്റർ വിലാസം ഇനിപ്പറയുന്ന ഘടനയിലേക്ക് സംഭരിക്കുന്നു:

ടൈപ്പ്ഡെഫ് ഘടന _IMAGE_IMPORT_BY_NAME (പദ സൂചന; BYTE പേര്; ) IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
ഇവിടെ സൂചനഫംഗ്ഷൻ നമ്പർ ആണ്, ഒപ്പം പേര്- പേര്.

ഇതെല്ലാം എന്തിനുവേണ്ടിയാണ്? ഈ ശ്രേണികൾ, ഘടനകൾ... വ്യക്തതയ്ക്കായി, നമുക്ക് ഒരു അത്ഭുതകരമായ ഡയഗ്രം പരിഗണിക്കാം

ഓപറേറ്റിംഗ് സിസ്റ്റം ലോഡർ മുഖേന മെമ്മറി, തുടർന്ന് എക്സിക്യൂട്ട് ചെയ്യുന്നു. ഓപ്പറേഷൻ റൂമിൽ വിൻഡോസ് സിസ്റ്റംഎക്സിക്യൂട്ടബിൾ ഫയലുകൾക്ക് സാധാരണയായി ".exe", ".dll" എന്നീ വിപുലീകരണങ്ങളാണുള്ളത്. ഉപയോക്താവിന് നേരിട്ട് സമാരംഭിക്കാവുന്ന പ്രോഗ്രാമുകളെയാണ് ".exe" വിപുലീകരണം സൂചിപ്പിക്കുന്നത്. ".dll" എന്ന വിപുലീകരണത്തിന് ഡൈനാമിക്കലി ലിങ്ക്ഡ് ലൈബ്രറികൾ എന്ന് വിളിക്കപ്പെടുന്നു ( ഡൈനാമിക് ലിങ്ക്ലൈബ്രറികൾ). ഈ ലൈബ്രറികൾ മറ്റ് പ്രോഗ്രാമുകൾ ഉപയോഗിക്കുന്ന പ്രവർത്തനങ്ങൾ കയറ്റുമതി ചെയ്യുന്നു.

ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ബൂട്ട് ലോഡർ ശരിയായി ലോഡുചെയ്യുന്നതിന് എക്സിക്യൂട്ടബിൾ ഫയൽമെമ്മറിയിലേക്ക്, ഈ ഫയലിന്റെ ഉള്ളടക്കങ്ങൾ ഈ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ സ്വീകരിച്ച ഫോർമാറ്റുമായി പൊരുത്തപ്പെടണം എക്സിക്യൂട്ടബിൾ ഫയലുകൾ. വ്യത്യസ്‌ത സമയങ്ങളിൽ വ്യത്യസ്‌ത ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ പല വ്യത്യസ്‌ത ഫോർമാറ്റുകൾ നിലവിലുണ്ട്, ഇപ്പോഴും നിലനിൽക്കുന്നു. ഈ അധ്യായത്തിൽ, നമ്മൾ പോർട്ടബിൾ എക്സിക്യൂട്ടബിൾ (PE) ഫോർമാറ്റ് നോക്കും. വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ എക്സിക്യൂട്ടബിൾ ഫയലുകൾ സംഭരിക്കുന്നതിനുള്ള പ്രാഥമിക ഫോർമാറ്റാണ് PE ഫോർമാറ്റ്. അസംബ്ലികൾ. NET ഫയലുകളും ഈ ഫോർമാറ്റിൽ സൂക്ഷിക്കുന്നു.

കൂടാതെ, പ്രതിനിധീകരിക്കാൻ PE ഫോർമാറ്റ് ഉപയോഗിക്കാം ഒബ്ജക്റ്റ് ഫയലുകൾ. ഒരു പ്രോഗ്രാമിന്റെ പ്രത്യേക സമാഹാരം സംഘടിപ്പിക്കാൻ ഒബ്ജക്റ്റ് ഫയലുകൾ ഉപയോഗിക്കുന്നു. പ്രോഗ്രാമിന്റെ ഭാഗങ്ങൾ (മൊഡ്യൂളുകൾ) സ്വതന്ത്രമായി ഒബ്‌ജക്റ്റ് ഫയലുകളായി കംപൈൽ ചെയ്യുന്നു, അവ ലിങ്കർ ഒന്നിലേക്ക് ലിങ്കുചെയ്യുന്നു എന്നതാണ് പ്രത്യേക സമാഹാരത്തിന്റെ പോയിന്റ്. എക്സിക്യൂട്ടബിൾ ഫയൽ.

ഇപ്പോൾ - ഒരു ചെറിയ ചരിത്രം. വിൻഡോസ് എൻടിയുടെ ഡെവലപ്പർമാരാണ് പിഇ ഫോർമാറ്റ് സൃഷ്ടിച്ചത്. മുമ്പ്, വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം, എക്സിക്യൂട്ടബിൾ ഫയലുകളെ പ്രതിനിധീകരിക്കാനും സംഭരിക്കാനും ന്യൂ എക്സിക്യൂട്ടബിൾ (NE), ലീനിയർ എക്സിക്യൂട്ടബിൾ (LE) ഫോർമാറ്റുകൾ ഉപയോഗിച്ചിരുന്നു. ഒബ്ജക്റ്റ് ഫയലുകൾഒബ്ജക്റ്റ് മൊഡ്യൂൾ ഫോർമാറ്റ് (OMF) ഉപയോഗിച്ചു. NE ഫോർമാറ്റ് 16-ബിറ്റിനായി ഉദ്ദേശിച്ചുള്ളതാണ് വിൻഡോസ് ആപ്ലിക്കേഷനുകൾ, കൂടാതെ OS/2 നായി ആദ്യം വികസിപ്പിച്ച LE ഫോർമാറ്റ് ഇതിനകം 32-ബിറ്റ് ആയിരുന്നു. ചോദ്യം ഉയർന്നുവരുന്നു: എന്തുകൊണ്ട്? വിൻഡോസ് ഡെവലപ്പർമാർഎൻടി ഉപേക്ഷിക്കാൻ തീരുമാനിച്ചു നിലവിലുള്ള ഫോർമാറ്റുകൾ? ജോലി ചെയ്ത ടീമിലെ ഭൂരിഭാഗവും ശ്രദ്ധിച്ചാൽ ഉത്തരം വ്യക്തമാകും വിൻഡോസിന്റെ സൃഷ്ടിമുമ്പ് ഡിജിറ്റൽ എക്യുപ്‌മെന്റ് കോർപ്പറേഷനിൽ ജോലി ചെയ്തിരുന്ന എൻ.ടി. അവർ DEC-ൽ VAX/VMS ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനായുള്ള ടൂളുകൾ വികസിപ്പിച്ചെടുക്കുകയായിരുന്നു, ഫോർമാറ്റിൽ അവതരിപ്പിച്ച എക്സിക്യൂട്ടബിൾ ഫയലുകളിൽ പ്രവർത്തിക്കാനുള്ള കഴിവുകളും റെഡിമെയ്ഡ് കോഡും അവർക്കുണ്ടായിരുന്നു. സാധാരണ വസ്തുഫയൽ ഫോർമാറ്റ് (COFF). അതനുസരിച്ച്, COFF ഫോർമാറ്റ്, അല്പം പരിഷ്കരിച്ച രൂപത്തിൽ, Windows NT- ലേക്ക് മാറ്റുകയും PE എന്ന പേര് ലഭിക്കുകയും ചെയ്തു.

PE ഒരു നടപ്പാക്കലാണെന്ന് ".NET ഫ്രെയിംവർക്ക് ഗ്ലോസറി" പറയുന്നു മൈക്രോസോഫ്റ്റ് ഫോർമാറ്റ് COFF. അതേ സമയം, PE ഒരു എക്സിക്യൂട്ടബിൾ ഫയൽ ഫോർമാറ്റാണെന്നും COFF ഒരു ഫോർമാറ്റാണെന്നും പ്രസ്താവിക്കുന്നു. ഒബ്ജക്റ്റ് ഫയലുകൾ. പൊതുവേ, ആശയക്കുഴപ്പം നമുക്ക് നിരീക്ഷിക്കാം മൈക്രോസോഫ്റ്റ് ഡോക്യുമെന്റേഷൻഫോർമാറ്റിന്റെ പേര് സംബന്ധിച്ച്. ചിലയിടങ്ങളിൽ COFF എന്നും മറ്റുള്ളവയിൽ PE എന്നും വിളിക്കുന്നു. ശരിയാണ്, പുതിയ ഗ്രന്ഥങ്ങളിൽ COFF എന്ന പേര് കുറവും കുറവുമാണ് ഉപയോഗിക്കുന്നത്. മാത്രമല്ല, PE ഫോർമാറ്റ് നിരന്തരം വികസിച്ചുകൊണ്ടിരിക്കുന്നു. ഉദാഹരണത്തിന്, കുറച്ച് വർഷങ്ങൾക്ക് മുമ്പ്, എക്സിക്യൂട്ടബിൾ ഫയലിനുള്ളിൽ ഡീബഗ്ഗിംഗ് വിവരങ്ങൾ സംഭരിക്കുന്നത് Microsoft നിർത്തി, അതിനാൽ ഇപ്പോൾ COFF ഫോർമാറ്റ് ഘടനകളിലെ പല ഫീൽഡുകളും ഉപയോഗിക്കാറില്ല. കൂടാതെ, COFF ഫോർമാറ്റ് 32-ബിറ്റ് ആണ്, കൂടാതെ ഏറ്റവും പുതിയ പതിപ്പ് 64-ബിറ്റ് ഹാർഡ്‌വെയർ പ്ലാറ്റ്‌ഫോമുകളിൽ PE ഫോർമാറ്റ് (PE32+ എന്ന് വിളിക്കുന്നു) ഉപയോഗിക്കാം. അതിനാൽ, പ്രത്യക്ഷത്തിൽ, COFF എന്ന പേര് ഇനി ഉപയോഗിക്കില്ല എന്നതിലേക്കാണ് കാര്യങ്ങൾ നീങ്ങുന്നത്.

ലെഗസി NE, LE ഫോർമാറ്റുകളിലെ എക്സിക്യൂട്ടബിൾ ഫയലുകൾ ഇപ്പോഴും വിൻഡോസ് പിന്തുണയ്ക്കുന്നു എന്നത് ശ്രദ്ധേയമാണ്. NE ഫോർമാറ്റിലുള്ള എക്സിക്യൂട്ടബിൾ ഫയലുകൾ NTVDM (NT Virtual DOS Machine) ന് കീഴിൽ പ്രവർത്തിപ്പിക്കാം, കൂടാതെ LE ഫോർമാറ്റ് വെർച്വൽ ഡിവൈസ് ഡ്രൈവറുകൾക്കായി ഉപയോഗിക്കുന്നു (

എക്സിക്യൂട്ടബിൾ ഫയൽ ഫോർമാറ്റുകൾ

ഒരു പ്രക്രിയയുടെ വെർച്വൽ മെമ്മറി പലതും ഉൾക്കൊള്ളുന്നു സെഗ്മെന്റുകൾഅഥവാ പ്രദേശങ്ങൾഓർമ്മ. മെമ്മറിയിലെ സെഗ്‌മെന്റുകളുടെ വലുപ്പം, ഉള്ളടക്കം, സ്ഥാനം എന്നിവ പ്രോഗ്രാം തന്നെ നിർണ്ണയിക്കുന്നു, ഉദാഹരണത്തിന്, ലൈബ്രറികളുടെ ഉപയോഗം, കോഡിന്റെയും ഡാറ്റയുടെയും വലുപ്പം, ഈ പ്രോഗ്രാമിന്റെ എക്സിക്യൂട്ടബിൾ ഫയലിന്റെ ഫോർമാറ്റ്. മിക്ക ആധുനിക യുണിക്സ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളും രണ്ടെണ്ണം ഉപയോഗിക്കുന്നു സ്റ്റാൻഡേർഡ് ഫോർമാറ്റ്എക്സിക്യൂട്ടബിൾ ഫയലുകൾ - COFF (കോമൺ ഒബ്ജക്റ്റ് ഫയൽ ഫോർമാറ്റ്), ELF (എക്സിക്യൂട്ടബിൾ ആൻഡ് ലിങ്കിംഗ് ഫോർമാറ്റ്).

എക്സിക്യൂട്ടബിൾ ഫയൽ ഫോർമാറ്റുകളുടെ ഒരു വിവരണം അനാവശ്യമായി തോന്നിയേക്കാം, എന്നാൽ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കേർണലിന്റെ അടിസ്ഥാന പ്രവർത്തനത്തെ വിവരിക്കാൻ അവയെക്കുറിച്ച് ഒരു ധാരണ ആവശ്യമാണ്. പ്രത്യേകിച്ചും, COFF, ELF ഫോർമാറ്റുകളുടെ എക്സിക്യൂട്ടബിൾ ഫയലുകളിൽ സംഭരിച്ചിരിക്കുന്ന വിവരങ്ങൾ ആപ്ലിക്കേഷന്റെയും സിസ്റ്റത്തിന്റെയും മൊത്തത്തിലുള്ള പ്രവർത്തനത്തിന് വളരെ പ്രധാനപ്പെട്ട നിരവധി ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകാൻ നിങ്ങളെ അനുവദിക്കുന്നു:

പ്രോഗ്രാമിന്റെ ഏത് ഭാഗങ്ങളാണ് മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്യേണ്ടത്?

അൺഇനീഷ്യലൈസ്ഡ് ഡാറ്റയ്ക്കുള്ള ഒരു ഏരിയ എങ്ങനെയാണ് സൃഷ്ടിക്കപ്പെടുന്നത്?

പ്രക്രിയയുടെ ഏതെല്ലാം ഭാഗങ്ങൾ സ്വാപ്പ് ഡിസ്ക് ഏരിയയിൽ സൂക്ഷിക്കണം ( പ്രത്യേക പ്രദേശം ഡിസ്ക് സ്പേസ്, പ്രോസസ്സ് വിലാസ സ്ഥലത്തിന്റെ ശകലങ്ങളുടെ താൽക്കാലിക സംഭരണത്തിനായി ഉദ്ദേശിച്ചുള്ളതാണ്), ഉദാഹരണത്തിന്, പേജുകൾ മാറ്റിസ്ഥാപിക്കുമ്പോൾ, ആവശ്യമെങ്കിൽ ഒരു ഫയലിൽ നിന്ന് ഏതൊക്കെ വായിക്കാൻ കഴിയും, അതിനാൽ സംരക്ഷിക്കേണ്ട ആവശ്യമില്ലേ?

പ്രോഗ്രാം നിർദ്ദേശങ്ങളും ഡാറ്റയും മെമ്മറിയിൽ എവിടെയാണ്?

പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കാൻ എന്ത് ലൈബ്രറികൾ ആവശ്യമാണ്?

ഡിസ്കിലെ എക്സിക്യൂട്ടബിൾ ഫയൽ, മെമ്മറിയിലെ പ്രോഗ്രാം ഇമേജ്, ഡിസ്ക് സ്വാപ്പ് ഏരിയ എന്നിവ എങ്ങനെ ബന്ധപ്പെട്ടിരിക്കുന്നു?

ചിത്രത്തിൽ. 2.3 നൽകിയിട്ടുണ്ട് അടിസ്ഥാന ഘടനയഥാക്രമം COFF, ELF ഫോർമാറ്റുകളിൽ എക്സിക്യൂട്ടബിൾ ഫയലുകളിൽ നിന്ന് ലോഡ് ചെയ്ത പ്രോസസ്സുകൾക്കുള്ള മെമ്മറി. സെഗ്‌മെന്റുകളുടെ ലേഔട്ട് രണ്ട് ഫോർമാറ്റുകൾക്കിടയിൽ വ്യത്യാസമുണ്ടെങ്കിലും അടിസ്ഥാന ഘടകങ്ങൾ ഒന്നുതന്നെയാണ്. രണ്ട് പ്രക്രിയകൾക്കും കോഡ് (ടെക്‌സ്റ്റ്), ഡാറ്റ, സ്റ്റാക്ക് സെഗ്‌മെന്റുകൾ എന്നിവയുണ്ട്. ചിത്രത്തിൽ നിന്ന് നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ഡാറ്റ സെഗ്‌മെന്റുകളുടെയും സ്റ്റാക്കിന്റെയും വലുപ്പം മാറാം, കൂടാതെ ഈ മാറ്റത്തിന്റെ ദിശ നിർണ്ണയിക്കുന്നത് എക്സിക്യൂട്ടബിൾ ഫയലിന്റെ ഫോർമാറ്റാണ്. സ്റ്റാക്ക് വലുപ്പം ഓപ്പറേറ്റിംഗ് സിസ്റ്റം സ്വയമേവ മാറ്റുന്നു, അതേസമയം ഡാറ്റ സെഗ്‌മെന്റ് വലുപ്പം ആപ്ലിക്കേഷൻ തന്നെ നിയന്ത്രിക്കുന്നു. ഈ അധ്യായത്തിൽ പിന്നീട് "മെമ്മറി അലോക്കേഷൻ" വിഭാഗത്തിൽ ഞങ്ങൾ ഈ പ്രശ്നങ്ങൾ വിശദമായി ചർച്ച ചെയ്യും.

അരി. 2.3. COFF, ELF ഫോർമാറ്റുകളിൽ എക്സിക്യൂട്ടബിൾ പ്രോഗ്രാം ഇമേജുകൾ

ഡാറ്റ സെഗ്‌മെന്റിൽ ഇനീഷ്യലൈസ് ചെയ്ത ഡാറ്റ ഉൾപ്പെടുന്നു, അത് എക്സിക്യൂട്ടബിൾ ഫയലിന്റെ അനുബന്ധ വിഭാഗങ്ങളിൽ നിന്ന് മെമ്മറിയിലേക്ക് പകർത്തുന്നു, കൂടാതെ പ്രോസസ്സ് എക്‌സിക്യൂഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ് പൂജ്യങ്ങൾ കൊണ്ട് നിറഞ്ഞിരിക്കുന്ന അൺഇനീഷ്യലൈസ്ഡ് ഡാറ്റയും ഉൾപ്പെടുന്നു. അൺഇനീഷ്യലൈസ്ഡ് ഡാറ്റയെ പലപ്പോഴും ബിഎസ്എസ് സെഗ്മെന്റ് എന്ന് വിളിക്കുന്നു.

ഫോട്ടോഷോപ്പ് CS2, ഡിജിറ്റൽ ഫോട്ടോഗ്രാഫി (ട്യൂട്ടോറിയൽ) എന്ന പുസ്തകത്തിൽ നിന്ന്. അധ്യായങ്ങൾ 1-9 രചയിതാവ് സോളോനിറ്റ്സിൻ യൂറി

ഉപയോക്തൃ പുസ്തകത്തിനായുള്ള ലിനക്സിൽ നിന്ന് രചയിതാവ് കോസ്ട്രോമിൻ വിക്ടർ അലക്സീവിച്ച്

11.4.2. ഫോണ്ട് ഫയൽ ഫോർമാറ്റുകൾ സമീപകാലത്ത്, അക്ഷരാർത്ഥത്തിൽ ഓരോന്നും ഗ്രാഫിക്സ് എഡിറ്റർഅല്ലെങ്കിൽ പ്രസിദ്ധീകരണ പ്രോഗ്രാം അതിന്റേതായ ഫോണ്ട് ഫയൽ ഫോർമാറ്റ് ഉപയോഗിച്ചു, ചട്ടം പോലെ, ചില പ്രോഗ്രാമുകൾ മറ്റുള്ളവരുടെ ഫോർമാറ്റുകളെ പിന്തുണയ്ക്കുന്നില്ല. കാലക്രമേണ, യഥാർത്ഥത്തിൽ ഉപയോഗിക്കുന്ന ഫോർമാറ്റുകളുടെ എണ്ണം

പുസ്തകത്തിൽ നിന്ന് അഡോബ് ഫോട്ടോഷോപ്പ് CS3 രചയിതാവ് Zavgorodniy Vladimir

അധ്യായം 4 ഫോർമാറ്റുകൾ ഗ്രാഫിക് ഫയലുകൾറാസ്റ്റർ ഗ്രാഫിക്സ് സംഭരിക്കുന്നതിന് ധാരാളം വ്യത്യസ്ത ഫയൽ ഫോർമാറ്റുകൾ ഉണ്ട്. അവയിൽ ഏതെങ്കിലും നിർദ്ദിഷ്ട പ്രോഗ്രാമുമായി ബന്ധമില്ലാത്ത സാർവത്രിക ഫോർമാറ്റുകളും നിർദ്ദിഷ്ട "വ്യക്തിഗത" റാസ്റ്റർ ഫോർമാറ്റുകളും ഉണ്ട്.

Adobe InDesign CS3 എന്ന പുസ്തകത്തിൽ നിന്ന് രചയിതാവ് Zavgorodniy Vladimir

ഗ്രാഫിക് ഫയൽ ഫോർമാറ്റുകൾ Adobe InDesign-ന് വിവിധ ഫോർമാറ്റുകളുടെ ഗ്രാഫിക് ഫയലുകൾ ഇറക്കുമതി ചെയ്യാൻ കഴിയും - ഏറ്റവും സാധാരണമായ AI, BMP, EPS, GIF, JPEG, PDF, PSD, TIFF, കൂടാതെ അപൂർവമായ DCS, EMF, PCX, PICT, PNG, SCT (ScitexCT) ), WMF.എല്ലാം ഗ്രാഫിക് ഫോർമാറ്റുകൾകൂടാതെ ഫയലുകൾ വിവരങ്ങളുടെ തരം അനുസരിച്ച് വേർതിരിച്ചിരിക്കുന്നു

ഡോ. ബോബിൽ നിന്നുള്ള ഇന്റർനെറ്റ് സൊല്യൂഷൻസ് എന്ന പുസ്തകത്തിൽ നിന്ന് സ്വാർട്ട് ബോബ് വഴി

1. ഇന്റർനെറ്റ് ഫയൽ എൻകോഡിംഗ് ഫോർമാറ്റുകൾ ഇന്റർനെറ്റ് ഫയൽ ഫോർമാറ്റുകൾ പല ഗ്രൂപ്പുകളായി തിരിക്കാം. ഒന്നാമതായി, FTP വഴിയുള്ള ഫയൽ ട്രാൻസ്ഫർ ഫോർമാറ്റുകൾ, ഇതിനായി uuencode/decode സ്കീം വളരെക്കാലം മുമ്പ് വികസിപ്പിച്ചെടുത്തു, പിന്നീട് xxencode/decode ഉപയോഗിച്ച് മാറ്റി. പിന്നീട് Base64, MIME എന്നിവയ്ക്ക് അനുകൂലമായി ഒരു വിസമ്മതം ഉണ്ടായി.

രചയിതാവ് റെയ്മണ്ട് എറിക് സ്റ്റീഫൻ

3.1.6. ബൈനറി ഫയൽ ഫോർമാറ്റുകൾ നിങ്ങളുടെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം സെൻസിറ്റീവ് ഡാറ്റയ്ക്ക് (ഉപയോക്തൃ അക്കൗണ്ടുകൾ പോലെ) ബൈനറി ഫോർമാറ്റുകൾ ഉപയോഗിക്കുന്നുവെങ്കിൽ, അത് മനുഷ്യർക്ക് വായിക്കാൻ കഴിയുന്ന രീതിയാണ് ഉപയോഗിക്കുന്നത്. ടെക്സ്റ്റ് ഫോർമാറ്റുകൾഅപേക്ഷകൾ ജനറേറ്റുചെയ്യില്ല. വിശദാംശങ്ങളിൽ

ഫോട്ടോഷോപ്പ് CS3: പരിശീലന കോഴ്സ് എന്ന പുസ്തകത്തിൽ നിന്ന് രചയിതാവ് ടിമോഫീവ് സെർജി മിഖൈലോവിച്ച്

ഗ്രാഫിക് ഫയൽ ഫോർമാറ്റുകൾ ഏതെങ്കിലും ഗ്രാഫിക് ചിത്രംവെക്‌ടറോ റാസ്‌റ്ററോ ആകട്ടെ, ഒരു പ്രത്യേക ഫയലിൽ എഴുതിയാൽ മാത്രം കമ്പ്യൂട്ടറിൽ സൂക്ഷിക്കാം. ഓരോ ഫയലിനും എപ്പോഴും ഒരു പ്രത്യേക ഫോർമാറ്റ് ഉണ്ടായിരിക്കും. ഫോർമാറ്റ് അത് സൂചിപ്പിക്കുന്നു

യുണിക്സിനായുള്ള ആർട്ട് ഓഫ് പ്രോഗ്രാമിംഗ് എന്ന പുസ്തകത്തിൽ നിന്ന് രചയിതാവ് റെയ്മണ്ട് എറിക് സ്റ്റീഫൻ

3.1.6. ബൈനറി ഫയൽ ഫോർമാറ്റുകൾ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം സെൻസിറ്റീവ് ഡാറ്റയ്ക്കായി ബൈനറി ഫോർമാറ്റുകൾ ഉപയോഗിക്കുന്നുവെങ്കിൽ (ഉദാഹരണത്തിന്, ഉപയോക്തൃ അക്കൗണ്ടുകൾ), ആപ്ലിക്കേഷനുകൾക്കായി വായിക്കാനാകുന്ന ടെക്സ്റ്റ് ഫോർമാറ്റുകൾ ഉപയോഗിക്കുന്ന ഒരു പാരമ്പര്യവും ഉണ്ടാകില്ല. എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിശദാംശങ്ങൾ

പുസ്തകത്തിൽ നിന്ന് നെറ്റ്‌വർക്ക് ഉപകരണങ്ങൾലിനക്സ് സ്മിത്ത് റോഡറിക് ഡബ്ല്യു.

ഫോണ്ട് ഫയൽ ഫോർമാറ്റുകൾ രണ്ട് തരം ഫോണ്ടുകൾ ഉണ്ട്: ബിറ്റ്മാപ്പ്, ഔട്ട്ലൈൻ ഫോണ്ടുകൾ (ഔട്ട്ലൈൻ ഫോണ്ടുകളെ പലപ്പോഴും സ്കേലബിൾ ഫോണ്ടുകൾ എന്ന് വിളിക്കുന്നു). ഈ ഫോണ്ട് തരങ്ങൾക്ക് വ്യത്യസ്ത ഗുണങ്ങളുണ്ട്, അവ വ്യത്യസ്ത രീതികളിൽ പ്രോസസ്സ് ചെയ്യുന്നു. മിക്ക ഫോണ്ട് സെർവറുകളും പ്രവർത്തിക്കാൻ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു

HTML 5, CSS 3, വെബ് 2.0 എന്നീ പുസ്തകങ്ങളിൽ നിന്ന്. ആധുനിക വെബ് സൈറ്റുകളുടെ വികസനം. രചയിതാവ് ഡ്രോണോവ് വ്ലാഡിമിർ

HTML 5, CSS 3, വെബ് 2.0 എന്നീ പുസ്തകങ്ങളിൽ നിന്ന്. ആധുനിക വെബ് സൈറ്റുകളുടെ വികസനം രചയിതാവ് ഡ്രോണോവ് വ്ലാഡിമിർ

ഫയൽ ഫോർമാറ്റുകളും എൻകോഡിംഗ് ഫോർമാറ്റുകളും ഗ്രാഫിക് ഫയൽ ഫോർമാറ്റുകൾ ഉള്ളതുപോലെ മൾട്ടിമീഡിയ ഫയൽ ഫോർമാറ്റുകളും ഉണ്ട്. ഇന്റർനെറ്റ് ഗ്രാഫിക്സ് പോലെ, എല്ലാ വെബ് ബ്രൗസറുകളും പിന്തുണയ്ക്കുന്നില്ല മൾട്ടിമീഡിയ ഫോർമാറ്റുകൾ, എന്നാൽ കുറച്ച് മാത്രം. (എനിക്ക് രചയിതാവിനെ വേണം

കമ്പ്യൂട്ടർ സൗണ്ട് പ്രോസസ്സിംഗ് എന്ന പുസ്തകത്തിൽ നിന്ന് രചയിതാവ് സാഗുമെനോവ് അലക്സാണ്ടർ പെട്രോവിച്ച്

Ad Lib സാമ്പിൾ SMP ഓഡിയോ ഫയൽ ഫോർമാറ്റുകൾ ഇൻസ്ട്രുമെന്റ് സാമ്പിളുകൾ ലോഡുചെയ്യാൻ Ad Lib Gold സൗണ്ട് കാർഡ് ഫോർമാറ്റ് ഉപയോഗിക്കുന്നു. 8/16-ബിറ്റ് ഓഡിയോ, മോണോ/സ്റ്റീരിയോ, 4-ബിറ്റ് യമഹ ADPCM കംപ്രഷൻ പിന്തുണയ്ക്കുന്നു. ഈ ഫോർമാറ്റിലുള്ള ഫയലുകൾക്ക് വിപുലീകരണമുണ്ട്. smp.Amiga SVX ഈ ഫയൽ തരം ഉപയോഗിച്ചിരിക്കുന്നു

ഒരു വൈറസും ആന്റിവൈറസും സൃഷ്ടിക്കുന്നു എന്ന പുസ്തകത്തിൽ നിന്ന് രചയിതാവ് ഗുലീവ് ഇഗോർ എ.

അനുബന്ധം A EXE ഫയൽ ഹെഡർ ഫോർമാറ്റുകൾ ഒരു റെഗുലർ EXE ഫയലിന്റെ ഹെഡ്ഡർ ഫോർമാറ്റ് EXE ഫയലിന്റെ തുടക്കത്തിൽ EXE ഫയൽ ഹെഡറിന്റെ ഫോർമാറ്റ് ചെയ്ത ഭാഗമാണ് (പട്ടിക A-1) അടുത്തതായി വരുന്നത് ദൈർഘ്യമേറിയ പോയിന്ററുകൾ (ഓഫ്സെറ്റ്: സെഗ്മെന്റ്) അടങ്ങുന്ന റീലൊക്കേഷൻ ടേബിൾ ആണ്. ) അവയിൽ

ഫോട്ടോഷോപ്പ് CS4 പുസ്തകത്തിൽ നിന്ന് രചയിതാവ് Zhvalevsky Andrey Valentinovich

ഗ്രാഫിക് ഫയൽ ഫോർമാറ്റുകൾ ഒരു ചിത്രം ഒരു ഫയലായി രേഖപ്പെടുത്തുന്നതിനുള്ള ഒരു മാർഗമാണ് ഫോർമാറ്റ്. വളരെ കുറച്ച് ഗ്രാഫിക്സ് ഫയൽ ഫോർമാറ്റുകൾ ഉണ്ട്, എന്നാൽ മിക്ക കേസുകളിലും കുറച്ച് മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ. അവയിൽ ഓരോന്നിനും സ്വഭാവ സവിശേഷതകളുണ്ട്, അതിനാൽ ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു

പുസ്തകത്തിൽ നിന്ന് ഡിജിറ്റൽ ഫോട്ടോഗ്രാഫി. തന്ത്രങ്ങളും ഇഫക്റ്റുകളും രചയിതാവ് ഗുർസ്കി യൂറി അനറ്റോലിവിച്ച്

ഫയൽ ഫോർമാറ്റുകൾ ഇമേജ് വിവരങ്ങൾ സംഭരിക്കുന്നതിന് നിരവധി മാർഗങ്ങളുണ്ട്, അതിനാൽ നിരവധി ഫയൽ ഫോർമാറ്റുകൾ. ശ്രദ്ധ! ഡാറ്റ നഷ്ടം ഒഴിവാക്കാൻ, ചിത്രങ്ങളുമായി പ്രവർത്തിക്കുമ്പോൾ, അവയെ TIFF ഫോർമാറ്റിലോ എഡിറ്റർ പ്രോഗ്രാമിന്റെ "നേറ്റീവ്" ഫോർമാറ്റിലോ സംരക്ഷിക്കുക. JPEGВ

വിൻഡോസ് 10 എന്ന പുസ്തകത്തിൽ നിന്ന്. രഹസ്യങ്ങളും ഉപകരണവും രചയിതാവ് അൽമാമെറ്റോവ് വ്ലാഡിമിർ

പ്രഭാഷണം 3. ഫയൽ ഘടന

സാഹിത്യം

ആധുനിക ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ, E. Tanenbaum, 2002, St. Petersburg, St. Petersburg, 1040 പേജുകൾ, (djvu 10.1 MB-ൽ) കൂടുതൽ>>

നെറ്റ്‌വർക്ക് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ N. A. Olifer, V. G. Olifer (zip archive 1.1 MB)

നെറ്റ്‌വർക്ക് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ N. A. Olifer, V. G. Olifer, 2001, St. Petersburg, Peter, 544 pp., (djvu 6.3 MB)കൂടുതൽ>>

ഫയലുകൾ

വിവര സംഭരണ ​​ആവശ്യകതകൾ:

വലിയ അളവിലുള്ള ഡാറ്റ സംഭരിക്കാനുള്ള കഴിവ്

പ്രക്രിയ അവസാനിപ്പിച്ചതിന് ശേഷവും വിവരങ്ങൾ സൂക്ഷിക്കേണ്ടതാണ്

നിരവധി പ്രക്രിയകൾക്ക് ഒരേസമയം വിവരങ്ങളിലേക്കുള്ള പ്രവേശനം ഉണ്ടായിരിക്കണം

2.1.1 ഫയലുകൾക്ക് പേരിടൽ

ഫയലിന്റെ പേരിന്റെ ദൈർഘ്യം OS-നെ ആശ്രയിച്ചിരിക്കുന്നു; ഇത് 8 (MS-DOS) മുതൽ 255 (Windows, LINUX) പ്രതീകങ്ങൾ വരെയാകാം.

OS-കൾക്ക് വലിയ അക്ഷരങ്ങളും ചെറിയക്ഷരങ്ങളും തമ്മിൽ വേർതിരിച്ചറിയാൻ കഴിയും. ഉദാഹരണത്തിന്, MS-DOS-നുള്ള WINDOWS ഉം വിൻഡോകളും ഒന്നുതന്നെയാണ്, എന്നാൽ UNIX-ന് അവ വ്യത്യസ്ത ഫയലുകളാണ്.

പല ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലും, ഫയലിന്റെ പേര് ഒരു കാലയളവ് കൊണ്ട് വേർതിരിച്ച രണ്ട് ഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു, ഉദാഹരണത്തിന് windows.exe. ഡോട്ടിന് ശേഷമുള്ള ഭാഗത്തെ വിളിക്കുന്നു ഫയൽ വിപുലീകരണം. ഫയൽ തരം വേർതിരിച്ചറിയാൻ സിസ്റ്റം ഇത് ഉപയോഗിക്കുന്നു.

MS-DOS-നുള്ള വിപുലീകരണം 3 പ്രതീകങ്ങളാണ്. ഇത് ഉപയോഗിച്ച്, സിസ്റ്റം ഫയലിന്റെ തരവും അത് എക്സിക്യൂട്ട് ചെയ്യാനാകുമോ ഇല്ലയോ എന്ന് വേർതിരിക്കുന്നു.

UNIX-ൽ, വിപുലീകരണം 255 പ്രതീകങ്ങളുടെ ഒരു ഫയൽ നാമത്തിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, UNIX-ന് നിരവധി വിപുലീകരണങ്ങൾ ഉണ്ടാകാം, എന്നാൽ OS-ൽ അല്ല, ആപ്ലിക്കേഷൻ പ്രോഗ്രാമുകളാണ് വിപുലീകരണങ്ങൾ കൂടുതൽ ഉപയോഗിക്കുന്നത്. UNIX-ന് അതിന്റെ വിപുലീകരണത്തെ അടിസ്ഥാനമാക്കി ഒരു ഫയൽ എക്സിക്യൂട്ടബിൾ ആണോ അല്ലയോ എന്ന് നിർണ്ണയിക്കാൻ കഴിയില്ല.

2.1.2 ഫയൽ ഘടന

മൂന്ന് പ്രധാന ഫയൽ ഘടനകൾ:

1. ബൈറ്റ് സീക്വൻസ്- ഫയലിന്റെ ഉള്ളടക്കത്തിൽ OS-ന് താൽപ്പര്യമില്ല, അത് ബൈറ്റുകൾ മാത്രമേ കാണൂ. അത്തരമൊരു സംവിധാനത്തിന്റെ പ്രധാന നേട്ടം അതിന്റെ ഉപയോഗത്തിന്റെ വഴക്കമാണ്. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

2. എൻട്രികളുടെ ക്രമം- ഒരു നിശ്ചിത ദൈർഘ്യത്തിന്റെ രേഖകൾ (ഉദാഹരണത്തിന്, ഒരു പഞ്ച് കാർഡ്), തുടർച്ചയായി വായിക്കുന്നു. ഇപ്പോൾ ഉപയോഗിക്കുന്നില്ല.

3. പ്രവേശന മരം- ഓരോ റെക്കോർഡിനും ഒരു കീ ഉണ്ട്, കീ ഉപയോഗിച്ച് റെക്കോർഡുകൾ വായിക്കുന്നു. അത്തരമൊരു സംവിധാനത്തിന്റെ പ്രധാന നേട്ടം തിരയൽ വേഗതയാണ്. മെയിൻഫ്രെയിമുകളിൽ ഇപ്പോഴും ഉപയോഗിക്കുന്നു.

മൂന്ന് തരം ഫയൽ ഘടനകൾ.

2.1.3 ഫയൽ തരങ്ങൾ

പ്രധാന ഫയൽ തരങ്ങൾ:

പതിവ്- ഉപയോക്തൃ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

കാറ്റലോഗുകൾ- ഫയൽ സിസ്റ്റം ഘടനയ്ക്ക് പിന്തുണ നൽകുന്ന സിസ്റ്റം ഫയലുകൾ. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

സ്വഭാവം- ഇൻപുട്ട്-ഔട്ട്പുട്ട് മോഡലിംഗിനായി. UNIX-ൽ മാത്രം ഉപയോഗിക്കുന്നു.

തടയുക- മോഡലിംഗ് ഡിസ്കുകൾക്കായി. UNIX-ൽ മാത്രം ഉപയോഗിക്കുന്നു.

സാധാരണ ഫയലുകളുടെ പ്രധാന തരം:

ASCII ഫയലുകൾ- ടെക്സ്റ്റ് സ്ട്രിംഗുകൾ ഉൾക്കൊള്ളുന്നു. ഓരോ വരിയും ഒരു ക്യാരേജ് റിട്ടേൺ (വിൻഡോസ്), ഒരു ലൈൻ ഫീഡ് (UNIX), രണ്ടും (MS-DOS) എന്നിവയിൽ അവസാനിക്കുന്നു. അതിനാൽ, നിങ്ങൾ വിൻഡോസിൽ യുണിക്സിൽ എഴുതിയ ഒരു ടെക്സ്റ്റ് ഫയൽ തുറക്കുകയാണെങ്കിൽ, എല്ലാ വരികളും ഒരു വലിയ വരിയിൽ ലയിക്കും, എന്നാൽ MS-DOS-ന് കീഴിൽ അവ ലയിക്കില്ല ( ഇത് തികച്ചും സാധാരണമായ ഒരു സാഹചര്യമാണ്). ASCII ഫയലുകളുടെ പ്രധാന ഗുണങ്ങൾ:
- സ്ക്രീനിൽ പ്രദർശിപ്പിക്കാനും പരിവർത്തനം ചെയ്യാതെ പ്രിന്ററിലേക്ക് ഔട്ട്പുട്ട് ചെയ്യാനും കഴിയും
- മിക്കവാറും ഏത് എഡിറ്റർക്കും എഡിറ്റ് ചെയ്യാൻ കഴിയും

ബൈനറി ഫയലുകൾ- മറ്റ് ഫയലുകൾ (നോൺ-ASCII). ചട്ടം പോലെ, അവർക്ക് ഒരു ആന്തരിക ഘടനയുണ്ട്.

ബൈനറി ഫയലുകളുടെ പ്രധാന തരം:

എക്സിക്യൂട്ടബിൾ- പ്രോഗ്രാമുകൾ, അവ ബൈറ്റുകളുടെ ഒരു ക്രമമായി എഴുതിയിട്ടുണ്ടെങ്കിലും ഓപ്പറേറ്റിംഗ് സിസ്റ്റം തന്നെ പ്രോസസ്സ് ചെയ്യാൻ കഴിയും.

നോൺ എക്സിക്യൂട്ടബിൾ- മറ്റുള്ളവ.

എക്സിക്യൂട്ടബിൾ, നോൺ എക്സിക്യൂട്ടബിൾ ഫയലുകളുടെ ഉദാഹരണങ്ങൾ

"മാജിക് നമ്പർ"- എക്സിക്യൂട്ടബിൾ ആയി ഫയൽ തിരിച്ചറിയുന്നു.

2.1.4 ഫയൽ ആക്സസ്

ഫയൽ ആക്‌സസിന്റെ പ്രധാന തരങ്ങൾ:

സ്ഥിരതയുള്ള- ബൈറ്റുകൾ ക്രമത്തിൽ വായിക്കുന്നു. കാന്തിക ടേപ്പുകൾ ഉള്ളപ്പോൾ ഉപയോഗിച്ചു.

2.1.5 ഫയൽ ആട്രിബ്യൂട്ടുകൾ

പ്രധാന ഫയൽ ആട്രിബ്യൂട്ടുകൾ:

ഒ സംരക്ഷണം - ആർക്കൊക്കെ ഫയൽ ആക്സസ് ചെയ്യാം, എങ്ങനെ (ഉപയോക്താക്കൾ, ഗ്രൂപ്പുകൾ, വായിക്കുക/എഴുതുക). വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

o പാസ്‌വേഡ് - ഫയലിനുള്ള പാസ്‌വേഡ്

o ക്രിയേറ്റർ - ആരാണ് ഫയൽ സൃഷ്ടിച്ചത്

ഒ ഉടമ - ഫയലിന്റെ നിലവിലെ ഉടമ

o വായന-മാത്രം ഫ്ലാഗ് - 0 - വായിക്കുക/എഴുതുക, 1 - വായിക്കാൻ മാത്രം. വിൻഡോസിൽ ഉപയോഗിച്ചു.

o ഡയറക്ടറി ഫയലുകളുടെ പട്ടികയിൽ "മറഞ്ഞിരിക്കുന്ന" ഫ്ലാഗ് - 0 - ദൃശ്യം, 1 - അദൃശ്യമാണ് (സ്ഥിരസ്ഥിതി). വിൻഡോസിൽ ഉപയോഗിച്ചു.

ഒ ഫ്ലാഗ് "സിസ്റ്റം" - 0 - സാധാരണ, 1 - സിസ്റ്റം. വിൻഡോസിൽ ഉപയോഗിച്ചു.

ഫ്ലാഗ് "ആർക്കൈവ്" - ആർക്കൈവിംഗിന് തയ്യാറാണോ അല്ലയോ (കംപ്രഷനുമായി തെറ്റിദ്ധരിക്കരുത്). വിൻഡോസിൽ ഉപയോഗിച്ചു.

o ഫ്ലാഗ് "കംപ്രസ്ഡ്" - ഫയൽ കംപ്രസ് ചെയ്തു (സിപ്പ് ആർക്കൈവുകൾക്ക് സമാനമാണ്). വിൻഡോസിൽ ഉപയോഗിച്ചു.

o "എൻക്രിപ്റ്റഡ്" ഫ്ലാഗ് - എൻക്രിപ്ഷൻ അൽഗോരിതം ഉപയോഗിക്കുന്നു. അനുമതിയില്ലാത്ത ഒരു ഫയൽ ആരെങ്കിലും വായിക്കാൻ ശ്രമിച്ചാൽ, അവർക്ക് അത് വായിക്കാൻ കഴിയില്ല. വിൻഡോസിൽ ഉപയോഗിച്ചു.

o ASCII/ബൈനറി ഫ്ലാഗ് - 0 - ASCII, 1 - ബൈനറി

ഓ റാൻഡം ആക്സസ് ഫ്ലാഗ് - 0 - സീക്വൻഷ്യൽ മാത്രം, 1 - റാൻഡം ആക്സസ്

പ്രക്രിയയുടെ അവസാനം ഫയൽ ഇല്ലാതാക്കാൻ "താത്കാലികം" - 0 - സാധാരണ, 1 - ഫ്ലാഗ് ചെയ്യുക

ഫ്ലാഗ് തടയുന്നു - ഫയലിലേക്കുള്ള ആക്സസ് തടയുന്നു. അദ്ദേഹം എഡിറ്റിംഗിന്റെ തിരക്കിലാണെങ്കിൽ.

o സൃഷ്ടി സമയം - സൃഷ്ടിയുടെ തീയതിയും സമയവും. UNIX ആണ് ഉപയോഗിക്കുന്നത്.

o അവസാന ആക്സസ് സമയം - അവസാന ആക്സസ് തീയതിയും സമയവും

o അവസാന മാറ്റത്തിന്റെ സമയം - അവസാന മാറ്റത്തിന്റെ തീയതിയും സമയവും. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

o നിലവിലെ വലുപ്പം - ഫയൽ വലുപ്പം. വിൻഡോസിലും യുണിക്സിലും ഉപയോഗിക്കുന്നു.

2.1.6 ഫയലുകളുമായുള്ള പ്രവർത്തനങ്ങൾ

ഫയലുകളിൽ പ്രവർത്തിക്കുന്നതിനുള്ള അടിസ്ഥാന സിസ്റ്റം കോളുകൾ:

o സൃഷ്ടിക്കുക - ഡാറ്റ ഇല്ലാതെ ഒരു ഫയൽ സൃഷ്ടിക്കുക.

o ഇല്ലാതാക്കുക - ഒരു ഫയൽ ഇല്ലാതാക്കുക.

o തുറക്കുക - ഒരു ഫയൽ തുറക്കുക.

o അടയ്ക്കുക - ഫയൽ അടയ്ക്കുന്നു.

വായിക്കുക - ഒരു ഫയലിൽ നിന്ന്, നിലവിലെ ഫയൽ സ്ഥാനത്ത് നിന്ന് വായിക്കുക.

o എഴുതുക - ഒരു ഫയലിലേക്ക്, നിലവിലെ ഫയൽ സ്ഥാനത്തേക്ക് എഴുതുക.

o കൂട്ടിച്ചേർക്കുക - ഫയലിന്റെ അവസാനം ചേർക്കുന്നു.

o സീക്ക് - ഫയലിലെ ഒരു പ്രത്യേക സ്ഥാനത്തേക്ക് ഫയൽ പോയിന്റർ സജ്ജമാക്കുന്നു.

o ആട്രിബ്യൂട്ടുകൾ നേടുക - ഫയൽ ആട്രിബ്യൂട്ടുകൾ നേടുക.

o സെറ്റ് ആട്രിബ്യൂട്ടുകൾ - ഫയൽ ആട്രിബ്യൂട്ടുകൾ സജ്ജമാക്കുക.

o പേരുമാറ്റുക - ഫയലിന്റെ പേരുമാറ്റുക.