Аппараттық және бағдарламалық қамтамасыз етуді орнату

Windows 7 ядросының жөндеу режимінің орындалу уақыты. Windows ядросының күйін түзету құралдары

Ядроны жөндеу үшін компьютерге көмегімен қосылу керек нөлдік модем кабелінемесе модем қосылымы. Түзетуді орындайтын компьютер «Хост» деп аталады, ал проблемалық компьютерге «Target» атауы беріледі.

Екі компьютер де Windows жүйесінің бірдей нұсқасымен жұмыс істеуі керек және Мақсатты компьютерге арналған таңба файлдары негізгі компьютерде орнатылуы керек. Таңба файлдары Windows орнату ықшам дискісінде Support\Debug каталогында берілген.

Түзетуді қосу үшін мақсатты компьютердегі BOOT.INI файлына өзгертулер енгізу керек.

1. BOOT.INI файлының атрибуттарын өзгертіңіз:

attrib c:\boot.ini -r -s

2. Осы файлды және жолды өңдеңіз Windows жүйесін іске қосу/debug опциясын қосыңыз (жүйеге ядроның отладкасын ЖЖҚ-ға жүктеуді айту үшін Windows жүктелуі). Қосымша опциялар жүйеге қандай COM портын пайдалану керектігін айту үшін /Debugport (әдепкі бойынша COM2) және жіберу жылдамдығын көрсету үшін /Baudrate (әдепкі 19200 бад, бірақ 9600 жақсырақ). Мысалға:


мульти(0)диск(0)диск(0)бөлім(0)\WINDOWS="Windows NT" /debug /debugport=com2 /baudrate=9600

3. Файлды сақтаңыз.

4. BOOT.INI файлының алдыңғы атрибуттарын орнатыңыз:

attrib c:\boot.ini +r +s

AT бұл мысалМақсатты компьютер COM2 порты арқылы 9600 бит/с жылдамдықпен қосылуға мүмкіндік берді.

Негізгі компьютер отладка үшін қажетті параметрлермен конфигурациялануы керек. Сонымен қатар, символдық файлдар орнатылуы керек. Оларды орнату үшін орнату ықшам дискісінде \support\debug каталогына өтіп, келесі пәрменді енгізіңіз:

кеңістігі : <целевой диск и каталог>

Мысалға:

expndsym f: d:\таңбалар

Орнату біраз уақыт алуы мүмкін. Егер қызмет бумалары Мақсатты компьютерде орнатылған болса, сол бумалардың символдық файлдары басты компьютерде де орнатылуы керек екенін есте сақтаңыз. Қызмет бумаларына арналған таңба файлдарын Microsoft веб-сайтынан жүктеп алуға болады.

Келесі қадам - ​​күйін келтіру үшін қажетті орта айнымалы мәндерін орнату, мысалы, таңба файлдарының орнын көрсететін айнымалылар және т.б. Төменде осы айнымалылардың сипаттамасы берілген.

Жүйелік айнымалылардың сипаттамасы

Бұл айнымалы мәндердің анықтамасын әр жүктеу кезінде сәйкес пәрмендерді термеу үшін пакеттік файлға орналастыруға болады:

жаңғырық өшірулі
_nt_debug_port=com2 орнатыңыз
_nt_debug_baud_rate=9600 орнатыңыз
_nt_symbol_path=d:\symbols\i386 орнатыңыз
_nt_log_file_open=d:\debug\logs\debug.log орнатыңыз

Енді support\debug\ каталогында орналасқан ядроны жөндеу бағдарламалық құралын көшіру керек<процессор>орнату ықшам дискісінде (support\debug\I386). Ең оңай жолы - бүкіл каталогты көшіру, себебі ол шағын (шамамен 2,5 МБ). I386 платформасы үшін I386KD.EXE файлы ретінде жеткізілетін отладчик пайдаланылады. Түзеткіш I386KD пәрмені арқылы іске қосылады. Пәрменді енгізу үшін пернелер тіркесімін басыңыз және шақыру пайда болғанша күтіңіз пәрмен жолы kd>.

«Ядроны жөндеу» термині ядроның ішкі деректер құрылымын зерттеуді және/немесе ядродағы функциялар арқылы өтуді білдіреді. Бұл отладка ішкі ақпаратты зерттеудің өте пайдалы жолы Windows құрылғылары, себебі ол басқа құралдарды пайдалану арқылы қолжетімсіз ішкі жүйе ақпаратының дисплейлерін алуға мүмкіндік береді және ядродағы кодтың орындалу барысын анық көруге мүмкіндік береді.

Қарас бұрын әртүрлі жолдарядроны жөндеу кезінде осындай жөндеудің кез келген түрін орындау үшін қажет файлдар жинағын қарастырайық.

Ядро жөндеу таңбалары

Символдық файлдарда функциялар мен айнымалылардың атаулары, сондай-ақ деректер құрылымдарының схемасы мен пішімі бар. Олар байланыстыру бағдарламасы арқылы жасалады және жөндеушілер осы атауларға сілтеме жасау және оларды жөндеу сеансы кезінде көрсету үшін пайдаланады. Бұл ақпарат әдетте екілік жүйеде сақталмайды, себебі код орындалған кезде қажет емес. Бұл онсыз екілік кішірейіп, жылдамырақ жұмыс істейтінін білдіреді. Бірақ бұл сонымен қатар жөндеу кезінде отладчиктің отладтау сеансы кезінде сілтеме жасалған екілік кескіндермен байланысты таңба файлдарына қатынасы бар екеніне көз жеткізу керек дегенді білдіреді.

Зерттеу мақсаттары үшін кез келген ядро ​​режимін түзету құралын пайдалану ішкі құрылғыСізге қажет Windows ядросының деректер құрылымдары (процестер тізімі, ағын блоктары, жүктелген драйверлер тізімі, жадты пайдалану ақпараты және т.б.) дұрыс файлдарсимволдар және кем дегенде екілік ядро ​​кескіні үшін символдық файл, Ntoskrnl.exe. Таңбалар кестесі файлдары олар шығарылған екілік кескіннің нұсқасына сәйкес келуі керек. Мысалы, орнатылған болса Windows бумасыҚызметтер бумасы немесе ядроны жаңартатын кейбір түзетулер, сәйкесінше жаңартылған таңба файлдарын алуыңыз керек.

үшін таңбаларды жүктеп алыңыз және орнатыңыз әртүрлі нұсқалар Windows қиын емес, бірақ түзетулер үшін белгілерді жаңарту әрқашан мүмкін емес. Ең оңай алу қалаған нұсқасыотладчикте көрсетілген таңба жолы үшін арнайы синтаксисті пайдаланып, арнайы Microsoft символдық серверіне қатынасу арқылы жөндеуге арналған таңбалар. Мысалы, келесі таңба жолы отладчикке таңбаларды Интернет символы серверінен жүктеп алуға және жергілікті көшірмені c:\symbols:srv*c:\symbols*http://msdl.microsoft.com/download/symbols ішінде сақтауға себеп болады.

Таңбалар серверін пайдалану бойынша егжей-тегжейлі нұсқауларды Түзету құралдарының анықтамалық файлынан немесе http://msdn.microsoft.com/en-us/windows/hardware/gg462988.aspx мекенжайынан табуға болады.

Бұл мақалалар сериясы екі себеппен пайда болды. Біріншіден, маған жобамен жұмыс істеген ұнайды HackSysExtremeVulnerableDriver. Екіншіден, алдым тілектер көпосы тақырыпты ерекшелеу үшін.

Бұл серияны жазуда қолданылған барлық код менің ішінде.

Осы мақалалар сериясында біз Windows жүйесінде ядро ​​деңгейіндегі эксплуаттарды жазуды қарастырамыз. Айта кету керек, біз белгілі осалдықтармен айналысамыз және кері инженерия қажет емес (кем дегенде жүргізуші үшін).

Барлық мақалаларды оқығаннан кейін сіз бұзушылықтардың барлық ең көп тараған сыныптары мен пайдалану әдістерін білетін боласыз, сонымен қатар эксплойттарды x86 архитектурасынан x64 архитектурасына (мүмкіндігінше) порттауға және жаңа қорғаныспен танысуға болады деп болжанады. Windows 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 модулі

DriverEntry процедурасы әрбір драйвер үшін бастапқы болып табылады:

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath IN) (
UINT32 i = 0;
PDEVICE_OBJECT DeviceObject = NULL;
NTSTATUS күйі = STATUS_UNSUCCESSFUL;
UNICODE_STRING DeviceName, 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 функциясына шақыруды қамтиды.
  • DriverObject нысанына қосылады қалаған құрылымдаржәне функция көрсеткіштері.
  • Біз үшін маңыздысы DriverObject->MajorFunction процедурасымен байланысты функция көрсеткіші болып табылады, ол IOCTL өңдеуге жауап береді (I/O Control; кіріс/шығысты басқару);
  • HEVD жүйесінде бұл функция IrpDeviceIoCtlHandler деп аталады, ол әрбір IOCTL үшін көптеген тармақтары бар үлкен шартты өрнек болып табылады. Әрбір осалдықтың бірегей IOCTL бар.

Мысал: HACKSYS_EVD_IOCTL_STACK_OVERFLOW - стек толып кету осалдығын іске қосу үшін пайдаланылатын IOCTL.

Осымен бірінші бөлім аяқталады. Келесі мақалада біз пайдалы жүктемелер туралы айтатын боламыз. Үстінде осы сәтүшінші бөлікте қолданылатын токенді ұрлайтын пайдалы жүктеме ғана қол жетімді.

P.S. Мен сізде кездесетін көптеген нәзіктіктер мен мәселелер бар екенін түсінемін. Бұл цикл эксплуаттарды дамытуға бағытталғандықтан, жол бойындағы барлық мәселелерді өзіңіз шешуге тура келеді. Дегенмен, сіз кез келген сұрақтарыңызды түсініктемелерде қоя аласыз.

  • Авторлары:

    Баринов С.С., Шевченко О.Г.

  • Жылы:
  • Дереккөз:

    Информатика және компьютерлік технологиялар/ Студенттердің, аспиранттар мен жас ғалымдардың VI Халықаралық ғылыми-техникалық конференциясының материалдары – 23-25 ​​қараша 2010 ж., Донецк, ДонҰТУ. - 2010. - 448 б.

аннотация

әкелді салыстырмалы талдауоперациялық жүйеге қолданылатын пайдаланушы режимі және ядро ​​режимін жөндеу Microsoft Windows, соңғысының жөндеуін ұйымдастырудың айырмашылықтары мен мәселелері көрсетілген. Алынған нәтижелер негізінде авариялық және интерактивті жөндеу кезінде ядролық режимді жөндеушілер құрылысына қойылатын негізгі талаптар тұжырымдалған. Талданған бар шешімдерталаптарға сәйкестігі үшін. Атап айтқанда, Microsoft Windows Debugger бағдарламасына ерекше назар аударылады.

Негізгі бөлім

Түзету - қателердің себептерін анықтау және жою процесі бағдарламалық қамтамасыз ету. Кейбір жобаларда жөндеу жалпы әзірлеу уақытының 50% алады. Үнемі жетілдіріліп тұратын арнайы құралдарды пайдалану арқылы жөндеуді айтарлықтай жеңілдетуге болады. Мұндай негізгі құрал бағдарламалық жасақтаманың орындалуын бақылауға, оның орындалу барысын бақылауға және оған кедергі келтіруге мүмкіндік беретін отладчик болып табылады. Ядро жөндеу құралдарын негізінен драйвер әзірлеушілері пайдаланады.

Қолданбалы бағдарламалық жасақтаманы әзірлеудің құралдар жинағы бағдарламашыға кең мүмкіндіктер ұсынады. Кез келген біріктірілген әзірлеу ортасы үшінші тарап утилиталарын қажет етпестен жөндеу мүмкіндігін де қамтиды. Егер біз жүйелік бағдарламалық қамтамасыз ету және драйверлерді әзірлеу туралы айтатын болсақ, онда оның ерекшелігіне байланысты әзірлеу процесі өте қиын және аз автоматтандырылған. Барлық даму кезеңдері, соның ішінде отладтау бөлек. Олардың әрқайсысы ерекше шарттарды талап етеді: бағдарламалау коды толыққанды жазылған компьютерлік жүйе, отладка – отладка жүйесінде, тестілеу – жағдайларға байланысты және т.б. Ядро режимінің отладкасының өзі үйрену қиынырақ және сәйкесінше азырақ достық.

Жалпы, ядроны жөндеу құралдарының жоқтығы туралы айтуға болады. Бұл құралдар қол жетімді болғанымен, балама нұсқалар жиі талқыланбайды. Мысалы, Microsoft Windows жөндеу құралының тым жоғары кіру шегі бар. Көптеген бағдарламашылар онымен танысқан кезде бірінші жағымсыз тәжірибе туралы айтады және оның көптеген мүмкіндіктері талап етілмейді.

Виртуалды мекенжай кеңістігінің құрылымына сүйене отырып, егер қолданба қате жіберсе, бұл қолданбаның деректерді ерікті жад орнына жазуына әкелсе, онда қолданба тек өзінің жадына зақым келтіреді және басқа қолданбалардың жұмысына және операциялық жүйеге әсер етпейді. жүйесі. Ал бағдарламалау кодыядро режимі зақымдауы мүмкін маңызды құрылымдардеректер операциялық жүйе, бұл сөзсіз жалпы сәтсіздікке әкеледі. Тиімсіз жазылған драйвер бүкіл операциялық жүйенің айтарлықтай нашарлауына әкелуі мүмкін.

    Заманауи жөндеушілер мыналарды қамтамасыз етеді негізгі функциялар:
  • бастапқы код деңгейінде жөндеу;
  • орындауды басқару;
  • жадты қарау және өзгерту;
  • процессор регистрлерінің мазмұнын қарау және өзгерту;
  • қоңыраулар стек көрінісі.

Бөлшектелген кодпен жұмысты жеңілдету үшін, деп аталатын. отладка белгілері. Байланыстырушының жұмысы кезінде орындалатын файлдың кескінінен басқа, бағдарламаны орындау кезінде қажет емес, бірақ оны жөндеу кезінде өте пайдалы ақпаратты қамтитын деректер файлын құруға болады: функциялардың атаулары, глобалдық айнымалылар. , және құрылымдардың сипаттамасы. Түзету таңбалары барлығына қолжетімді орындалатын файлдароперация бөлмесі Windows жүйелері.

Орындалуды басқару программа кодындағы берілген нұсқауға жеткеннен кейін бағдарлама кодының орындалуын үзу және жалғастыру мүмкіндігін білдіреді. Бағдарлама коды орындалса қадамдық режим- программалау тілінің әрбір таңбалауышы үшін немесе ішкі бағдарламадан шығу кезінде үзіліс орын алады. Еркін орындау кезінде орындау үзілуі кодтың алдын ала анықталған бөлімдерінде - тоқтау нүктелері орнатылған жерлерде орын алады.

Ядро режимінің кодын тоқтату келесі дилемманы тудырады. Түзеткіш бағдарламашымен әрекеттесу үшін пайдаланушы интерфейсін пайдаланады. Анау. кем дегенде отладчиктің көрінетін бөлігі пайдаланушы режимінде жұмыс істейді және оны құру үшін табиғи түрде интерфейсті пайдаланады қолданбалы бағдарламалау(Windows API), ол өз кезегінде ядро ​​режимінің модульдеріне сүйенеді. Осылайша, ядро ​​режимінің кодын тоқтата тұру тығырыққа әкелуі мүмкін: жүйе пайдаланушы сұрауларына жауап беруді тоқтатады.

Түзеткіштің бөліктері де ядро ​​жадына қол жеткізу үшін ядро ​​режимінде жұмыс істеуі керек. Бұл бірден екі мәселеге әкеледі, бұл процессордың қорғалған режимінде жадты ұйымдастырудың айқын салдары.

Бірінші мәселе виртуалды жады мекенжайларын аударуға қатысты. Драйверлер жадына кіру арқылы пайдаланушы режиміндегі қолданбалармен үнемі өзара әрекеттеседі. Windows операциялық жүйесі аударады виртуалды мекенжайларағын контекстінің тұжырымдамасын басшылыққа ала отырып, физикалық. Жіп контексі – ағынның күйін көрсететін және атап айтқанда, регистрлер жиынын және кейбір басқа ақпаратты қамтитын құрылым. Басқару элементі басқа ағынға тасымалданған кезде, бір ағын туралы ақпаратты сақтайтын және басқасы туралы ақпаратты қалпына келтіретін контекстік қосқыш пайда болады. Ағынның мәтінмәнін басқа процестің ағынына ауыстыру виртуалды мекенжайларды физикалық мекенжайларға аудару үшін пайдаланылатын бет каталогын да ауыстырады.

Ерекшелігі жөнелту кезінде жүйелік қоңыраулар Windows операциялық жүйесі контекстті ауыстырмайды. Бұл ядро ​​режимінің кодына пайдаланушы режимінің виртуалды мекенжайларын пайдалануға мүмкіндік береді.

Жүйе ағындарын жіберуді үзу немесе орындау кезінде жағдай басқаша. Үзу кез келген уақытта орын алуы мүмкін, сондықтан қандай ағын контекстінің пайдаланылатынын болжау мүмкін емес. Жүйелік ағындар, керісінше, ешбір процеске жатпайды және пайдаланушы режимінің виртуалды мекенжайларын аудара алмайды. Бұл жағдайда пайдаланушы режимінің жадына қол жеткізу мүмкін емес.

Екінші мәселе - жадты ауыстыру мүмкіндігі. Жадтағы ақпараттың көпшілігі жылжымалы және физикалық жадтан ауыстырылуы мүмкін қатты дискбет файлына. Физикалық жадта жоқ бетке қатынасу болса, процессор әдетте жад менеджерімен өңделетін Бет ақаулығы үзілуін жасайды және нәтижесінде бет бет файлынан оқылады және физикалық жадқа жүктеледі.

Түзету коды мәжбүрлі түрде пайдаланылса, сипатталған әрекет бұзылады жоғары деңгейүзу сұраулары (үзу сұрау деңгейлері, IRQL). Егер IRQL жад менеджерінің IRQL-іне тең немесе одан үлкен болса, соңғысы жетіспейтін бетті жүктей алмайды, себебі операциялық жүйе Page Fault үзілуін блоктайды. Бұл операциялық жүйені бұзады.

Түзету әдетте интерактивті және төтенше жағдайға бөлінеді. Интерактивті жергілікті жөндеу арқылы отладчик отладка нысанымен бірдей жүйеде жұмыс істейді. Интерактивті қашықтан жөндеуде отладчик және жөндеу нысаны орындалады әртүрлі жүйелер. Ядро кодын жөндеу кезінде жүйені жүктеудің бірінші сатыларынан бастап, желі әлі жұмыс істемей тұрған кезде басқару керек, сондықтан жүйелерді қосу үшін COM, FireWire, USB сияқты қарапайым сериялық интерфейстер қолданылады. Жақында абстракцияның әртүрлі деңгейлерінде бағдарламалық жасақтаманы виртуализациялауды дамыту тенденцияларының арқасында жиі тартады. виртуалды машиналар. Қонақ ОЖ отладталған ОЖ ретінде әрекет етеді, хост ОЖ отладчик пайдаланушы интерфейсін қамтиды.

Сондықтан төтенше жағдайды түзету сынақ компьютерінде жөндеу құралын орнатуды қажет етпейді. Windows операциялық жүйесінің таралуы төтенше жағдайды түзетуді жүзеге асыру механизмдерін қамтиды. Қайта жүктеу алдында операциялық жүйе оның күйі туралы ақпаратты сақтай алады, оны әзірлеуші ​​талдап, себебін біле алады. Файлға сақталған бұл ақпарат жад демпі деп аталады.

Негізгі ядролық күйді түзету құралдарын Windows операциялық жүйесінің өндірушісі Windows жүйесіне арналған еркін таратылатын Debugging Tools бумасының бөлігі ретінде ұсынады. Құралдарға сәйкесінше WinDbg және KD графикалық және консольдық жөндеушілер (бұдан әрі - Windows Debugger) кіреді. Бұл отладчиктердің жұмысы операциялық жүйені әзірлеушілер ұсынған және оның ядросына енгізілген механизмдерге негізделген.

Windows Debugger бағдарламасының негізгі режимі командалық интерпретатор режимі болып табылады. Рахмет модульдік құрылым, жеткізілген әзірлеушілермен бірге Windows командаларыТүзету құралы кеңейтімдер деп аталатын үшінші тарап модульдерін қолдайды. Шындығында, кірістірілген пәрмендердің көпшілігі кеңейтімдер ретінде пішімделген.

Windows Debugger қашықтағы интерактивті және төтенше жағдайды түзетуге бағытталған, оның көмегімен оның барлық мүмкіндіктері ашылады. Сонымен қатар, толыққанды жергілікті интерактивті жөндеуге қолдау көрсетілмейді: отладчик тек кейбір ядро ​​құрылымдарын көруге мүмкіндік береді.

Windows Debugger үшін Марк Руссинович жасаған LiveKD деп аталатын кеңейтім бар, ол белгілі бір мағынада жергілікті интерактивті жөндеуді жүзеге асырады. LiveKD жолда жад демпін жасайды жұмыс жүйесіжәне оны жөндеу үшін пайдаланыңыз.

Windows жүйесіне арналған жөндеу құралдары үнемі жаңартылып отырады және барлық заманауи Windows операциялық жүйелеріне қолдау көрсетеді.

DriverStudio бағдарламалық пакетінде Compuware шығарған SoftICE ядросын жөндеу құралы дәстүрлі түрде Windows жүйесіне арналған жөндеу құралдарына балама ретінде әрекет етті. SoftICE-тің айрықша ерекшелігі қолдау көрсетілетін жүйеде жергілікті интерактивті жөндеуді жүзеге асыру болды аппараттық құрал. Түзеткіш операциялық жүйенің жұмысын толығымен дерлік басқара алады.

2006 жылдың 3 сәуірінен бастап DriverStudio өнімдер тобы «көптеген техникалық және іскерлік мәселелерге, сондай-ақ жалпы нарықтық жағдайларға» байланысты тоқтатылды. соңғы нұсқасыҚолдау көрсетілетін амалдық жүйе — Windows XP 2 қызмет бумасы. Қызметтік бумалар әдетте операциялық жүйе қолданбасының интерфейсін өзгертпейді, бірақ жүйенің қоңырау нөмірлері және басқа құжатталмаған ақпарат өзгеруі мүмкін. SoftICE жөндеу құралы қатты кодталған мекенжайларға сүйенді ішкі құрылымдардеректер. Нәтижесінде 3 Service Pack шығарылымымен үйлесімділік бұзылды. Windows амалдық жүйесінің кейінгі нұсқаларына да қолдау көрсетілмейтіні анық.

Syser Kernel Debugger шағын қытайлық Sysersoft компаниясымен SoftICE отладчикінің орнына жасалған. Алғашқы соңғы нұсқасы 2007 жылы шығарылды. SoftICE сияқты, Syser Kernel Debugger жұмыс істеп тұрған жүйеде интерактивті жөндеуге қабілетті. Қазіргі заманғы тек 32 биттік басылымдар Windows нұсқалары.

Windows Debugger қазіргі уақытта ядро ​​модульдерін әзірлеушілер арасында негізгі құрал болып табылады. Оны Windows операциялық жүйесінің ядросын әзірлеу тобы да пайдаланады.

ChPF OELPFPTSCHE HLBBOYS RP TBVPFE U PFMBDLPK SDTB U BCHBTYKOSHCHNY DBNRBNY RBNSFY. LBL RTBCHYMP, CHBN OHTSOP VKHDEF ЪBDBFSH PDOP YЪ HUFTPKUFCH RPDLBYULY, RETEYUMEOOOSCHI CH ZHBKME /etc/fstab. uVTPU PVTBCHBNY RBNSFY ТУРАЛЫ KHUFTPKUFCHB, OE SCHMSAEYEUS KHUFTPKUFCHBNY RPDLBYULY, OBRTYNET, MEOFSHCH, CH DBOOSCHK NPNEOF OE RPDDETSYCHBAFUS.

Ескерту: YURPMSHЪKhKFE LPNBODH дампондар (8) DMS HLBBOYS SDTH NEUFB, ZDE OHTSOP UPITBOSFSH BCHBTYKOSHCHE DBNRSHCH. rPUME OBUFTPCLY RP LPNBODE айырбастау (8)ТБДЕМБ РПДЛБҰЛЫ ДПМЦОБ ВШЧФШ ЧШЧЧБОБ РТПЗТБНБ думпон. PVSHYUOP LFP CHSHCHRPMOSEPHUS BDBOYEN RETENEOOPK dumpdev H JBKME rc.conf (5). eUMMY BDBOB LFB RETENEOOBS, FP RPUME UVPS RTY RETCHPK NOPZPRPMSHPCHBFEMSHULPK RETEEBZTHЪLE VHDEF BCHFPNBFYUEULY BRHEEO RTPZTBNNB сақтау(8). pOB UPITBOYF BCHBTYKOSHK DBNR SDTB W LBFBMPZ, JBDBOOSCHK H RETENEOOPC dumpdir JBKMB rc.conf . rp HNPMYUBOYA LBFBMPZPN DMS BCHBTYKOSHCHI DBNRPC SCHMSEFUS /var/crash .

MYVP CH NPCEFE ЪBDBFSH HUFTPKUFCHP DMS UVTPUB PVTBYB RBNSFY SCHOP Yuete RBTBNEFT қоқыс CH UFTPL конфигурациясы LPOZHJZHTBGYPOOPZP ZHBKMB CHBYEZP SDTB. fBLPK URPUPV YURPMSHЪPCHBFSH OE TELPNEODHEFUS Y PO DPMTSEO YURPMSHЪPCHBFSHUS, FPMSHLP EUMY CHSH IPFYFE RPMHYUBFSH BCHBTYKOSHCHE PVTBJSCH RBNSFY SDTBCHBCHBHETBHPEUPYB.

Ескерту: dBMEE FETNYO gdb POBUBEF PFMBDUYL gdb , BRHEEOOSCHK H ``TETSYNE PFMBDLY SDTB "". RETEIPD H FFPF TETSIN DPUFYZBEFUS BRHULPN gdb U RBTBNEFTPN -k . h TETSYNE PFMBDLY SDTB gdb YЪNEOSEF UCHPЈ RTYZMBYOEOYE ТУРАЛЫ (kgdb) .

кеңес: eUMMY CHSH YURPMSHHEFE FreeBSD CHETUYY 3 YMY VPMEE TBOOAA, CHSH DPMTSOSCH CHSHCHRPMOYFSH HUEYUEOYE PFMBDPYUOPZP SDTB LPNBODPK жолағы, BOE HUFBOBCHMYCHBFSH VPMMBSHYPE:

# cp kernel kernel.debug # strip -g ядросы

ffpf ybz oe fbl hts y eepvipdyn, op telpneodhen. (чП FreeBSD 4 Й ВПМЕЕ РПЪДОЙИ ТЕМЙЪБИ ЬФПФ ЫБЗ ЧЩРПМОСЕФУС БЧФПНБФЙЮЕУЛЙ Ч ЛПОГЕ РТПГЕУУБ РПУФТПЕОЙС СДТБ make .) лПЗДБ СДТП ХУЕЮЕОП, БЧФПНБФЙЮЕУЛЙ ЙМЙ РТЙ РПНПЭЙ ЛПНБОД ЧЩЫЕ, ЧЩ НПЦЕФЕ ХУФБОПЧЙФШ ЕЗП ПВЩЮОЩН ПВТБЪПН, ОБВТБЧ make install .

ъBNEFSHFE, UFP CH UVBTSCHI CHETUYSI FreeBSD (DP 3.1, OE CHLMOYUBS FFPF TEMY), YURPMSH'HEFUS SDTB CH ZHPTNBFE a.out, RPFPPNH YI RBVMYGSCH UYNCHPMFTBSHOPSHOPSMBB. at VPMSHYPK FBVMYGEK UYNCHPMCH CHOE HUEYUEOOOPN PFMBDPYUOPN SDTE LFP YЪMYYOSS FTBFB. rPUMEDOYE TEMYJSHCH FreeBSD YURPMSHJHAF SDTB CH JPTNBFE ELF, МҰНДА EFP OE SCHMSEFUS RTPVMENPK.

еУМЙ ​​​​ЧЩ ФЕУФЙТХЕФЕ ОПЧПЕ СДТП, УЛБЦЕН, ОБВЙТБС ЙНС ОПЧПЗП СДТБ Ч РТЙЗМБЫЕОЙЙ ЪБЗТХЪЮЙЛБ, ОП ЧБН ОХЦОП ЪБЗТХЦБФШ Й ТБВПФБФШ У ДТХЗЙН СДТПН, ЮФПВЩ УОПЧБ ЧЕТОХФШУС Л ОПТНБМШОПНХ ЖХОЛГЙПОЙТПЧБОЙА, ЪБЗТХЦБКФЕ ЕЗП ФПМШЛП Ч ПДОПРПМШЪПЧБФЕМШУЛПН ТЕЦЙНЕ РТЙ РПНПЭЙ ЖМБЗБ -s , ХЛБЪЩЧБЕНПЗП РТЙ ЪБЗТХЪЛЕ , Б UBFEN CHSHCHRPMOYFE FBLIE YBZY:

# fsck -p # mount -a -t ufs # осылайша /var/crash файлдық жүйеңіз жазылатын болады # savecore -N /kernel.panicked /var/crash # exit # ...көп пайдаланушыға

uFB RPUMEDPCHBFEMSHOPUFSH HLBSCHCHBEF RTPZTBNNE сақтау(8)ЮРПМШ'ПЧБОЙЕ ДТХЗПЗП СДТБ ДМС Й'ЧМЕЮЕОЙС УИНЧПМЮЕУЛЫ ЙНЕО ТУРАЛЫ. yOBYUE POB VHDEF YURPMSHЪPCHBFSH SDTP, TBVPFBAEEEE CH DBOOSCHK NPNEOF Y, ULPTEE CHUEZP, OYUEZP OE UDEMBEF, RPFPNH UFP BCHBTYKOSHCHK PVTB RBNSFYFch YUSDTBYYPTB RBNSFY Y USDTBYpm.

b FERETSH, RPUME UVTPUB BCHBTYKOPZP DBNRB, RETEKDYFE H LBFBMPZ /sys/compile/ НЕ БОЛСА Y BRHUFYFE LPNBODH gdb -k . y RTPZTBNNSC gdb UDEMBKFE CHPF UFP:

Symbol-file kernel.debug exec-file /var/crash/kernel.0 core-file /var/crash/vmcore.0 DTHZPK RTPZTBNNPK.

ChPF TsHTOBM LPNBOD UEBOUB TBVPFShch gdb, YMMAUFTYTHAEYK LFH RTPGEDHTX. dMYOOSH UFTPLY VSCHMY TBPTCHBOSH DMS HMHYUYOYS YUYFBVEMSHOPUFY Y DMS HDPVUFCHB UFTPLY VSCHMY RTPOHNETPCHBOSHCH. CHUE PUFBMSHOPE SCHMSEFUS FTBUUYTPCHLPK PYYVLY, TEBMSHOP CHPOYLOHCHYEK ТЭЦ CHTENS TBVPFSCH OBD DTBCCHETPN LPOUPMY pcvt.

1: Скрипт 1994 ж. 30 желтоқсан 23:15:22 басталды 2: # cd /sys/compile/URIAH 3: # gdb -k ядросы /var/crash/vmcore.1 4: /usr/src/ ішінен таңба деректерін оқу sys/compile/URIAH/ядро ...орындалды. 5:IdlePTD 1f3000 6: дүрбелең: өйткені сіз айттыңыз! 7:1e3f70-дегі ағымдағы PCB 8: ../../i386/i386/machdep.c үшін таңбалармен оқу... орындалды. 9: (kgdb) мұнда 10:#0 жүктеу (arghowto=256) (../../i386/i386/machdep.c жол 767) 11:#1 0xf0115159 дүрбелеңде () 12:#2 0xf01955bd (өлген) ) (../../i386/i386/machdep.c жолы 698) db_fcall ішіндегі 13:#3 0xf010185e () 14:#4 0xf0101586 db_command (-266509132, -266509132, -266509102, -57610102_mand_3010b) () 16:#6 0xf01040a0 db_trap() 17:#7 0xf0192976 in kdb_trap(12, 0, -272630436, -266743723) 18:#8 0xf019d2ebalx19 (...p...p) 20:#10 0xf019cb2f тұзақтағы (...) 21:#11 0xf01932a1 ерекшелікте:calltrap () 22:#12 0xf0191503 cnopen (...) 23:#13 0xf0132c34) спецификациядағы (...) #x14d vn_open () 25:#15 0xf012a183 ашық () 26:#16 0xf019d4eb жүйесінде (...) 27: (kgdb) жоғары 10 28: ../../i386/i386 /trap үшін таңбаларды оқу ...орындалды. 29:#10 0xf019cb2f тұзақта (рамка=(tf_es = -260440048, tf_ds = 16, tf_\ 30:edi = 3072, tf_esi = -266445372, tf_ebp = -0245372, tf_ebp = -026, tf_6 = -262, tf_8 = 260, 26, 26, 26, 26, 28, 26, 28, 26, 26, 26, 26, 28, 26, 26, 26, 26, 28, 26, 26, 28, 28, 28, 26, 26, 26, 30 tf_ds = tf_ds = 16, tf_ds = 16 12, tf_ecx = -26427884, tf \ 32: \ 32: _RAPNO = 64772224, tf_trapno = 1272695296, tf_cs = -26 \ 33: 6672343, tf_cs = -26469368, tf_cs = -2666, tf_eflags, tf_p = 3072, tf_ \ 34: ss = -266427884)) (../../i386/i386/trap.c 283-жол) 35:283 (жарамсыз) trap_pfault(&frame, FALSE); 36: (kgdb) жақтау жақтауы->tf_ebp жақтау->tf_eip 37: ../../i386/isa/pcvt/pcvt_drv.c үшін таңбаларды оқу... орындалды. 38:#0 0xf01ae729 pcopen (dev=3072, flag=3, mode=8192, p=(struct p\ 39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drvc. 403) 40:403 қайтару ((*linesw.l_open)(dev, tp)); 41: (kgdb) тізім 42:398 43:399 tp->t_state |= TS_CARR_ON; 44:400 tp->t_cflag |= CLOCAL; /* модем бола алмайды (:-) */ 45:401 46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200) 47:403 қайтару ((*linesw.l_open)(dev, tp)); 48:404 #else 49:405 қайтару ((*linesw.l_open)(dev, tp, flag)); 50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */ 51:407 ) 52: (kgdb) басып шығару tp 53: ../../i386/i386/cons.c...орындалды. 54:$1 = (struct tty *) 0x1bae 55: (kgdb) tp->t_line 56 басып шығару:$2 = 1767990816 57: (kgdb) жоғары 58:#1 0xf0191503 cnopen (dev=0x0002=0308), , p=(st\ 59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c 126-жол) 60: қайтару ((*cdevsw.d_open)(dev, жалауша, режим, p) ); 61: (кгдб) жоғары 62:#2 0xf0132c34 spec_open () 63: (kgdb) жоғары 64:#3 0xf012d014 vn_open () 65: (кгдб) жоғары 66:#4 0xf012a186 дюйм ()кгб) ашық жоғары 68:#5 0xf019d4eb жүйеде , tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf2_esp = 6, _s = 8, 6, 8, 3, 6) ./../i386/i386/trap.c 673-жол) 73:673 қате = (*callp->sy_call)(p, args, rval); 74: (kgdb) жоғары 75: Бастапқы кадр таңдалды; жоғары көтеріле алмайсың. 76: (kgdb) шығу 77: # exit 78:exit 79:80: скрипт 1994 ж. 30 желтоқсан 23:18:04 ж. орындалды.

lPNNEOFBTYY Л ЧЩЙЕРТЫЧЕДЕОООПНХ ЦХТОБМХ:

UFTPLB 6:

yFP DBNR, CHJSFC RTY RPNPEY DDB (UNPFTY OYCE), RPFPNH LPNNEOFBTYK L BCHBTYKOPNH PUFBOPCH YNEEF YNEOOP CHYD `` себебі сіз айттыңыз! PDOBLP YOBYUBMSHOPK RTYUYOPK RETEIPDB CH DDB VSCHMB BCHBTYKOBS PUFBOPCHLB RTY CHPOYOLOPCHEOYA PYYVLY UFTBOIGSC RBNSFY.

UFTPLB 20:

ffp NEUFPOBIPTSDEOYE JHOLGYY trap() H FTBUUYTPCHLE UFEBL.

UFTPLB 36:

rTYOHDYFEMSHOPE ЮРПМШ'ПЧБОЕ ОПЧПК ЗТБОЙГЩ УФЕБЛ; FERESH FF OE OHTSOP. rTEDRPMBZBEFUUS, UFP ZTBOYGSC UFELB HLBSCCHCHBAF RTBCHIMSHOPE TBURPMPTSEOYE ТУРАЛЫ, DBTSE CH UMHYUBE BCHBTYKOPZP PUFBOPCHB. ZMSDS ТУРАЛЫ UFTPLH YUIPDOPZP LPDB 403, NPTsOP ULBBFSH, UFP CHEUSHNB CHETPSFOP, UFP MYVP CHYOPCHBF DPUFHR RP HLBBFEMA ``tp "", MYVP VSCHM CHCHBSHBYBG.

UFTPLB 52:

RPIPTSE, UFP CHYOPCHBF HLBBFEMSH, OP BY SCHMSEFUS DPRHUFYNSCHN BDTEUPN.

UFTPLB 56:

pDOBLP, PYUECHIDOP, UFP ON HLBSCHBEF ON HUBT NHUPT, FBL UFP NSC OBYMY GENERAL PYYVLH! (DMS FEI, LFP OE OBBLPN U YFPK YUBUFSHHA LPDB: tp->t_line UMKhTSYF DMS ITBOOEOYS TETSYNB LBOBMB LPOUPMSHOPZP HUFTPKUFCHB, Y LFP DPMTSOP VShFFSH DPUFOPPEUMPPYPPYP YFPK DPFPUMPPBFB)

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!