ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കേർണൽ ഡീബഗ്ഗറിന്റെ പ്രവർത്തന തത്വം. ലിനൈസ് ഉപയോഗിച്ചുള്ള ഹാർഡ്‌കോർ ഡീബഗ്ഗിംഗ്: കൺസോൾ കേർണൽ ഡീബഗ്ഗറിൽ എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് പഠിക്കുന്നു എന്താണ് കേർണൽ ഡീബഗ്ഗിംഗ്

  • രചയിതാക്കൾ:

    ബാരിനോവ് എസ്.എസ്., ഷെവ്ചെങ്കോ ഒ.ജി.

  • വർഷം:
  • ഉറവിടം:

    വിദ്യാർത്ഥികളുടെയും ബിരുദാനന്തര ബിരുദധാരികളുടെയും യുവ ശാസ്ത്രജ്ഞരുടെയും VI ഇന്റർനാഷണൽ സയന്റിഫിക് ആൻഡ് ടെക്നിക്കൽ കോൺഫറൻസിന്റെ ഇൻഫോർമാറ്റിക്സും കമ്പ്യൂട്ടർ സാങ്കേതികവിദ്യകളും / മെറ്റീരിയലുകൾ - നവംബർ 23-25, 2010, ഡൊനെറ്റ്സ്ക്, ഡോൺഎൻടിയു. - 2010. - 448 പേ.

വ്യാഖ്യാനം

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

പ്രധാന ഭാഗം

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

ആപ്ലിക്കേഷൻ സോഫ്റ്റ്‌വെയർ ഡെവലപ്‌മെന്റ് ടൂൾകിറ്റ് പ്രോഗ്രാമർക്ക് വിപുലമായ സാധ്യതകൾ വാഗ്ദാനം ചെയ്യുന്നു. ഏതെങ്കിലും സംയോജിത വികസന പരിതസ്ഥിതിയിൽ മൂന്നാം കക്ഷി യൂട്ടിലിറ്റികളുടെ ആവശ്യമില്ലാതെ ഡീബഗ് ചെയ്യാനുള്ള കഴിവും ഉൾപ്പെടുന്നു. നമ്മൾ പ്രത്യേകിച്ച് സിസ്റ്റം സോഫ്റ്റ്വെയറിനെയും ഡ്രൈവർ ഡെവലപ്മെന്റിനെയും കുറിച്ചാണ് സംസാരിക്കുന്നതെങ്കിൽ, അതിന്റെ പ്രത്യേകത കാരണം, വികസന പ്രക്രിയ വളരെ ബുദ്ധിമുട്ടുള്ളതും കുറച്ച് യാന്ത്രികവുമാണ്. ഡീബഗ്ഗിംഗ് ഉൾപ്പെടെ എല്ലാ വികസന ഘട്ടങ്ങളും വെവ്വേറെയാണ്. അവയിൽ ഓരോന്നിനും പ്രത്യേക വ്യവസ്ഥകൾ ആവശ്യമാണ്: ഒരു പ്രോഗ്രാം കോഡ് എഴുതുന്നത് ഒരു സമ്പൂർണ്ണ കമ്പ്യൂട്ടർ സിസ്റ്റത്തിലാണ്, ഡീബഗ്ഗിംഗ് - ഒരു ഡീബഗ്ഗിംഗ് സിസ്റ്റത്തിൽ, ടെസ്റ്റിംഗ് - സാഹചര്യങ്ങളെ ആശ്രയിച്ച് മുതലായവ. കേർണൽ-മോഡ് ഡീബഗ്ഗർ തന്നെ പഠിക്കാൻ കൂടുതൽ ബുദ്ധിമുട്ടാണ്, അതനുസരിച്ച്, സൗഹൃദം കുറവാണ്.

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

വെർച്വൽ അഡ്രസ് സ്‌പെയ്‌സിന്റെ ഘടനയെ അടിസ്ഥാനമാക്കി, ഒരു ആപ്ലിക്കേഷൻ ഒരു പിശക് വരുത്തിയാൽ, അത് ഒരു അനിയന്ത്രിതമായ മെമ്മറി ലൊക്കേഷനിലേക്ക് ഡാറ്റ എഴുതുന്നതിന് കാരണമാകുന്നു, തുടർന്ന് ആപ്ലിക്കേഷൻ സ്വന്തം മെമ്മറി കേടുവരുത്തുകയും മറ്റ് ആപ്ലിക്കേഷനുകളുടെ പ്രവർത്തനത്തെയും പ്രവർത്തനത്തെയും ബാധിക്കുകയുമില്ല. സിസ്റ്റം. കേർണൽ മോഡ് കോഡിന് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ പ്രധാനപ്പെട്ട ഡാറ്റാ ഘടനകളെ കേടുവരുത്താൻ കഴിയും, അത് അനിവാര്യമായും ഒരു പൊതു പരാജയത്തിലേക്ക് നയിക്കും. കാര്യക്ഷമമായി എഴുതാത്ത ഡ്രൈവർ മുഴുവൻ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെയും ഗുരുതരമായ അപചയത്തിന് കാരണമാകും.

    ആധുനിക ഡീബഗ്ഗറുകൾ ഇനിപ്പറയുന്ന അടിസ്ഥാന പ്രവർത്തനങ്ങൾ നൽകുന്നു:
  • സോഴ്സ് കോഡ് തലത്തിൽ ഡീബഗ്ഗിംഗ്;
  • എക്സിക്യൂഷൻ മാനേജ്മെന്റ്;
  • കാണുകയും മെമ്മറി മാറ്റുകയും ചെയ്യുക;
  • പ്രോസസ്സർ രജിസ്റ്ററുകളുടെ ഉള്ളടക്കം കാണുകയും മാറ്റുകയും ചെയ്യുക;
  • കോൾ സ്റ്റാക്ക് കാഴ്ച.

ഡിസ്അസംബ്ലിംഗ് കോഡ് ഉപയോഗിച്ച് ജോലി സുഗമമാക്കുന്നതിന്, വിളിക്കപ്പെടുന്നവ. ഡീബഗ് ചിഹ്നങ്ങൾ. ലിങ്കറിന്റെ പ്രവർത്തന സമയത്ത്, എക്സിക്യൂട്ടബിൾ ഫയലിന്റെ ഇമേജിന് പുറമേ, പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ ആവശ്യമില്ലാത്ത വിവരങ്ങൾ അടങ്ങിയ ഒരു ഡാറ്റ ഫയലും സൃഷ്ടിക്കാൻ കഴിയും, പക്ഷേ അത് ഡീബഗ്ഗ് ചെയ്യുമ്പോൾ വളരെ ഉപയോഗപ്രദമാണ്: ഫംഗ്ഷനുകളുടെ പേരുകൾ, ആഗോള വേരിയബിളുകൾ , ഘടനകളുടെ വിവരണങ്ങൾ. വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ എല്ലാ എക്സിക്യൂട്ടബിൾ ഫയലുകൾക്കും ഡീബഗ്ഗിംഗ് ചിഹ്നങ്ങൾ ലഭ്യമാണ്.

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

കേർണൽ-മോഡ് കോഡ് നിർത്തലാക്കുന്നത് താഴെപ്പറയുന്ന ആശയക്കുഴപ്പം ഉയർത്തുന്നു. പ്രോഗ്രാമറുമായി സംവദിക്കാൻ ഡീബഗ്ഗർ ഉപയോക്തൃ ഇന്റർഫേസ് ഉപയോഗിക്കുന്നു. ആ. ഡീബഗ്ഗറിന്റെ ദൃശ്യമായ ഭാഗമെങ്കിലും യൂസർ മോഡിൽ പ്രവർത്തിക്കുന്നു, അത് നിർമ്മിക്കുന്നതിന് സ്വാഭാവികമായും ഒരു ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിംഗ് ഇന്റർഫേസ് (വിൻഡോസ് എപിഐ) ഉപയോഗിക്കുന്നു, ഇത് കേർണൽ മോഡ് മൊഡ്യൂളുകളെ ആശ്രയിക്കുന്നു. അതിനാൽ, കേർണൽ-മോഡ് കോഡ് താൽക്കാലികമായി നിർത്തുന്നത് ഒരു തടസ്സത്തിലേക്ക് നയിച്ചേക്കാം: സിസ്റ്റം ഉപയോക്താവിനോട് പ്രതികരിക്കുന്നില്ല.

കേർണൽ മെമ്മറി ആക്സസ് ചെയ്യുന്നതിന് ഡീബഗ്ഗറിന്റെ ഭാഗങ്ങളും കേർണൽ മോഡിൽ പ്രവർത്തിക്കണം. ഇത് ഒരേസമയം രണ്ട് പ്രശ്നങ്ങളിലേക്ക് നയിക്കുന്നു, ഇത് പ്രൊസസറിന്റെ സംരക്ഷിത മോഡിൽ മെമ്മറിയുടെ ഓർഗനൈസേഷന്റെ വ്യക്തമായ അനന്തരഫലമാണ്.

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

സിസ്റ്റം കോളുകൾ അയയ്‌ക്കുമ്പോൾ, വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം സന്ദർഭം മാറ്റുന്നില്ല എന്നതാണ് പ്രത്യേകത. ഉപയോക്തൃ-മോഡ് വിർച്ച്വൽ വിലാസങ്ങൾ ഉപയോഗിക്കാൻ ഇത് കേർണൽ-മോഡ് കോഡിനെ അനുവദിക്കുന്നു.

സിസ്റ്റം ത്രെഡുകൾ ഡിസ്പാച്ചിംഗ് അല്ലെങ്കിൽ എക്സിക്യൂട്ട് ചെയ്യുന്നത് തടസ്സപ്പെടുത്തുമ്പോൾ സ്ഥിതി വ്യത്യസ്തമാണ്. ഏത് സമയത്തും ഒരു തടസ്സം സംഭവിക്കാം, അതിനാൽ ഏത് ത്രെഡ് സന്ദർഭം ഉപയോഗിക്കുമെന്ന് പ്രവചിക്കാൻ ഒരു മാർഗവുമില്ല. നേരെമറിച്ച്, സിസ്റ്റം ത്രെഡുകൾ ഒരു പ്രക്രിയയിലും ഉൾപ്പെടുന്നില്ല, കൂടാതെ ഉപയോക്തൃ മോഡ് വെർച്വൽ വിലാസങ്ങൾ വിവർത്തനം ചെയ്യാൻ കഴിയില്ല. ഈ സാഹചര്യങ്ങളിൽ ഉപയോക്തൃ മോഡ് മെമ്മറി ആക്സസ് ചെയ്യാൻ കഴിയില്ലെന്ന് ഇത് പിന്തുടരുന്നു.

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

ഉയർന്ന ഇന്ററപ്റ്റ് അഭ്യർത്ഥന ലെവലുകൾ (IRQL) ഉപയോഗിക്കാൻ ഡീബഗ്ഗർ കോഡ് നിർബന്ധിതരായാൽ ഈ സ്വഭാവം തകർന്നിരിക്കുന്നു. IRQL മെമ്മറി മാനേജറിന്റെ IRQL-ന് തുല്യമോ അതിൽ കൂടുതലോ ആണെങ്കിൽ, രണ്ടാമത്തേതിന് കാണാതായ പേജ് ലോഡ് ചെയ്യാൻ കഴിയില്ല, കാരണം ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പേജ് തകരാർ തടസ്സപ്പെടുത്തുന്നത് തടയും. ഇത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെ ക്രാഷ് ചെയ്യും.

ഡീബഗ്ഗിംഗ് സാധാരണയായി ഇന്ററാക്ടീവ്, എമർജൻസി എന്നിങ്ങനെ തിരിച്ചിരിക്കുന്നു. ഇന്ററാക്ടീവ് ലോക്കൽ ഡീബഗ്ഗിംഗ് ഉപയോഗിച്ച്, ഡീബഗ്ഗർ ഒബ്ജക്റ്റിന്റെ അതേ സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്നു. ഇന്ററാക്ടീവ് റിമോട്ട് ഡീബഗ്ഗിംഗിൽ, ഡീബഗ്ഗറും ഡീബഗ് ഒബ്ജക്‌റ്റും വ്യത്യസ്ത സിസ്റ്റങ്ങളിൽ പ്രവർത്തിക്കുന്നു. കേർണൽ കോഡ് ഡീബഗ്ഗുചെയ്യുമ്പോൾ, നെറ്റ്‌വർക്ക് ഇതുവരെ പ്രവർത്തിക്കാത്തപ്പോൾ, സിസ്റ്റം അതിന്റെ ബൂട്ടിന്റെ ആദ്യ ഘട്ടങ്ങളിൽ നിന്ന് നിയന്ത്രിക്കണം, അതിനാൽ സിസ്റ്റങ്ങളെ ബന്ധിപ്പിക്കുന്നതിന് COM, FireWire, USB പോലുള്ള ലളിതമായ സീരിയൽ ഇന്റർഫേസുകൾ ഉപയോഗിക്കുന്നു. സമീപകാലത്ത്, അമൂർത്തതയുടെ വിവിധ തലങ്ങളിൽ സോഫ്റ്റ്വെയർ വിർച്ച്വലൈസേഷന്റെ വികസന പ്രവണതകൾക്ക് നന്ദി, വെർച്വൽ മെഷീനുകൾ കൂടുതൽ ആകർഷിക്കപ്പെടുന്നു. അതിഥി OS ഡീബഗ്ഗ് ചെയ്ത OS ആയി പ്രവർത്തിക്കുന്നു, ഹോസ്റ്റ് OS-ൽ ഒരു ഡീബഗ്ഗർ യൂസർ ഇന്റർഫേസ് ഉൾപ്പെടുന്നു.

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

വിൻഡോസ് പാക്കേജിനായി സ്വതന്ത്രമായി വിതരണം ചെയ്യുന്ന ഡീബഗ്ഗിംഗ് ടൂളുകളുടെ ഭാഗമായി വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ നിർമ്മാതാവാണ് പ്രധാന കേർണൽ-മോഡ് ഡീബഗ്ഗിംഗ് ടൂളുകൾ നൽകുന്നത്. ടൂളുകളിൽ യഥാക്രമം ഗ്രാഫിക്കൽ, കൺസോൾ ഡീബഗ്ഗറുകൾ WinDbg, KD എന്നിവ ഉൾപ്പെടുന്നു (ഇനി മുതൽ വിൻഡോസ് ഡീബഗ്ഗർ എന്ന് വിളിക്കുന്നു). ഈ ഡീബഗ്ഗറുകളുടെ പ്രവർത്തനം ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഡെവലപ്പർമാർ നൽകുന്ന സംവിധാനങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ളതും അതിന്റെ കെർണലിൽ ഉൾച്ചേർത്തതുമാണ്.

വിൻഡോസ് ഡീബഗ്ഗറിന്റെ പ്രധാന മോഡ് കമാൻഡ് ഇന്റർപ്രെറ്റർ മോഡാണ്. അതിന്റെ മോഡുലാർ ഘടന കാരണം, ഡെവലപ്പർ നൽകുന്ന കമാൻഡുകൾക്കൊപ്പം, Windows ഡീബഗ്ഗർ എക്സ്റ്റൻഷനുകൾ എന്ന് വിളിക്കുന്ന മൂന്നാം കക്ഷി മൊഡ്യൂളുകളെ പിന്തുണയ്ക്കുന്നു. വാസ്തവത്തിൽ, ബിൽറ്റ്-ഇൻ കമാൻഡുകൾ മിക്കതും എക്സ്റ്റൻഷനുകളായി ഫോർമാറ്റ് ചെയ്തിട്ടുണ്ട്.

വിൻഡോസ് ഡീബഗ്ഗർ റിമോട്ട് ഇന്ററാക്ടീവ്, എമർജൻസി ഡീബഗ്ഗിംഗ് എന്നിവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു, അത് ഉപയോഗിച്ച് അതിന്റെ എല്ലാ കഴിവുകളും വെളിപ്പെടുത്തുന്നു. അതേ സമയം, പൂർണ്ണമായ പ്രാദേശിക സംവേദനാത്മക ഡീബഗ്ഗിംഗ് പിന്തുണയ്ക്കുന്നില്ല: ചില കേർണൽ ഘടനകൾ കാണാൻ മാത്രമേ ഡീബഗ്ഗർ നിങ്ങളെ അനുവദിക്കൂ.

വിൻഡോസ് ഡീബഗ്ഗറിനായി LiveKD എന്ന പേരിൽ ഒരു വിപുലീകരണം ഉണ്ട്, ഇത് മാർക്ക് റുസിനോവിച്ച് സൃഷ്ടിച്ചു, ഇത് ഒരർത്ഥത്തിൽ പ്രാദേശിക ഇന്ററാക്ടീവ് ഡീബഗ്ഗിംഗ് നടപ്പിലാക്കുന്നു. LiveKD എവിടെയായിരുന്നാലും വർക്കിംഗ് സിസ്റ്റത്തിന്റെ മെമ്മറി ഡംപ് സൃഷ്ടിക്കുകയും അത് ഡീബഗ്ഗിംഗിനായി ഉപയോഗിക്കുകയും ചെയ്യുന്നു.

വിൻഡോസിനായുള്ള ഡീബഗ്ഗിംഗ് ടൂളുകൾ പതിവായി അപ്‌ഡേറ്റ് ചെയ്യുകയും എല്ലാ ആധുനിക വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളെയും പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു.

DriverStudio സോഫ്റ്റ്‌വെയർ പാക്കേജിൽ Compuware പുറത്തിറക്കിയ SoftICE കേർണൽ ഡീബഗ്ഗർ, വിൻഡോസ് പാക്കേജിനായുള്ള ഡീബഗ്ഗിംഗ് ടൂളുകൾക്ക് പകരമായി പരമ്പരാഗതമായി പ്രവർത്തിക്കുന്നു. പിന്തുണയ്‌ക്കുന്ന ഹാർഡ്‌വെയറിൽ ലോക്കൽ ഇന്ററാക്ടീവ് ഡീബഗ്ഗിംഗ് നടപ്പിലാക്കുന്നതാണ് SoftICE-ന്റെ മുഖമുദ്ര. ഡീബഗ്ഗറിന് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ പ്രവർത്തനം പൂർണ്ണമായും നിയന്ത്രിക്കാൻ കഴിയും.

2006 ഏപ്രിൽ 3 മുതൽ, "നിരവധി സാങ്കേതികവും ബിസിനസ്സ് പ്രശ്നങ്ങളും പൊതു വിപണി സാഹചര്യങ്ങളും" കാരണം DriverStudio ഉൽപ്പന്ന കുടുംബം നിർത്തലാക്കപ്പെട്ടു. പിന്തുണയ്ക്കുന്ന ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഏറ്റവും പുതിയ പതിപ്പ് Windows XP Service Pack 2 ആണ്. പൊതുവേ, സേവന പായ്ക്കുകൾ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം API-യെ മാറ്റില്ല, എന്നാൽ സിസ്റ്റം കോൾ നമ്പറുകളും മറ്റ് രേഖകളില്ലാത്ത വിവരങ്ങളും മാറിയേക്കാം. SoftICE ഡീബഗ്ഗർ ആന്തരിക ഡാറ്റാ ഘടനകളുടെ ഹാർഡ്‌കോഡ് ചെയ്ത വിലാസങ്ങളെ ആശ്രയിച്ചിരിക്കുന്നു. തൽഫലമായി, സർവീസ് പാക്ക് 3 പുറത്തിറങ്ങിയതോടെ, അനുയോജ്യത തകർന്നു. വ്യക്തമായും, വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ പിന്നീടുള്ള പതിപ്പുകളും പിന്തുണയ്ക്കുന്നില്ല.

SoftICE ഡീബഗ്ഗറിന് പകരമായി ഒരു ചെറിയ ചൈനീസ് കമ്പനിയായ Sysersoft ആണ് Syser Kernel Debugger സൃഷ്ടിച്ചത്. ആദ്യ അന്തിമ പതിപ്പ് 2007 ൽ പുറത്തിറങ്ങി. SoftICE പോലെ, പ്രവർത്തിക്കുന്ന സിസ്റ്റത്തിൽ സംവേദനാത്മക ഡീബഗ്ഗിംഗ് നടത്താൻ Syser കേർണൽ ഡീബഗ്ഗറിന് കഴിയും. വിൻഡോസിന്റെ ആധുനിക പതിപ്പുകളുടെ 32-ബിറ്റ് പതിപ്പുകൾ മാത്രമേ പിന്തുണയ്ക്കൂ.

വിൻഡോസ് ഡീബഗ്ഗർ നിലവിൽ കേർണൽ മൊഡ്യൂളുകളുടെ ഡെവലപ്പർമാർക്കിടയിലെ പ്രധാന ഉപകരണമാണ്. വിൻഡോസ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കേർണൽ ഡെവലപ്‌മെന്റ് ടീമും ഇത് ഉപയോഗിക്കുന്നു.

രണ്ട് കാരണങ്ങളാൽ ഈ ലേഖന പരമ്പര ഉണ്ടായി. ഒന്നാമതായി, പ്രോജക്റ്റിനൊപ്പം പ്രവർത്തിക്കാൻ ഞാൻ ഇഷ്ടപ്പെടുന്നു HackSysExtremeVulnerableDriver. രണ്ടാമതായി, എനിക്ക് ലഭിച്ചു ഒരുപാട് ആഗ്രഹങ്ങൾഈ വിഷയം ഹൈലൈറ്റ് ചെയ്യാൻ.

ഈ സീരീസ് എഴുതാൻ ഉപയോഗിച്ച എല്ലാ കോഡുകളും എന്റെതാണ്.

ഈ ലേഖന പരമ്പരയിൽ, വിൻഡോസിൽ കേർണൽ-ലെവൽ ചൂഷണങ്ങൾ എഴുതുന്നത് ഞങ്ങൾ നോക്കും. അറിയപ്പെടുന്ന കേടുപാടുകൾ ഞങ്ങൾ കൈകാര്യം ചെയ്യുമെന്നും റിവേഴ്സ് എഞ്ചിനീയറിംഗിന്റെ ആവശ്യമില്ല (കുറഞ്ഞത് ഒരു ഡ്രൈവറിനല്ല) എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്.

എല്ലാ ലേഖനങ്ങളും വായിച്ചതിനുശേഷം, ഏറ്റവും സാധാരണമായ എല്ലാ ലംഘനങ്ങളും ചൂഷണ രീതികളും നിങ്ങൾക്ക് അറിയാമെന്നും അതുപോലെ x86 ആർക്കിടെക്ചറിൽ നിന്ന് x64 ആർക്കിടെക്ചറിലേക്ക് (സാധ്യമെങ്കിൽ) ചൂഷണങ്ങൾ പോർട്ട് ചെയ്യാനും നിങ്ങൾക്ക് കഴിയുമെന്ന് അനുമാനിക്കപ്പെടുന്നു (സാധ്യമെങ്കിൽ) വിൻഡോസ് 10 ലെ രീതികൾ.

കേർണൽ ഡീബഗ് സ്കീം

ഉപയോക്തൃ-തല ഡീബഗ്ഗിംഗിൽ നിന്ന് വ്യത്യസ്തമായി, ഒരൊറ്റ പ്രോസസ്സ് താൽക്കാലികമായി നിർത്തുമ്പോൾ, മുഴുവൻ സിസ്റ്റവും കേർണൽ തലത്തിൽ ഉൾപ്പെട്ടിരിക്കുന്നു, ഞങ്ങൾക്ക് ഈ രീതി ഉപയോഗിക്കാൻ കഴിയില്ല. അതനുസരിച്ച്, കേർണൽ ഡീബഗ് ചെയ്യുന്ന സിസ്റ്റവുമായി ആശയവിനിമയം നടത്താനും മെമ്മറി, കേർണൽ ഘടനകൾ എന്നിവ കാണാനും സിസ്റ്റം ക്രാഷുകൾ പിടിക്കാനും കഴിയുന്ന ഒരു പ്രത്യേക ഡീബഗ്ഗിംഗ് മെഷീൻ ആവശ്യമാണ്.

പഠനത്തിനുള്ള അധിക മെറ്റീരിയൽ:

കേർണൽ കേടുപാടുകൾ ചൂഷണം

ഈ പ്രക്രിയ ഉപയോക്തൃ-തല ചൂഷണത്തേക്കാൾ വളരെ രസകരമാണ് J.

കേർണലിന്റെ പശ്ചാത്തലത്തിൽ പ്രിവിലേജ്ഡ് എക്‌സിക്യൂഷൻ നേടുക എന്നതാണ് പ്രധാന ലക്ഷ്യം. തുടർന്ന് എല്ലാം നമ്മുടെ ഭാവനയെ ആശ്രയിച്ചിരിക്കുന്നു, ഭവനങ്ങളിൽ നിർമ്മിച്ച ബിയറുള്ള ഒരു വിരുന്നിൽ നിന്ന് ആരംഭിച്ച് സ്റ്റേറ്റ് സ്പോൺസർ ചെയ്യുന്ന ക്ഷുദ്രവെയറിന്റെ ആമുഖത്തോടെ അവസാനിക്കുന്നു.
പൊതുവേ, സിസ്റ്റം പ്രത്യേകാവകാശങ്ങളുള്ള ഒരു ഷെൽ നേടുക എന്നതാണ് ഞങ്ങളുടെ ചുമതല.

ഈ പരമ്പരയിലെ ലേഖനങ്ങളുടെ വിഷയങ്ങൾ

  • ഭാഗം 1: തൊഴിൽ അന്തരീക്ഷം സജ്ജീകരിക്കുക
    • മൂന്ന് വെർച്വൽ മെഷീനുകളും ഒരു ഡീബഗ്ഗറായി പ്രവർത്തിക്കുന്ന ഒരു സിസ്റ്റവും കോൺഫിഗർ ചെയ്യുന്നു.
    • WinDBG ഡീബഗ്ഗർ കോൺഫിഗർ ചെയ്യുന്നു.
  • ഭാഗം 2: പേലോഡുകൾ
    • ഏറ്റവും സാധാരണമായ പേലോഡുകൾ പര്യവേക്ഷണം ചെയ്യുക. തുടർന്നുള്ള ഭാഗങ്ങൾ നിർദ്ദിഷ്ട കേടുപാടുകൾ പരിഹരിക്കുകയും ആവശ്യമെങ്കിൽ ഈ ലേഖനത്തിലേക്കുള്ള ലിങ്കുകൾ നൽകുകയും ചെയ്യും.
  • ബാക്കി ഭാഗങ്ങൾ.
    • ദുർബലതകളുടെ പരിഗണന.

ഒരു കേർണൽ-ലെവൽ ചൂഷണത്തിന്റെ വികസന ജീവിത ചക്രം

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

ടാർഗെറ്റ് സിസ്റ്റങ്ങളുടെ തരങ്ങൾ

ഇനിപ്പറയുന്ന സിസ്റ്റങ്ങളിലെ കേടുപാടുകൾ പരിഹരിക്കാൻ ഞങ്ങൾ പ്രവർത്തിക്കും (നിർദ്ദിഷ്ട പതിപ്പ് നിർണായകമല്ല):

  • Win7 x86 VM
  • Win7 x64 VM
  • Win10 x64 VM

നമുക്ക് x86 ആർക്കിടെക്ചറിൽ നിന്ന് ആരംഭിക്കാം, തുടർന്ന് നമ്മൾ വിനിയോഗം Win7 x64 സിസ്റ്റത്തിലേക്ക് പോർട്ട് ചെയ്യും. പുതിയ പരിരക്ഷകൾ ഉള്ളതിനാൽ ചില ചൂഷണങ്ങൾ Win10 മെഷീനുകളിൽ പ്രവർത്തിക്കില്ല. ഈ സാഹചര്യത്തിൽ, ഞങ്ങൾ ചൂഷണത്തിന്റെ യുക്തി മാറ്റും, അല്ലെങ്കിൽ ഞങ്ങൾ തികച്ചും വ്യത്യസ്തമായ സമീപനം ഉപയോഗിക്കും.

ഉപയോഗിച്ച സോഫ്റ്റ്‌വെയർ:

  • ഹൈപ്പർവൈസർ (നിരവധി ഓപ്ഷനുകൾ).
  • Windows 7 x86 VM
  • Windows 7 x64 VM
  • Windows 10 x64 VM

ഡീബഗ്ഗിംഗിനുള്ള സംവിധാനങ്ങൾ സജ്ജീകരിക്കുന്നു

ഞങ്ങൾ സംവദിക്കുന്ന ഡീബഗ് സിസ്റ്റങ്ങൾ ഒരു ദുർബലമായ ഡ്രൈവർ ലോഡ് ചെയ്യുന്നതിനാണ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. കേർണലിലെ മിക്ക ഒഴിവാക്കലുകളും ഇത്തരത്തിലുള്ള കാര്യങ്ങൾക്ക് കാരണമാകുന്നതിനാൽ, ഈ മെഷീനുകളിൽ പലപ്പോഴും ക്രാഷുകൾ സംഭവിക്കും. ഈ സിസ്റ്റങ്ങൾക്കായി നിങ്ങൾ മതിയായ റാം അനുവദിക്കണം.

ഡീബഗ് ചെയ്യപ്പെടുന്ന ഓരോ മെഷീനിലും, നിങ്ങൾ ഇനിപ്പറയുന്നവ ചെയ്യേണ്ടതുണ്ട്:

  • VirtualKD ഡയറക്‌ടറിക്കുള്ളിൽ, target\vminstall.exe ഫയൽ പ്രവർത്തിപ്പിക്കുക. ഒരു പുതിയ ബൂട്ട് എൻട്രി ചേർക്കുകയും ഡീബഗ്ഗിംഗ് ഫംഗ്ഷനുകളും ഡീബഗ്ഗറായി പ്രവർത്തിക്കുന്ന സിസ്റ്റത്തിൽ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്ന VirtualKD സെർവറിലേക്കുള്ള ഓട്ടോമാറ്റിക് കണക്ഷനും ലഭ്യമാകുകയും ചെയ്യും.

Windows 10 VM-ന്റെ കാര്യത്തിൽ, നിങ്ങൾ ടെസ്റ്റ് സൈനിംഗ് മോഡ് പ്രവർത്തനക്ഷമമാക്കണം, ഇത് സൈൻ ചെയ്യാത്ത ഡ്രൈവറുകൾ കേർണലിലേക്ക് ലോഡ് ചെയ്യാൻ അനുവദിക്കുന്നു.

കമാൻഡിൽ bcdedit /set testsinging എക്സിക്യൂട്ട് ചെയ്ത് റീബൂട്ട് ചെയ്ത ശേഷം, "ടെസ്റ്റ് മോഡ്" ഡെസ്ക്ടോപ്പിൽ ദൃശ്യമാകും.

HEVD മൊഡ്യൂളിന്റെ ഹ്രസ്വ വിവരണം

ഓരോ ഡ്രൈവർക്കും ഡ്രൈവർ എൻട്രി നടപടിക്രമം ആരംഭിക്കുന്നതാണ്:

NTSTATUS ഡ്രൈവർ എൻട്രി(PDRIVER_OBJECT ഡ്രൈവർ ഒബ്ജക്റ്റിൽ, PUNICODE_STRING രജിസ്ട്രിപാത്തിൽ) (
UINT32 i = 0;
PDEVICE_OBJECT DeviceObject = NULL;
NTSTATUS നില = STATUS_UNSUCCESSFUL;
UNICODE_STRING ഉപകരണനാമം, DosDeviceName = (0);

UNREFERENCED_PARAMETER(RegistryPath);
PAGED_CODE();

RtlInitUnicodeString(&DeviceName, L"\\Device \\ HackSysExtremeVulnerableDriver");
RtlInitUnicodeString(&DosDeviceName, L"\\DosDevices\\HackSysExtremeVulnerableDriver");

// ഉപകരണം സൃഷ്ടിക്കുക
നില = IoCreateDevice(DriverObject,
0,
&ഉപകരണത്തിന്റെ പേര്,
FILE_DEVICE_UNKNOWN,
FILE_DEVICE_SECURE_OPEN,
തെറ്റായ,
&DeviceObject);

  • ആശയവിനിമയ സമയത്ത് ഞങ്ങൾ ഉപയോഗിക്കുന്ന ഡ്രൈവറിന്റെ പേര് അടങ്ങിയ IoCreateDevice ഫംഗ്‌ഷനിലേക്കുള്ള ഒരു കോൾ ഈ നടപടിക്രമത്തിൽ അടങ്ങിയിരിക്കുന്നു.
  • ഡ്രൈവർ ഒബ്‌ജക്റ്റ് ഒബ്‌ജക്‌റ്റിലേക്ക് ആവശ്യമായ ഘടനകളും ഫംഗ്‌ഷനുകളിലേക്കുള്ള പോയിന്ററുകളും ചേർക്കും.
  • IOCTL (I / O കൺട്രോൾ; ഇൻപുട്ട് / ഔട്ട്പുട്ട് നിയന്ത്രണം) കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഉത്തരവാദിത്തമുള്ള DriverObject->MajorFunction എന്ന നടപടിക്രമവുമായി ബന്ധപ്പെട്ട ഫംഗ്ഷൻ പോയിന്ററാണ് ഞങ്ങൾക്ക് പ്രധാനം;
  • HEVD-യിൽ, ഈ ഫംഗ്‌ഷനെ IrpDeviceIoCtlHandler എന്ന് വിളിക്കുന്നു, ഇത് ഓരോ IOCTL-നും നിരവധി ശാഖകളുള്ള ഒരു വലിയ സോപാധിക പദപ്രയോഗമാണ്. ഓരോ ദുർബലതയ്ക്കും തനതായ IOCTL ഉണ്ട്.

ഉദാഹരണം: HACKSYS_EVD_IOCTL_STACK_OVERFLOW ഒരു സ്റ്റാക്ക് ഓവർഫ്ലോ അപകടസാധ്യത ട്രിഗർ ചെയ്യാൻ ഉപയോഗിക്കുന്ന ഒരു IOCTL ആണ്.

ഇതോടെ ആദ്യഭാഗം അവസാനിക്കുന്നു. അടുത്ത ലേഖനത്തിൽ, പേലോഡുകളെക്കുറിച്ച് നമ്മൾ സംസാരിക്കും. ഇപ്പോൾ, ടോക്കൺ മോഷ്ടിക്കുന്ന പേലോഡ് മാത്രമേ ലഭ്യമാകൂ, അത് മൂന്നാം ഭാഗത്തിൽ ഉപയോഗിക്കും.

പി.എസ്. നിങ്ങൾ നേരിട്ടേക്കാവുന്ന നിരവധി സൂക്ഷ്മതകളും പ്രശ്നങ്ങളും ഉണ്ടെന്ന് ഞാൻ മനസ്സിലാക്കുന്നു. ഈ ചക്രം ചൂഷണ വികസനത്തിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നതിനാൽ, വഴിയിലെ എല്ലാ പ്രശ്നങ്ങളും നിങ്ങൾ സ്വയം പരിഹരിക്കേണ്ടതുണ്ട്. എന്നിരുന്നാലും, അഭിപ്രായങ്ങളിൽ നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങൾ ചോദിക്കാം.

കേർണൽ ഡീബഗ്ഗർ എങ്ങനെ ആരംഭിക്കാം?

മാസ്റ്ററുടെ പ്രതികരണം:

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

നിങ്ങൾ cmd പ്രോസസർ പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട്. ടാസ്ക്ബാറിൽ നിന്ന് ആരംഭ മെനു തുറക്കുക. ദൃശ്യമാകുന്ന വിൻഡോയിൽ, "റൺ ..." ഇനത്തിൽ ക്ലിക്കുചെയ്യുക. "ലോഞ്ച് പ്രോഗ്രാം" വിൻഡോ ദൃശ്യമാകും. ടെക്സ്റ്റ് ബോക്സിൽ cmd എന്ന് ടൈപ്പ് ചെയ്യുക, തുടർന്ന് ശരി ക്ലിക്കുചെയ്യുക.

ഇപ്പോൾ boot.ini ഫയൽ ബാക്കപ്പ് ചെയ്യുക. ആദ്യം, കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ നിലവിലെ വിൻഡോസ് പകർപ്പിന്റെ ഇൻസ്റ്റാളേഷൻ പാത്ത് കണ്ടെത്തുക: echo %SystemRoot%

അടുത്തതായി, ഉപകരണ അക്ഷരങ്ങൾ നൽകി ഇൻസ്റ്റാൾ ചെയ്ത ഓപ്പറേറ്റിംഗ് സിസ്റ്റമുള്ള ഡിസ്കിലേക്ക് പോകുക, അവയ്ക്ക് ശേഷം ഒരു കോളൺ ഇടുക. cd കമാൻഡ് ഉപയോഗിച്ച്, റൂട്ട് ഡയറക്ടറിയിലേക്ക് മാറ്റുക. ഇപ്പോൾ, attrib കമാൻഡ് ഉപയോഗിച്ച്, boot.ini ഫയലിൽ നിന്ന് മറഞ്ഞിരിക്കുന്നതും വായിക്കാൻ മാത്രമുള്ളതും സിസ്റ്റം ആട്രിബ്യൂട്ടുകളും നീക്കം ചെയ്യുക. ഒരു ബാക്കപ്പ് സൃഷ്ടിക്കാൻ കോപ്പി കമാൻഡ് ഉപയോഗിക്കുക, തുടർന്ന് ആട്രിബ്യൂട്ടുകൾ സജ്ജമാക്കുക.

ബൂട്ട് ഓപ്ഷനുകളുടെ നിലവിലെ ലിസ്റ്റ് പ്രദർശിപ്പിക്കുന്നതിന്, bootcfg /query കമാൻഡ് ഉപയോഗിക്കുക. കേർണൽ മോഡിൽ ഡീബഗ് ചെയ്യാനുള്ള കഴിവ് ഉപയോഗിച്ച് പുതിയ ക്രമീകരണങ്ങൾ സൃഷ്ടിക്കുന്നതിനുള്ള അടിസ്ഥാനം ഏത് ഘടകമാണെന്ന് ലിസ്റ്റിലൂടെ നോക്കുക. ബൂട്ട് എൻട്രി ഐഡി ഓർമ്മിക്കേണ്ടതാണ്.

ഒരു ബൂട്ട് എൻട്രി ഉണ്ടാക്കാൻ bootcfg/copy കമാൻഡ് ഉപയോഗിക്കുക. നിങ്ങൾ പകർത്താൻ ആഗ്രഹിക്കുന്ന പോസ്റ്റിന്റെ ഐഡി വ്യക്തമാക്കാൻ /id ഓപ്ഷൻ ഉപയോഗിക്കുക. പ്രദർശിപ്പിക്കേണ്ട എൻട്രിയുടെ പേര് വ്യക്തമാക്കാൻ /d ഓപ്ഷൻ ഉപയോഗിക്കുക. ഇപ്പോൾ നിങ്ങൾ bootcfg /query കമാൻഡ് ഉപയോഗിച്ച് വീണ്ടും ബൂട്ട് ഓപ്ഷനുകളുടെ ലിസ്റ്റിലേക്ക് പോകേണ്ടതുണ്ട്, കൂടാതെ ചേർത്ത എൻട്രി ഐഡി നോക്കുക.

ഇപ്പോൾ നമ്മൾ നേരത്തെ ഉണ്ടാക്കിയ ബൂട്ട് എൻട്രിയിൽ കേർണൽ ഡീബഗ്ഗർ ആരംഭിക്കുന്നതിനുള്ള ഓപ്ഷനുകൾ ഉൾപ്പെടുത്തേണ്ടതുണ്ട്. ടാർഗെറ്റ് മെഷീനിൽ നിങ്ങൾ ഡീബഗ്ഗിംഗ് നടത്തുകയാണെങ്കിൽ, നിങ്ങൾ /ഡീബഗ് ഓപ്ഷൻ ചേർക്കേണ്ടതുണ്ട്.

കോം പോർട്ട് വഴി ഹോസ്റ്റ് മെഷീനുമായി ബന്ധിപ്പിച്ചിട്ടുള്ള ടാർഗെറ്റ് കമ്പ്യൂട്ടർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് റിമോട്ട് ഡീബഗ്ഗിംഗ് നടത്താൻ താൽപ്പര്യമുണ്ടെങ്കിൽ, പോർട്ട് നമ്പറും ബോഡ് നിരക്കും വ്യക്തമാക്കുന്നതിന് /port, /baud ഓപ്ഷനുകൾ ഉപയോഗിക്കുക.

നിങ്ങൾ ഒരു ഫയർവയർ കേബിൾ (IEEE 1394 ഇന്റർഫേസ്) വഴിയുള്ള കണക്ഷൻ ഉപയോഗിച്ച് റിമോട്ട് ഡീബഗ്ഗിംഗ് നടത്തുകയാണെങ്കിൽ, അനുബന്ധ മോഡ് പ്രവർത്തനക്ഷമമാക്കുന്നതിന് /dbg1394 ഓപ്ഷൻ ഉപയോഗിക്കുക കൂടാതെ ചാനൽ നമ്പർ വ്യക്തമാക്കുന്നതിന് /ch ഓപ്ഷൻ ഉപയോഗിക്കുക.

മാറ്റങ്ങൾ വരുത്തിയെന്ന് പരിശോധിക്കാൻ, bootcfg കമാൻഡ് ഉപയോഗിച്ച് /query ഓപ്ഷൻ ഉപയോഗിച്ച് ബൂട്ട് ഫയലുകൾ പരിശോധിക്കുക. എക്സിറ്റ് കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്ത ശേഷം, ഷെൽ വിൻഡോ അടയ്ക്കുക.

ആവശ്യമെങ്കിൽ, ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ബൂട്ട് ഓപ്ഷനുകൾ മാറ്റുക. "ആരംഭിക്കുക" മെനുവിലൂടെ നിയന്ത്രണ പാനൽ തുറക്കുക, ഇതിനകം അതിൽ "സിസ്റ്റം" ഇനം തുറക്കുക. തുറക്കുന്ന സിസ്റ്റം പ്രോപ്പർട്ടീസ് വിൻഡോയിൽ, വിപുലമായ ടാബ് തിരഞ്ഞെടുക്കുക. ഈ ടാബിൽ, "ഡൗൺലോഡ് ആൻഡ് റിക്കവറി" എന്ന വിഭാഗം തിരഞ്ഞെടുത്ത് അതിലെ "ഓപ്ഷനുകൾ" ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക. ദൃശ്യമാകുന്ന "സ്റ്റാർട്ടപ്പ് ആൻഡ് റിക്കവറി" വിൻഡോയിൽ, "ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളുടെ ഒരു ലിസ്റ്റ് പ്രദർശിപ്പിക്കുക" ഓപ്ഷൻ നിങ്ങൾ സജീവമാക്കേണ്ടതുണ്ട്. ശരി ബട്ടൺ ഉപയോഗിച്ച് രണ്ട് ഡയലോഗ് ബോക്സുകളും അടയ്ക്കുക.

നിങ്ങളുടെ കമ്പ്യൂട്ടർ പുനരാരംഭിക്കുക. ഡീബഗ്ഗർ ഉപയോഗിച്ച് ബൂട്ട് തിരഞ്ഞെടുക്കുക. ലോഗിൻ ചെയ്‌ത് ടാർഗെറ്റ് മെഷീനിൽ പ്രവർത്തിക്കാൻ ആരംഭിക്കുക, അല്ലെങ്കിൽ വിദൂര ഡീബഗ്ഗിംഗ് ആരംഭിക്കുക. WinDbg, KD പോലുള്ള ഉപകരണങ്ങൾ പ്രയോജനപ്പെടുത്തുക.

കേർണൽ ഡീബഗ്ഗറിനായി വിൻഡോസ് ബൂട്ട് സമയത്തിനായി കാത്തിരിക്കുന്ന ഒരു സാഹചര്യം എനിക്ക് ചിലപ്പോൾ ഉണ്ടാകാറുണ്ട്. "Windows start" എന്ന വാചകം നിങ്ങൾ കാണുന്നു, പക്ഷേ ലോഗോ അല്ല.

ഞാൻ ഇപ്പോൾ ഡീബഗ്ഗർ അറ്റാച്ചുചെയ്യുകയാണെങ്കിൽ, Windows 7 ലോഗോ ആനിമേഷൻ പ്ലേ ചെയ്യുന്നു. അതിനുശേഷം, ലോഗോ സ്പന്ദിക്കാൻ തുടങ്ങുന്നു. ഈ ഘട്ടത്തിൽ, ഡൗൺലോഡ് പ്രക്രിയ ഇനി പുരോഗമിക്കില്ല. സിപിയു ഉപയോഗം ഏറ്റവും കുറഞ്ഞത് ആയി കുറഞ്ഞു. ഞാൻ സാധാരണയായി കുറച്ച് മിനിറ്റ് കാത്തിരിക്കുന്നു, പക്ഷേ ഒന്നും സംഭവിക്കുന്നില്ല.

ഇത് എല്ലായ്പ്പോഴും സംഭവിക്കുന്നില്ല. എന്നിരുന്നാലും, ഇത് സംഭവിക്കുകയാണെങ്കിൽ, VM പുനഃസജ്ജമാക്കുന്നത് സഹായിക്കില്ല. ഈ പ്രശ്നം പരിഹരിക്കാൻ, എനിക്ക് സ്റ്റാർട്ടപ്പ് റിപ്പയർ ഉപയോഗിക്കേണ്ടതുണ്ട്. നിർഭാഗ്യവശാൽ, ഇത് എന്നെന്നേക്കുമായി എടുക്കും.

സ്റ്റാർട്ടപ്പിൽ ഒരു അറ്റകുറ്റപ്പണി നടത്തുന്നതിന് പുറമെ എനിക്ക് എന്തുചെയ്യാൻ കഴിയുമെന്ന് എന്തെങ്കിലും ആശയങ്ങൾ ഉണ്ടോ?

മുൻകൂർ നന്ദി!

3

2 പ്രതികരണങ്ങൾ

നിങ്ങൾ അനുഭവിക്കുന്ന പ്രശ്നം പരിഹരിക്കാൻ, ബൂട്ടപ്പ് സമയത്ത് F10 അമർത്തുക. കൂടാതെ നീക്കം ചെയ്യുക/ഡീബഗ് ചെയ്യലും അനുബന്ധ ഓപ്‌ഷനുകളും. എന്നിട്ട് എന്റർ അമർത്തുക.

നിർദ്ദേശം: ഡിഫോൾട്ട് ബൂട്ട് മെനു ഓപ്ഷനായി /ഡീബഗ് ഓപ്ഷൻ ഉപയോഗിക്കരുത്. ബൂട്ട് കോൺഫിഗറേഷൻ ഒരു പുതിയ എൻട്രിയിലേക്ക് പകർത്തുക. തുടർന്ന് അത് ഡീബഗ് മോഡിലേക്ക് സജ്ജമാക്കുക. നിങ്ങൾ എപ്പോൾ ഡീബഗ്ഗർ ഉപയോഗിക്കുമെന്ന് വിൻഡോസിന് അറിയില്ല. അതിനാൽ അവൻ കാത്തിരിക്കണം.

"കേർണൽ ഡീബഗ്ഗിംഗ്" എന്ന പദത്തിന്റെ അർത്ഥം കേർണലിന്റെ ആന്തരിക ഡാറ്റാ ഘടന പരിശോധിക്കുകയും കൂടാതെ/അല്ലെങ്കിൽ കേർണലിലെ ഫംഗ്ഷനുകളിലൂടെ കടന്നുപോകുകയും ചെയ്യുക എന്നാണ്. ഈ ഡീബഗ്ഗിംഗ് വിൻഡോസിന്റെ ഇന്റേണലുകൾ പര്യവേക്ഷണം ചെയ്യുന്നതിനുള്ള വളരെ ഉപയോഗപ്രദമായ മാർഗമാണ്, കാരണം ഇത് മറ്റേതെങ്കിലും മാർഗ്ഗങ്ങളിലൂടെ ലഭ്യമല്ലാത്ത ആന്തരിക സിസ്റ്റം വിവരങ്ങളുടെ ഡിസ്പ്ലേകൾ നൽകുന്നു, കൂടാതെ കേർണലിലെ കോഡിന്റെ പുരോഗതിയെക്കുറിച്ച് നിങ്ങൾക്ക് വ്യക്തമായ കാഴ്ച നൽകുന്നു.

കേർണൽ ഡീബഗ് ചെയ്യുന്നതിനുള്ള വിവിധ വഴികൾ നോക്കുന്നതിന് മുമ്പ്, അത്തരം ഡീബഗ്ഗിംഗ് നടത്തുന്നതിന് ആവശ്യമായ ഫയലുകളുടെ സെറ്റ് പര്യവേക്ഷണം ചെയ്യാം.

കേർണൽ ഡീബഗ്ഗിംഗ് ചിഹ്നങ്ങൾ

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

വിൻഡോസ് കേർണൽ ഡാറ്റ ഘടനയുടെ ഇന്റേണലുകൾ പരിശോധിക്കാൻ ഏതെങ്കിലും കേർണൽ മോഡ് ഡീബഗ്ഗിംഗ് ടൂൾ ഉപയോഗിക്കുന്നതിന് (പ്രോസസുകളുടെ ലിസ്റ്റ്, ത്രെഡ് ബ്ലോക്കുകൾ, ലോഡ് ചെയ്ത ഡ്രൈവറുകളുടെ ലിസ്റ്റ്, മെമ്മറി ഉപയോഗ വിവരങ്ങൾ മുതലായവ), നിങ്ങൾക്ക് ശരിയായ ചിഹ്ന ഫയലുകളും കുറഞ്ഞത് ഒരു ചിഹ്ന ഫയലും ആവശ്യമാണ്. കേർണൽ ബൈനറി ഇമേജിനായി, Ntoskrnl.exe. ചിഹ്ന പട്ടിക ഫയലുകൾ അവ വേർതിരിച്ചെടുത്ത ബൈനറി ഇമേജിന്റെ പതിപ്പുമായി പൊരുത്തപ്പെടണം. ഉദാഹരണത്തിന്, നിങ്ങൾ Windows Service Pack അല്ലെങ്കിൽ ഏതെങ്കിലും കേർണൽ-അപ്ഡേറ്റിംഗ് പാച്ച് ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ, ഉചിതമായ രീതിയിൽ പരിഷ്കരിച്ച ചിഹ്ന ഫയലുകൾ നിങ്ങൾക്ക് ലഭിക്കേണ്ടതുണ്ട്.

വിൻഡോസിന്റെ വ്യത്യസ്‌ത പതിപ്പുകൾക്കായി ചിഹ്നങ്ങൾ ഡൗൺലോഡ് ചെയ്‌ത് ഇൻസ്റ്റാൾ ചെയ്യുന്നത് എളുപ്പമാണ്, എന്നാൽ ഹോട്ട്‌ഫിക്‌സുകൾക്കായി ചിഹ്നങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നത് എല്ലായ്പ്പോഴും സാധ്യമല്ല. ഡീബഗ്ഗിംഗിനായുള്ള ചിഹ്നങ്ങളുടെ ശരിയായ പതിപ്പ് ലഭിക്കുന്നതിനുള്ള ഏറ്റവും എളുപ്പമുള്ള മാർഗ്ഗം, ഡീബഗ്ഗറിൽ വ്യക്തമാക്കിയിട്ടുള്ള ചിഹ്ന പാതയ്ക്കുള്ള പ്രത്യേക വാക്യഘടന ഉപയോഗിച്ച്, സമർപ്പിത Microsoft ചിഹ്ന സെർവർ ഉപയോഗിക്കുക എന്നതാണ്. ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന ചിഹ്ന പാത ഡീബഗ്ഗറിനെ ഒരു ഇന്റർനെറ്റ് ചിഹ്ന സെർവറിൽ നിന്ന് ചിഹ്നങ്ങൾ ഡൗൺലോഡ് ചെയ്യാനും c:\symbols:srv*c:\symbols*http://msdl.microsoft.com/download/symbols എന്നതിൽ ഒരു പ്രാദേശിക പകർപ്പ് സംഭരിക്കാനും കാരണമാകുന്നു

ക്യാരക്ടർ സെർവർ ഉപയോഗിക്കുന്നതിനുള്ള വിശദമായ നിർദ്ദേശങ്ങൾ ഡീബഗ്ഗിംഗ് ടൂൾസ് സഹായ ഫയലിലോ ഇന്റർനെറ്റിലോ http://msdn.microsoft.com/en-us/windows/hardware/gg462988.aspx എന്നതിൽ കാണാവുന്നതാണ്.