ოპერაციული სისტემის პრინციპი Core Debugger. Windows ოპერაციული სისტემის Kernel რეჟიმი რა არის ბირთვიდან

როგორ უნდა დაიწყოს kernel debugger?

სამაგისტრო პასუხი:

პროგრამული უზრუნველყოფის განვითარების პროცესში, არსებობს ერთი მნიშვნელოვანი კომპონენტი - ეს არის გამართვის. განაცხადის პროგრამებთან დაკავშირებით, იგი ხორციელდება იმ გზით, რომელიც მუშაობს მომხმარებლის რეჟიმში და ხშირად ჩართული IDE. მაგალითად, დრაივერის, ბირთვის გამართვისთვის, მაგალითად, ბირთვის დებატებს უნდა დაიწყოს.

თქვენ უნდა აწარმოოთ CMD ბრძანების პროცესორი. გახსენით დაწყება მენიუ taskbar. ფანჯარაში, რომელიც გამოჩნდება, დააჭირეთ "აწარმოებს ...". "დაწყებული პროგრამა" ფანჯარა გამოჩნდება. ტექსტურ ყუთში შეიყვანეთ CMD, შემდეგ დააჭირეთ ღილაკს "OK".

ახლა შექმნა Boot.ini ფაილის სარეზერვო. პირველ რიგში გაირკვეს Windows- ის ამჟამინდელი ასლის ინსტალაციის გზა: Echo Systemroot%

შემდეგი, წასვლა დისკზე, დამონტაჟებული ოპერაციული სისტემა მოწყობილობის ჩამონათვალში შესვლისას და მათ შემდეგ, კოლონის აყენებს. CD ბრძანების გამოყენებით, გადადით ძირითად დირექტორიაში. ახლა გამოყენებით Attrib ბრძანება, ამოიღონ "დამალული" ატრიბუტები, "წაკითხული მხოლოდ" და "სისტემა" საწყისი boot.ini ფაილი. ასლი ბრძანება ქმნის სარეზერვო და შემდეგ დააყენეთ ატრიბუტები ადგილას.

ამოიღონ მიმდინარე ჩამოტვირთვა პარამეტრების სია, გამოიყენეთ bootcfg / შეკითხვის ბრძანება. სიის ნახვა და განსაზღვრეთ ეს საქონელი, რომლის საფუძველზეც შეიქმნება ახალი პარამეტრების შექმნა Kernel Mode- ში გამართვის შესაძლებლობით. ჩატვირთვის ჩანაწერის იდენტიფიკატორი უნდა გაიხსენოთ.

გამოიყენეთ bootcfg / ასლის ბრძანება ჩატვირთვის ჩანაწერის შესაქმნელად. იმისათვის, რომ მიუთითოთ ჩაწერის იდენტიფიკატორი, რომ გადაწერა, გამოიყენეთ / ID პარამეტრი. გამოყენებით / D პარამეტრის გამოყენებით, მითითებული ჩაწერის სახელი, რომელიც იქნება ნაჩვენები. ახლა თქვენ უნდა დაბრუნდეთ ჩამოტვირთვა პარამეტრების სია გამოყენებით bootcfg / შეკითხვის ბრძანება, და შეხედეთ დამატებითი შესვლის იდენტიფიკატორი.

ახლა თქვენ უნდა ჩართოთ პარამეტრების დაწყება Kernel Debugger ადრე შექმნილი boot ჩანაწერი. თუ თქვენ მიიღებთ სამიზნე მანქანას, თქვენ უბრალოდ უნდა დაამატოთ / გამართვის ვარიანტი.

თუ გსურთ განახორციელოს დისტანციური გამართვის სამიზნე კომპიუტერის COM პორტი მასპორტში მასპინძელი მანქანა, შემდეგ გამოიყენოთ / პორტი და / baud პარამეტრები, რათა მიუთითოთ პორტის ნომერი და გაცვლითი კურსი.

თუ თქვენ ხართ დისტანციურად Debugging მეშვეობით Firewire საკაბელო (IEEE 1394 ინტერფეისი), მაშინ იმისათვის, რომ ჩართოთ შესაბამისი რეჟიმი, გამოიყენოთ / DBG1394 ვარიანტი და მიუთითოთ არხის ნომრის ვარიანტი / ჩ.

დარწმუნდით, რომ ცვლილებები დამზადებულია, შეამოწმეთ ჩატვირთვა BootCFG- ის ბრძანების გამოყენებით / შეკითხვის პარამეტრით. გასასვლელის ბრძანების გატარებით, Command Processor ფანჯრის დახურვა.

საჭიროების შემთხვევაში, ოპერაციული სისტემის ჩატვირთვის პარამეტრების შეცვლა. გახსენით პანელი დაწყების მენიუდან და გახსენით "სისტემის" ელემენტი. "სისტემის თვისებების" ფანჯარაში, რომელიც ხსნის, აირჩიეთ Advanced Tab. ამ ჩანართში, აირჩიეთ სექცია სახელწოდებით "ჩამოტვირთვა და აღდგენა" და დააჭირეთ "პარამეტრებს" ღილაკს. "დატვირთვის და აღდგენის" ფანჯარაში, რომელიც გამოჩნდება, თქვენ უნდა გააქტიუროთ "ოპერაციული სისტემების სია" ვარიანტი. ორივე დიალოგური ფანჯრის დახურვა "OK" ღილაკით.

შეასრულოს კომპიუტერი გადატვირთეთ. აირჩიეთ ჩატვირთვა debugger. შესვლა სისტემაში და დაიწყე მუშაობა სამიზნე მანქანაზე ან დაიწყე დისტანციური გამართვის დაწყება. ისარგებლეთ საშუალებით Windbg და KD.

სტატიების ეს სერია ორი მიზეზის გამო გამოჩნდა. პირველი, მომწონს პროექტთან მუშაობა HacksySextremevulnerverberable . მეორე, მე მივიღე მასობრივი სურვილები ამ თემის გასარკვევად.

მთელი კოდი, რომელიც გამოიყენება ამ სერიის წერილობით ჩემი საცავში.

ამ ციკლში სტატიების, ჩვენ განვიხილავთ წერილობით ექსპლოიტეტების Windows- ში. მნიშვნელოვანია აღინიშნოს, რომ ჩვენ გაუმკლავდეთ ცნობილ მოწყვლადობას და საპირისპირო საინჟინრო არ არის საჭირო (მინიმუმ მძღოლისთვის).

ვივარაუდოთ, რომ ყველა სტატიასთან გაცნობა, თქვენ იცით ყველა ყველაზე გავრცელებული ბუმი კლასები და ოპერაციის მეთოდები და ასევე შეძლებენ X64 არქიტექტურის (თუ შესაძლებელია) X86 არქიტექტურისგან ექსპლოიტებს. და უახლესი დაცვის მეთოდების წაკითხვა Windows 10.

სქემა debugging ბირთვის

განსხვავებით მომხმარებლის დონეზე, როდესაც ცალკე პროცესის აღსრულება შეჩერებულია, მთელი სისტემა გააქტიურებულია ბირთვის დონეზე და ჩვენ ვერ შეძლებთ ამ მეთოდის გამოყენებას. შესაბამისად, თქვენ გჭირდებათ ცალკე debugging მანქანა, რომელსაც შეუძლია დაუკავშირდეს სისტემას, სადაც ბირთვის არის debugged, იხილავთ კერნელის მეხსიერებას და სტრუქტურას, ისევე როგორც სისტემის ფერების ხელში.

სწავლის დამატებითი მასალა:

კერნელი მოწყვლადობის ოპერაცია

ეს პროცესი ბევრად უფრო მხიარულია, ვიდრე მომხმარებლის დონეზე J.

მთავარი მიზანია კერნელი კონტექსტში პრივილეგირებული აღსრულების მიღწევა. და მაშინ ეს ყველაფერი დამოკიდებულია ჩვენს ფანტაზიასთან, დაწყებული ცხოველების შიდა ლუდით და დამთავრებული სახელმწიფოს მიერ დაფინანსებული მუქარის შემოღებით.
ზოგადად, ჩვენი ამოცანაა, რომ მიიღოთ ჭურვი სისტემის პრივილეგიებით.

ამ ციკლის სტატიების თემა

  • ნაწილი 1: სამუშაო გარემოს შექმნა
    • კონფიგურაცია სამი ვირტუალური მანქანები და სისტემები, რომელიც იმოქმედებს როგორც debugger.
    • კონფიგურაცია Windbg Debugger.
  • ნაწილი 2: სასარგებლო დატვირთვები
    • ყველაზე გავრცელებული სასარგებლო ტვირთის შესწავლა. მომდევნო ნაწილებში განიხილება კონკრეტული ხარვეზები და საჭიროების შემთხვევაში, ეხება ამ სტატიას.
  • სხვა ნაწილები.
    • მოწყვლადობის განხილვა.

ბირთვების დონის განვითარების ცხოვრების ციკლი

  • დაუცველობის მოძიება. ეს თემა არ განიხილება ამ ციკლში, რადგან ჩვენ უკვე ვიცით ზუსტად სადაც ბარები მდებარეობს.
  • აღსრულების აღსრულების ნაკადი. ზოგიერთი ხარვეზი უზრუნველყოფს კოდის აღსრულებას, ზოგიერთს დამატებითი მოთხოვნებია.
  • პრივილეგიების გაფართოება. მთავარი მიზანია სისტემის პრივილეგიებით ჭურვი მიიღოთ.
  • აღსრულების ნაკადის აღდგენა. კერნელი დონის Unaccounted გამონაკლისი გამოიწვიოს სისტემის დაშლა. თუ თქვენ არ აპირებთ DOS- ის თავდასხმის გამოყენებას, ეს ფაქტი უნდა იყოს გათვალისწინებული.

სამიზნე სისტემების სახეები

ჩვენ ვიმუშავებთ მოწყვლადობას შემდეგ სისტემებში (კონკრეტული ვერსია არ არის ფუნდამენტური):

  • Win7 X86 VM.
  • Win7 X64 VM.
  • Win10 X64 VM.

დავიწყოთ X86 არქიტექტურა, შემდეგ კი ჩვენ WIN7 X64 სისტემასთან ერთად ექსპლოიტით. ზოგიერთი ექსპლოიტი არ აწარმოებს მანქანებს Win10- თან ერთად ახალი დაცვის თანდასწრებით. ამ შემთხვევაში, ჩვენ ვიცავთ ექსპლოიტის მუშაობის ლოგიკას, ან ჩვენ ვიყენებთ სრულიად განსხვავებულ მიდგომას.

გამოყენებული პროგრამული უზრუნველყოფა:

  • Hypervisor (მასობრივი პარამეტრები).
  • Windows 7 x86 VM
  • Windows 7 x64 VM
  • Windows 10 x64 VM

შექმნის სისტემების გამართვის სისტემები

Debugging სისტემები, რომელთანაც ჩვენ ურთიერთქმედება მიზნად ისახავს ჩამოტვირთოთ დაუცველი მძღოლი. ამ მანქანებზე, ხშირად მოხდება, რადგან ბირთვის ყველაზე გამონაკლისი ამ ტიპის ფენომენზე ხელს უწყობს. აუცილებელია ამ სისტემების საკმარისად საკმარისად გამოყოს.

თითოეულ მანქანაზე, რომელიც გაუქმდება, თქვენ უნდა გააკეთოთ შემდეგი:

  • Inside Virtualkd დირექტორია, აწარმოებს სამიზნე \\ vminstall.exe ფაილი. ახალი ჩატვირთვის ჩანაწერი დაემატება და Debugging ფუნქციები იქნება ხელმისაწვდომი და ავტომატური კავშირი Virtualkd სერვერზე დამონტაჟებული სისტემა, რომელიც მოქმედებს როგორც debugger.

Windows 10 VM შემთხვევაში, თქვენ უნდა ჩართოთ ტესტი ხელმოწერის რეჟიმი, რომელიც საშუალებას გაძლევთ ჩამოტვირთოთ ხელმოწერილი მძღოლები ბირთვის.

BCDEDITITIT / SET ტესტირების შემდეგ და გადატვირთეთ დესკტოპის შესახებ, "ტესტირების რეჟიმი" გამოჩნდება.

მოკლე აღწერა HEVD მოდული

მძღოლის პროცედურა თითოეული მძღოლის დასაწყისია:

NtStatus DriverNentry (Pdriver_Object DriverObject, Punicode_String RegistryPath) (
Uint32 i \u003d 0;
Pdevice_Object deatelyobject \u003d null;
Ntstatus სტატუსი \u003d status_unsuccessful;
Unicode_String Devicename, Dosdevicename \u003d (0);

Unremerenced_parameter (registrypath);
Paged_code ();

Rtlinitinicodestring (& devicename, l "\\\\ მოწყობილობა \\\\ HacksysextremeRemevulerverabledriver");
Rtlinitunicodestring (& dosdevicename, l "\\\\ dosdevices \\\\ hacksysextremevulerabledriver");

// შექმნა მოწყობილობა
სტატუსი \u003d iocreatedevice (DriverObject,
0,
& Devicename
File_device_unknown,
File_device_secure_open,
ცრუ
& Deviceobject);

  • ეს პროცედურა მოიცავს მძღოლის დასახელებას, რომელიც, რომელსაც ჩვენ ვიყენებთ კომუნიკაციის დროს.
  • მძღოლის ობიექტი დაამატებთ სასურველ სტრუქტურებს და ფუნქციებს.
  • ჩვენთვის, IOCTL- ის გადამუშავების პროცედურისთვის მნიშვნელოვანია მძღოლის გადამამუშავებელი პროცედურის ფუნქციის მაჩვენებელი (I / O კონტროლისთვის; შეყვანის / გამომავალი კონტროლი);
  • In Hevd, ეს ფუნქცია ეწოდება irpdeviceioctlhandler, რომელიც არის დიდი პირობითი გამოხატულება უამრავი ფილიალების თითოეული Ioctl. თითოეული დაუცველობის აქვს უნიკალური ioctl.

მაგალითი: hacksys_evd_ioctl_stack_overflow არის ioctl გამოიყენება გააქტიურების ბარები ასოცირდება overflow of დასტის.

ეს არის პირველი ნაწილი მთავრდება. მომდევნო სტატიაში ჩვენ ვისაუბრებთ Payloads- ზე. ამ დროისთვის, მხოლოდ სასარგებლო დატვირთვა ხელმისაწვდომია TOKENS- ის ქურდობისთვის, რომელიც მესამე ნაწილში იქნება გამოყენებული.

P.S. მე მესმის, რომ არსებობს უამრავი subtleties და პრობლემები, რომელთანაც თქვენ შეიძლება ექმნებათ. მას შემდეგ, რაც ეს ციკლი ყურადღებას ამახვილებს ექსპლოიტების განვითარებაზე, თქვენ უნდა გადაწყვიტოს ყველა ასოცირებული პრობლემები. თუმცა, ყველა კითხვას, რომელსაც თქვენ შეგიძლიათ თქვათ კომენტარი.

  • ავტორები:

    Barinov S.S., Shevchenko O.g.

  • წელი:
  • წყარო:

    სტუდენტთა, კურსდამთავრებულთა და ახალგაზრდა მეცნიერთა VI საერთაშორისო სამეცნიერო-ტექნიკური და ტექნიკური კონფერენციის ინფორმატიკა და კომპიუტერული ტექნიკა / მასალები - 2010 წლის 23-25 \u200b\u200bნოემბერი, დონეცკი, დონნტ. - 2010. - 448 გვ.

ანოტაცია

მომხმარებლის რეჟიმისა და ბირთვის რეჟიმის დამახინჯების შედარებითი ანალიზი გამოიყენება Microsoft Windows- ის ოპერაციული სისტემისთვის, განასხვავებს და ამ უკანასკნელის გამართვის ორგანიზების პრობლემებს. მიღებული შედეგების საფუძველზე, კერნელი რეჟიმის დებატების მშენებლობის ძირითადი მოთხოვნები საგანგებო და ინტერაქტიული გამართვის შემთხვევაში. არსებული გადაწყვეტილებების ანალიზი განხორციელდა მოთხოვნების შესაბამისად. კერძოდ, განსაკუთრებული ყურადღება ეთმობა Microsoft Windows Debugger Debugger- ს.

Მთავარი ნაწილი

Debugging არის პროცესი განსაზღვრის და აღმოფხვრის მიზეზების შეცდომების პროგრამული უზრუნველყოფა. ზოგიერთ პროექტში, დებაგირება მთლიანი განვითარების დროის 50% -ს შეადგენს. Debugging შეიძლება მნიშვნელოვნად გამარტივდეს, როდესაც გამოყენებით სპეციალიზებული ინსტრუმენტები, რომლებიც მუდმივად გაუმჯობესდა. მთავარი ასეთი ინსტრუმენტი არის debugger, რომელიც საშუალებას გაძლევთ გააკონტროლოს განხორციელების პროგრამული უზრუნველყოფა, ნახეთ მისი ნაბიჯი და ჩაერიოს მას. Kernel Debugging ინსტრუმენტები ძირითადად გამოიყენება მძღოლის დეველოპერები.

განაცხადის პროგრამული უზრუნველყოფის განვითარების ინსტრუმენტარიუმს გთავაზობთ ფართო სპექტრს. ნებისმიერი ინტეგრირებული განვითარების გარემო მოიცავს გამართვის შესაძლებლობას, რომელიც არ უნდა გამოიყენოს მესამე მხარის კომუნალური. თუ ჩვენ ვსაუბრობთ სისტემური პროგრამული და კონკრეტულად მძღოლების განვითარებაზე, მაშინ მისი სპეციფიკის ძალით, განვითარების პროცესი ძალიან რთულია და პატარა ავტომატიზირებულია. განვითარების ყველა ფაზა, მათ შორის გამართვის ჩათვლით, ცალკეა. თითოეული მათგანის შესასრულებლად აუცილებელია სპეციალური პირობები: პროგრამის კოდის წერა ხორციელდება სრულფასოვანი კომპიუტერული სისტემით, გამართვის სისტემაზე, ტესტირებაზე, რაც დამოკიდებულია გარემოებებზე და ა.შ. იგივე ბირთვი რეჟიმის debugger უფრო კომპლექსურია განვითარებაში და, შესაბამისად, ნაკლებად მეგობრული.

ზოგადად, ჩვენ შეგვიძლია ვისაუბროთ Core Debugging- ის ნაკლებობაზე. მიუხედავად იმისა, რომ ეს ნიშნავს, ხშირად არ არის აუცილებელი ალტერნატივების შესახებ საუბარი. მაგალითად, Microsoft Windows Debugger Debugger აქვს ძალიან მაღალი შესვლის ბარიერი. ბევრი პროგრამისტი საუბრობს პირველი უარყოფითი გამოცდილების შესახებ, როდესაც მასთან შეხვედრისას და მისი შესაძლებლობების უმრავლესობა რჩება.

ვირტუალური მისამართების სივრცის სტრუქტურის საფუძველზე, თუ განაცხადში შეცდომა ხდება, შედეგად, განაცხადის ჩაწერა მონაცემები თვითნებური მეხსიერების ადგილას, განაცხადი მხოლოდ საკუთარ მეხსიერებას ზიანს აყენებს და არ იმოქმედებს სხვა ოპერაციაზე აპლიკაციები და ოპერაციული სისტემა. ვინაიდან Core Mode Code- ს შეუძლია განახორციელოს ოპერაციული სისტემის მნიშვნელოვანი მონაცემების სტრუქტურები, რაც აუცილებლად გამოიწვევს საერთო უკმარისობას. არაეფექტურად დაწერილი მძღოლი ასევე შეიძლება გამოიწვიოს მთელი ოპერაციული სისტემის სერიოზული დეგრადაცია.

    თანამედროვე debuggers უზრუნველყოფს შემდეგ ძირითად ფუნქციებს:
  • კოდის დონის გამართვისას;
  • აღსრულების მართვა;
  • მეხსიერების ნახვა და შეცვლა;
  • პროცესორის რეესტრების შინაარსი და შეცვლა;
  • ზარის დასტის ნახვა.

ხელი შეუწყოს სამუშაოს disassembly კოდი, ე.წ. გამოიყენება. Debugging სიმბოლოები. დამაკავშირებელი მუშაობისას, შესრულების ფაილის გამოსახულების გარდა, მონაცემთა ფაილი შეიძლება შეიქმნას, რომელიც არ არის საჭირო პროგრამის შესრულებისას, მაგრამ ეს ძალიან სასარგებლოა, როდესაც ეს: ფუნქციების სახელები, გლობალური ცვლადები, სტრუქტურების აღწერა. Debugging სიმბოლოები ხელმისაწვდომია ყველა შესრულებადი Windows ოპერაციული სისტემის ფაილი.

აღსრულების კონტროლის ქვეშ ნიშნავს პროგრამის კოდექსის აღსრულების და განახლების უნარი პროგრამის კოდექსში მითითებულ ბრძანებას. თუ პროგრამის კოდი შესრულებულია ნაბიჯ-ნაბიჯ რეჟიმში - ჩარევა ხდება თითოეული პროგრამირების ენის ლექსისთვის ან subroutine- ის გასასვლელად. უფასო აღსრულებით, აღსრულების შეწყვეტა ხდება კოდექსის მოწინავე მონაკვეთებში, სადაც დამონტაჟებულია გაჩერების რაოდენობა.

ძირითადი რეჟიმის კოდის შეწყვეტისას, შემდეგი დილემა ხდება. Debugger ურთიერთქმედება პროგრამისტი იყენებს ინტერფეისი. ისინი. მინიმუმ, Debugger- ის ხილული ნაწილი ხორციელდება მომხმარებლის რეჟიმში და მას ბუნებრივად იყენებს აპლიკაციის პროგრამირების ინტერფეისს (Windows API), რაც, თავის მხრივ, კერნელი რეჟიმის მოდულებზეა დამოკიდებული. ამდენად, ძირითადი რეჟიმის კოდის შეჩერება შეიძლება გამოიწვიოს ორმხრივი ბლოკირება: სისტემა შეწყდება მომხმარებლის მოთხოვნის პასუხად.

კერნელი მეხსიერების წვდომისათვის, დებატების კომპონენტები ასევე უნდა შესრულდეს ბირთვის რეჟიმში. ეს იწვევს ორი პრობლემის წარმოქმნას ერთდროულად, რაც აშკარაა დაცული პროცესორის რეჟიმში მეხსიერების ორგანიზაციის აშკარა შედეგია.

პირველი პრობლემა ეხება ვირტუალური მეხსიერების მისამართების მაუწყებლობას. მძღოლები მუდმივად ურთიერთქმედებენ მომხმარებლის რეჟიმის აპლიკაციებთან მათი მეხსიერების ხელმისაწვდომობის გზით. Windows ოპერაციული სისტემა მაუწყებლობს ვირტუალურ მისამართებს ფიზიკურად, ხელმძღვანელობს ნაკადი კონტექსტის კონცეფციით. ნაკადის კონტექსტი არის სტრუქტურა, რომელიც ასახავს ნაკადის სახელმწიფოსა და მათ შორის, კერძოდ, რეგისტრაციის კომპლექტებს და სხვა ინფორმაციას. როდესაც კონტროლი გადაეცემა სხვა ნაკადს, კონტექსტის შეცვლა ჩნდება, რომელშიც ერთი ნაკადის შესახებ ინფორმაცია გადაარჩინა და სხვა ინფორმაცია აღდგენილია. კიდევ ერთი პროცესის ნაკადი გადართვისას, ასევე გადაცემული ვირტუალური მისამართების გადაცემასთან დაკავშირებული გვერდის დირექტორია.

თავისებურება ის არის, რომ როდესაც დისპეჩერის სისტემის ზარები, Windows ოპერაციული სისტემა არ გადადის კონტექსტში. ამის გამო, ბირთვის რეჟიმის კოდს შეუძლია გამოიყენოს მომხმარებლის რეჟიმის ვირტუალური მისამართი.

წინააღმდეგ შემთხვევაში, სიტუაცია არის, როდესაც გაგზავნის interrupts ან ასრულებს სისტემის თემა. შეწყვეტა შეიძლება ნებისმიერ დროს მოხდეს, ამიტომ შეუძლებელია პროგნოზირება, თუ რომელი კონტექსტის ნაკადი იქნება გამოყენებული. სისტემური ნაკადები არ ეკუთვნის ნებისმიერ პროცესს და არ შეუძლია მომხმარებლის რეჟიმის ვირტუალური მისამართის გადაცემა. აქედან გამომდინარე, ამ სიტუაციებში შეუძლებელია მომხმარებლის რეჟიმის ხსოვნას.

მეორე პრობლემაა მოძრავი მეხსიერების გასაჩივრება. მეხსიერების უმრავლესობის უმრავლესობა გადავიდა და ნებისმიერ დროს შეიძლება გადაადგილდეს ფიზიკური მეხსიერების საწყისი ხისტიდან გვერდზე. თუ თქვენ ეხება გვერდს, რომელიც არ არსებობს ფიზიკურ მეხსიერებაში, ნორმალურ ვითარებაში, პროცესორი გენერირდება მეხსიერების მენეჯერის მეხსიერების შეწყვეტას, რის შედეგადაც გვერდი წაიკითხავს გვერდს და დატვირთული ფიზიკური მეხსიერება.

აღწერილი ქცევა დარღვეულია, თუ Debugger- ის პროგრამის კოდექსი იძულებულია გამოიყენოს მაღალი დონის შეწყვეტა შეკითხვის (ჩარევის მოთხოვნის დონე, IRQL). IRQL- თან ერთად, რომელიც ემთხვევა IRQL მეხსიერების მენეჯერს, ქალბატონს ვერ შეძლებს დაკარგული გვერდის ჩატვირთვა, რადგან ოპერაციული სისტემა დაბლოკავს შეწყვეტის გვერდს. ეს გამოიწვევს ოპერაციული სისტემის დაშლას.

გამართვის მიღება შეუძლებელია ინტერაქტიული და საგანგებო. ინტერაქტიული ადგილობრივი გამართვისას, Debugger ხორციელდება იმავე სისტემაში, როგორც Debug ობიექტი. ინტერაქტიული დისტანციური გამართვისას, Debugger და Debug ობიექტი ხორციელდება სხვადასხვა სისტემებში. ბირთვის კოდექსის გამართვისას სისტემა უნდა იყოს მონიტორინგი, მისი გადმოსაწერად პირველი ნაბიჯებიდან, როდესაც ქსელი ჯერ არ ფუნქციონირებს, ამიტომ მარტივი სერიული ინტერფეისები, როგორიცაა COM, Firewire, USB, გამოიყენება სისტემების კომუნიკაციისთვის. ცოტა ხნის წინ, პროგრამული უზრუნველყოფის ვირტუალიზაციის განვითარების ტენდენციების გამო, ვირტუალური მანქანები სულ უფრო იზიდავს. სტუმრები OS მოქმედებს, როგორც Debugged, OS განთავსებული მოიცავს Debugger მომხმარებლის ინტერფეისი.

ამდენად, საგანგებო Debugging, თქვენ არ გჭირდებათ დააყენოთ გამართვის ინსტრუმენტი ტესტი კომპიუტერი. Windows ოპერაციული სისტემის განაწილება მოიცავს მექანიზმების განხორციელების მექანიზმებს. ადრე გადატვირთვისას, ოპერაციულ სისტემას შეუძლია შეინახოს ინფორმაცია მისი სახელმწიფოს შესახებ, რომ დეველოპერი შეიძლება გაანალიზდეს და გაეცნოს მიზეზს. ფაილში ინახება ეს ინფორმაცია მეხსიერების ნაგავსაყრელზე.

ძირითადი Core Mode Debugging საშუალებები უზრუნველყოფილია მწარმოებელი Windows ოპერაციული სისტემის ფარგლებში ფარგლებში უფასო გამართვის ინსტრუმენტები Windows პაკეტი. ინსტრუმენტები მოიცავს Windbg- ისა და KD- ის გრაფიკულ და კონსოლს, შესაბამისად (შემდგომში Windows Debugger). ამ DEBuggers- ის მუშაობა ეფუძნება ოპერაციული სისტემის დეველოპერების მიერ მოწოდებულ მექანიზმებს და მის კერნში.

ძირითადი რეჟიმი Windows Debugger არის ბრძანება თარჯიმნის რეჟიმი. მოდულური სტრუქტურის გამო, მიწოდებული დეველოპერების გარდა, Windows Debugger ბრძანებები მხარს უჭერს მესამე მხარის მოდულებს, რომელსაც მოუწოდა გაგრძელება. სინამდვილეში, ყველაზე ჩადგმული ბრძანებები ასევე გაფორმებულია გაფართოების სახით.

Windows Debugger ორიენტირებულია დისტანციური ინტერაქტიული და საგანგებო გამართვის შესახებ, როდესაც მისი შესაძლებლობების გამოყენებისას გამოვლინდა. ამავდროულად, სრულფასოვანი ადგილობრივი ინტერაქტიული გამართვის მხარდამჭერი არ არის მხარდაჭერილი: Debugger საშუალებას იძლევა მხოლოდ ბირთვის სტრუქტურების სანახავად.

არსებობს გაფართოების მოდული Windows Debugger მოუწოდა Livekd, რომელიც შექმნილია Mark Russinianovich, რომელიც გარკვეულ აზრს ახორციელებს ადგილობრივი ინტერაქტიული გამართვის. Livekd on Go ქმნის ნაგავსაყრელის სამუშაო სისტემის მეხსიერება და იყენებს მას debugging.

"Debugging ინსტრუმენტები Windows" ინსტრუმენტები რეგულარულად განახლდება და მხარს უჭერს ყველა თანამედროვე Windows ოპერაციული სისტემები.

Softice Kernel Debugger მიერ წარმოებული Compuware მძღოლების პაკეტი, ტრადიციულად ასრულებს ალტერნატივა "გამართვის ინსტრუმენტები Windows" პაკეტი. Softice- ის გამორჩეული თვისება იყო მხარდაჭერილი ტექნიკის ადგილობრივი ინტერაქტიული გამართვის განხორციელება. Debugger შეიძლება თითქმის მთლიანად გააკონტროლოს ოპერაციული სისტემის ოპერაცია.

2006 წლის 3 აპრილიდან მძღოლების საოჯახო პროდუქტების გაყიდვა შეწყდა "ბევრი ტექნიკური და ბიზნეს პრობლემების, ასევე ბაზრის ზოგადი სტატუსის გამო". ოპერაციული სისტემის ბოლო ვერსია, რომელთა მხარდაჭერას ახორციელებდნენ Windows XP სერვისის პაკეტი 2. როგორც წესი, სერვისის განახლებები არ შეცვლის ოპერაციული სისტემის აპლიკაციის ინტერფეისს, მაგრამ სისტემის ზარის ნომრებისა და სხვა დაუსაბუთებელი ინფორმაციის რაოდენობა შეიძლება გაიაროს ცვლილება. Softice Debugger ეყრდნობოდა მკაცრად დადგენილი მისამართები შიდა მონაცემთა სტრუქტურების. შედეგად - მომსახურების პაკეტის შენახვისას 3 თავსებადობა იყო გატეხილი. ცხადია, არ არის მხარდაჭერილი Windows ოპერაციული სისტემის უფრო მოგვიანებით ვერსიები.

Syser Kernel Debugger მიერ შექმნილი პატარა ჩინური კომპანია Sysersoft როგორც ჩანაცვლება რბილი debugger. პირველი საბოლოო ვერსია 2007 წელს გამოვიდა. ისევე როგორც Softice, Syser Kernel Debugger შეუძლია შეასრულოს ინტერაქტიული გამართვის ოპერაციული სისტემა. მხარდაჭერილი არის მხოლოდ 32-bit გამოცემების თანამედროვე ვერსიები Windows.

ამ ეტაპზე, Windows Debugger არის ძირითადი ინსტრუმენტი შორის დეველოპერები Kernel მოდულები. იგი ასევე იყენებს Windows ოპერაციული სისტემის ძირითადი განვითარების გუნდს.

Debugger - მეორე შემდეგ შემდგენელი აუცილებელია პროგრამების შექმნა. თუმცა, ბევრი მათგანი, ვინც ჩაწერეთ კომპიუტერულ პროგრამებს და გამოიყენებს debugger, არ იცის, რა პრინციპები და მექანიზმები მისი მუშაობის.


ძნელია debugger ...

იმ ფაქტის გათვალისწინებით, რომ პროგრამისტებმა გამოიყენონ სადესანტო სადილი და ნოსნო, განსაკუთრებით მაშინ, როდესაც ისინი ღრმა გამართვის რეჟიმში შედიან, აღნიშნულია, რომ თუ Debugger არ არის პროგრამა, მაგრამ რკინის ნაჭერი, ის აუცილებლად გადაიზარდა და გატეხა . იმის გამო, რომ იმდენი მუშაობა, რამდენად გადის debugger, კი არ აქვს შემდგენელი.

რა თქმა უნდა, მას შემდეგ, რაც ახლა ბევრი სხვადასხვა პროგრამირების ენა, მაშინ debuggers თითოეული მათგანი საკუთარი. ბუნებრივია, ამ ენების სხვადასხვა კატეგორიის სხვადასხვა კატეგორიის განსხვავებებია DEBuggers- ის მუშაობაში: მაგალითად, ინტერპრეტაციულ რუბლის პროგრამების დებატებში განსხვავებულად იმუშავებს, ვიდრე ბაიტის კოდექსში შედგენილი ჯავის ენა და დებაგერი იყიდება Java, თავის მხრივ, ექნება განსხვავებები Debugger Visual C ++.

Windows პლატფორმაზე მელაპარაკებ. წარუმატებლების მუშაობის პრინციპების რეაგირება შესაძლებელი იქნება POSIX სისტემის ფარგლებში გამართულ დებრძოლებთან და სადავო სისტემებთან ერთად, რომელიც არ მუშაობს ოპერაციული სისტემის დონეზე, მაგრამ ვირტუალური მანქანების ან ნებისმიერი თარჯიმნის დონეზე .


Debuggers for Windows: ორი ტიპის

არსებობს ორი ფუნდამენტურად სხვადასხვა სახის debuggers ქვეშ Windows. მე ვფიქრობ, ყველაფერი შეექმნა ყველაფერს, როდესაც delphi- ზე პროგრამირდება (არ დაპროგრამებულია მასზე? ძნელი დასაჯერებელია, რა დაპროგრამებულია სკოლაში და უმცროსი კურსებში?). ეს არის debuggers საბაჟო პროგრამები. ისინი საკმაოდ რამდენიმე, და ისინი ინდივიდუალურად არიან და (განსაკუთრებით, სხვათა შორის, ხშირად) ინტეგრირებული განაცხადის განვითარების გარემოში. მათ შორის debuggers განაწილებული როგორც ცალკე პროგრამული პროდუქტები ტრადიციულად ollydbg, და მე ერთხელ დავწერე ამის შესახებ "კომპიუტერი Westi".

მეორე ტიპის debuggers არის ძირითადი debuggers ოპერაციული სისტემა. ისინი შეხვდებიან და ნაკლებად ხშირად იყენებენ და მათი მოწყობილობით განსხვავდება Debugger მომხმარებლის აპლიკაციებისგან. ყველაზე ცნობილი, და, ამავე დროს, საუკეთესო ძირითადი debugger არის რბილი. ალბათ თქვენ არა მარტო ისმის მის შესახებ, არამედ გამოყენებული.

მას შემდეგ, რაც თითოეული ორი ტიპის Debuggers- ს აქვს საკუთარი სპეციფიკა, მაშინ თითოეულ მათგანს გეტყვით.


Debugger მომხმარებლის პროგრამები

საბაჟო განაცხადების გამართვა მარტივია, რადგან შავი და ბინძური სამუშაო ხდება ოპერაციულ სისტემაში. Windows- ს აქვს სპეციალური პროგრამული ინტერფეისები, რომლებიც განკუთვნილია მომხმარებლის დონის აპლიკაციების გამართვისთვის - მათ უწოდებენ Windows- ს Debugging API- ს. ეს არის debugging APIs, რომლებიც გამოიყენება ყველა debuggers რომლებიც ჩანერგილი პოპულარული ინტეგრირებული განვითარების გარემოში Windows.

იმისათვის, რომ დაიწყოს დაწყების დაწყების შემთხვევაში, Debugger უნდა დაიწყოს debugged პროცესი სპეციალურად - ისე, რომ სისტემა იცის, რომ ეს პროცესი იქნება debugging. ამის შემდეგ, Debug ციკლი იწყება: პროგრამა შესრულებულია გარკვეული ღონისძიების დაწყებამდე, რომელსაც ეწოდება - Debug ღონისძიება, ან გამართვის ღონისძიება. ამ შემთხვევაში, გამართვის ციკლი ცალკე ნაკადშია, რათა თავიდან იქნას აცილებული სადესანტო ჩამოკიდებული.

მაგრამ ეს მხოლოდ დასაწყისია. იმის გამო, რომ ყველაზე საინტერესო რამ მუშაობს debugger იწყება, როდესაც გამართვის მოვლენა მოხდა. ყოველივე ამის შემდეგ, სინამდვილეში, რა არის სამუშაოების სამუშაო? იმისათვის, რომ დაეხმაროს პროგრამისტი ლოკალიზება შეცდომა სპეციფიკური ფუნქცია, კონკრეტული ოპერაცია, კონკრეტული ცვლადი. ამ მძიმე შემთხვევაში, Debugger ასევე შეუძლია დაეხმაროს ოპერაციული სისტემა.

ასე რომ, გამართვის მოვლენა მოხდა, შემდეგ კი აუცილებელია რატომღაც გაირკვეს, თუ როგორ უკავშირდება პროგრამის ტექსტს. ეს შესაძლებელია მხოლოდ იმ შემთხვევაში, თუ სპეციალური DEBUG ინფორმაცია ჩართულია პროგრამაში თავად - tab debugging სიმბოლო. იგი შეიცავს ინფორმაციას მისამართებისა და თვისებების, მონაცემთა ტიპების, კოდის რიგების რაოდენობას შორის შესაბამისობას. მათ მადლობა მათ, რომ არის ის, რომ გამართვის, საიდანაც თითოეული Windows პროგრამისტი იცნობს. სიმბოლური მაგიდები განსხვავებული ფორმატებია, ამიტომ ყოველთვის არ არის შესაძლებელი, რომ შეადგინოს პროგრამა, რომელიც შედგენილია ერთი დეველოპერის შემდგენლის მიერ სხვა მწარმოებლისგან Debugger- ის გამოყენებით. თუმცა, თუმცა, ყველაზე გავრცელებული ფორმატი შეიძლება განისაზღვროს - ეს არის PDB (პროგრამის მონაცემთა ბაზა), და ის შექმნილია, ბუნებრივია, Microsoft Corporation.

ასე რომ, თუ სიმბოლოების Debug ცხრილი აქვს PDB ფორმატში, შეგიძლიათ გამოიყენოთ სპეციალური ინსტრუმენტი Microsoft Corporation - სიმბოლური გამართვის პროცესორი. მას შემდეგ, რაც ის სისტემაში შევიდა და imagehlp.dll- ს მოუწოდა, მაგრამ დიდი ხნის წინ ცალკე ბიბლიოთეკაში ხაზგასმით აღინიშნა. სიმბოლო პროცესორი საშუალებას გაძლევთ იპოვოთ მოცემული მისამართი უახლოეს ღია ფუნქციებზე ან გლობალურ ცვლადს, ასევე სიმებიანი რიცხვისა და წყაროს ტექსტური ფაილის ნომრით, რომელშიც ეს ხაზი მდებარეობს. საპირისპირო ოპერაციები მხარს უჭერენ, მაგალითად, მისამართების მოძიება მისი სახელით.

ეს, რა თქმა უნდა, არ არის ყველა სამუშაო, რომ debugger ჩართულია საბაჟო განაცხადების. მაგალითად, როდესაც მრავალრიცხოვანი აპლიკაციების გამართვისას, ბევრი ძალიან დახვეწილი მომენტი, რომელიც დაკავშირებულია ნაკადების ურთიერთქმედებასთან. მაშინაც კი, როდესაც ასეთი შედარებით მარტივი რამ, როგორიცაა მომსახურება, არსებობს ნიუანსი.

მაგრამ ნიუანსზე ბოლომდე არ შეწყდება - სტატიის დასასრულს, გეტყვით, სად წაიკითხოთ მათ შესახებ. ახლა მოდით შევხედოთ Kernel Debuggers.


ბირთვული გამართვის

Core Debuggers - პროგრამების გაცილებით რთულია, ვიდრე Debuggers მომხმარებლის განაცხადების, და მე ვფიქრობ, საკმაოდ ნათელია, რატომ: მათ არ აქვთ დამხმარე სახით ოპერაციული სისტემა. ამ შემთხვევაში, ეს მათი კლიენტია, რადგან მისი, საბოლოო ჯამში, უნდა გამართოს.

ყველაზე ბირთვი Debuggers მოითხოვს ორი კომპიუტერი დაკავშირებული მათი მუშაობა, რომელიც დაკავშირებულია ნულოვანი მოდემი საკაბელო. ნულოვანი მოდემი არის ორი კომპიუტერის დაკავშირება პირდაპირ საკაბელო მათი COM ან LTP პორტების მეშვეობით. მეორე კომპიუტერი საჭიროა, რადგან პირველი (სად ვალის სისტემის დამონტაჟებისას), რომელიც დამონტაჟებულია, აქვს შეზღუდული შესაძლებლობების ხელმისაწვდომობა ტექნიკას და, შესაბამისად, მონაცემების მთლიანი გამომავალი არის მეორე კომპიუტერი.

Intel X86 არქიტექტურის თანამედროვე პროცესორებში არსებობს სპეციალური DEBUG რეგისტრაცია (და ძველ 368th- ში, ხოლო მათგან სულ უფრო ახალი მოდელები მხოლოდ რვა, ისინი მოხსენიებულია როგორც DR0-DR7). ეს რეესტრები საშუალებას აძლევს გამართვას, რათა დაადგინონ გამშვები პუნქტები მეხსიერების კითხვისა და ჩაწერისთვის, ისევე როგორც I / O პორტებზე. ზოგადად, ყველაფერი ასე გამოიყურება, და მე არ მგონია, რომ დეტალურად დეტალურად არის დაწერილი, რისთვისაც თითოეული DEBUG- ის რეესტრი პასუხისმგებელია, რაც ხელს უშლის შესვენების გზით და სხვა მსგავსი ინფორმაცია. უმჯობესია გითხრათ კერნელის სპეციფიკური წიგნების შესახებ Windows- ისთვის.

კარგად, პირველი, ეს არის debugger აშენდა კერნელის ოპერაციული სისტემა. ეს არის ყველა OS NT მმართველი, დაწყებული Windows 2000. ეს არის ნაწილი ntoskrnl.exe ფაილი, და თქვენ შეგიძლიათ ჩართოთ იგი შექმნის "/ debug" ვარიანტი ოპერაციული სისტემა boot.ini. ეს Debugger სჭირდება ნულოვანი მოდემი კავშირი და მეორე კომპიუტერი იგივე OS.

Microsoft- ის Windbg- ის კიდევ ერთი ბირთვი Debugger არის. მკაცრად რომ ვთქვათ, ეს არ არის ბირთვი დებატარული, მაგრამ ჰიბრიდული დესუგერი, რომელიც ასევე შეიძლება გამოყენებულ იქნას მომხმარებლის დონის აპლიკაციებზე. მან, Core- ში ჩაშენებული Debugger- ისგან განსხვავებით, გრაფიკული ჭურვი აქვს და ამიტომ უფრო ადვილია გამოიყენოს იგი. ეს debugger ასევე მხარს უჭერს სპეციალური გაგრძელება, რომელიც შეიძლება სასარგებლო იყოს, როდესაც გადაჭრის ზოგიერთი გამართვის ამოცანები. მაგრამ ეს ასევე მოითხოვს ორ კომპიუტერს ბირთვის გამართვას.

თუმცა, არსებობს Kernel Debugger, რომელიც შეიძლება debugging ერთი კომპიუტერი. ეს არის რბილი. ამავდროულად, რბილს შეუძლია გამართოს და აპლიკაციის პროგრამები. ამ Debugger- ის გამოყენებით მომხმარებლებისთვის გამართლებულია, მაგალითად, სისტემური ტაიმერისთვის რეალურ დროში სისტემების გამართვის შემთხვევაში. თუ ჩვეულებრივი Debugger- ის გამოყენებით დაფიქსირებთ, შედეგი შეიძლება იყოს არასწორი, მაშინაც კი, თუ პროგრამა სწორად არის ოპერაცია, და მაქსიმალურად შეაჩერებს პროგრამას და ტაიმერს. ეს სასარგებლოა, როდესაც მრავალფუნქციური განაცხადების გამართვისას სასარგებლოა. ყველა დროის, softice აქვს ძალიან კარგად, ძალიან კარგად განვითარებული საშუალებები outputting ინფორმაცია ყველა ნაკადების შესახებ სისტემაში, შესახებ სინქრონიზაციის ნაკადების მრავალჯერადი ხრახნიანი განაცხადების, ინფორმაცია შესახებ სახელური "AH ... ერთადერთი მინუს ამ debugger მისი სირთულეა განაცხადის პროგრამისტი. მაგრამ ძირითადი debuggers ეს არის მარტივი და ყველაზე ეფექტური.


ყველაზე ცნობისთვის

ახლა, რა თქმა უნდა, Windows განაცხადების გამართვის შესახებ საუბრის შესახებ ათი წლის წინ არ არის შესაბამისი. მთელი მსოფლიო დაინტერესდა ინტერნეტის საშუალებით და ნაცრისის მთავარი მომხმარებლები ნივას მეკობრეობაზე აღმოჩნდნენ. მიუხედავად ამისა, ეს ასე არ არის ცუდი. კომუნიკაცია Softice "OM, უდავოდ, ვითარდება პიროვნება ცოდნის თვალსაზრისით კომპიუტერზე, თუმცა, რა თქმა უნდა, თუ თქვენ დაუკავშირდით მხოლოდ debugger და არ დაუკავშირდეს ცოცხალი ადამიანები, ზოგიერთი გვერდითი მოვლენები შესაძლებელია. ამის შესახებ, მე ვფიქრობ ყველას გამოცნობა.

Debuggers არის ერთ ერთი ყველაზე თავისებური პროგრამული უზრუნველყოფა, მაგრამ თვალსაზრისით განვითარების, თუნდაც მომხმარებლის დონის debuggers საკმაოდ რთული. მაგრამ, მიუხედავად ამისა, თუ თქვენ გაქვთ სურვილი და დრო, რათა თქვენი საკუთარი Debugger- ის განვითარება, საოპერაციო სისტემებისა და პროგრამირების სფეროში თქვენი ცოდნა მნიშვნელოვნად გაიზრდება და, შესაბამისად, უაღრესად გადახდილი სამუშაოების შანსები გაიზრდება.

ასე რომ, თუ გსურთ შექმნათ თქვენი საკუთარი debugger, თქვენ ჯერ უნდა იცნობს მასალებს ამ თემას. ჩემი აზრით, დასაწყისში საუკეთესო შემწეობა იქნება ჯონ რობინსის წიგნი "Windows აპლიკაციების შესახებ". იგი უკვე ძველი, 2001 გამოცემაა, მაგრამ მასში მითითებული ინფორმაცია არის შესაბამისი და ახლა, რადგან მას აქვს საერთო, თუნდაც გარკვეულწილად ფუნდამენტური ბუნება. ამ წიგნში, არსებობს Windows- ის წერის მაგალითები Windows- ის წერილობით, გარდა ამისა, ეს იქნება სასარგებლო, თუ თქვენ ხართ პროგრამირების C ++ და უკეთესად გაერკვეს გამონაკლისების დამუშავება. სინამდვილეში, ეს წიგნი იყო, რომ მე გავიგე სტატიაში დესკერის შესახებ. თუ ეს წიგნი ვერ იმუშავებს (ყოველივე ამის შემდეგ, უკვე საკმაოდ ძველია), არსებობს რამდენიმე მისამართი, რომელიც შეგიძლიათ მოსახერხებელი იყოს. პირველი არის ეს: www.xakep.ru/post/19158/default.asp. ამ სტატიაში ჟურნალი "ჰაკერი" უფრო დეტალურად მოგვითხრობს კერნელი დებუგერების შესახებ, ვიდრე მე გავაკეთე, და გარდა ამისა, იგი შეიცავს კოდს მარტივი Debugger. და Kalashnikoff.ru/assembler/issues/016.htm, თქვენ შეგიძლიათ ისწავლონ, თუ როგორ დავწეროთ DOS Debugger. მაგრამ, რა თქმა უნდა, უმჯობესია წაკითხვის MSDN და ერთდროულად მოვძებნოთ გარკვეული debugger ღია წყაროს ტექსტები გაუმკლავდეთ მას. კარგად, რა თქმა უნდა, თუ თქვენ მოვიდა წერილობით debugger, მაშინ წარმატება თქვენ ამ მძიმე საკითხზე!

კერნელის დასადგენად, თქვენ უნდა დაუკავშირდეთ კომპიუტერს ნულოვანი მოდემის საკაბელო ან მოდემის კავშირით. Debug კომპიუტერი სახელწოდებით "მასპინძელი", და სახელი "სამიზნე" მიიღებს პრობლემას.

ორივე კომპიუტერი უნდა იმუშაოს Windows- ის იმავე ვერსიის გაშვებით და სამიზნე კომპიუტერის ხასიათის ფაილები უნდა დამონტაჟდეს მასპინძელ კომპიუტერზე. სიმბოლური ფაილები უზრუნველყოფილია Windows Installation CD- ზე მხარდაჭერით \\ debug დირექტორიაში.

ჩართვა გამართვის საშუალებას, თქვენ უნდა შეიტანოთ ცვლილებები boot.ini ფაილი სამიზნე კომპიუტერში.

1. შეცვალეთ boot.ini ფაილის ატრიბუტები:

attrib C: \\ boot.ini - r - s

2. რედაქტირება ეს ფაილი და Windows გაშვების სიმებიანი, დაამატოთ / გამართვის პარამეტრი (რათა უზრუნველყოს სისტემის ჩამოტვირთვის Kernel Debugger ოპერატიული მეხსიერება როდესაც ჩატვირთვის Windows). დამატებითი პარამეტრების არის / debugport, რომელიც იუწყება სისტემა, რომელიც COM პორტი უნდა იყოს გამოყენებული (default com2) და / Baudrate - მონაცემთა გადაცემის განაკვეთი (19200 baud- ის ნაგულისხმევი სიჩქარე, მაგრამ 9600). Მაგალითად:


Multi (0) დისკი (0) Rdisk (0) დანაყოფი (0) \\ Windows \u003d "Windows NT" / Debug / Debugport \u003d COM2 / Baudrate \u003d 9600

3. შენახვა ფაილი.

4. დააინსტალირეთ წინა boot.ini ფაილის ატრიბუტები:

aTTRIB C: \\ boot.ini + r + s

ამ მაგალითში, სამიზნე კომპიუტერი დაშვებულია COM2 პორტის მეშვეობით 9600 ბიტის სიჩქარით.

მასპინძელი კომპიუტერი უნდა იყოს კონფიგურირებული პარამეტრების გამოყენებით. გარდა ამისა, სიმბოლური ფაილი უნდა იყოს დამონტაჟებული. დააინსტალიროთ ისინი, გადადით \\ მხარდაჭერით \\ debug დირექტორია ინსტალაციის CD- ზე და შეიტანეთ შემდეგი ბრძანება:

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

Მაგალითად:

eXPNDSYM F: D: \\ სიმბოლოები

ინსტალაცია შეიძლება გარკვეული დრო დასჭირდეს. გახსოვდეთ, რომ თუ განახლებული პაკეტები დამონტაჟდა სამიზნე კომპიუტერზე, ეს პაკეტები სიმბოლოები უნდა იყოს დამონტაჟებული მასპინძელი კომპიუტერზე. განახლებების პაკეტების სიმბოლური ფაილები შეიძლება გადმოწერილი იყოს Microsoft- ის საიტზე.

მომდევნო ეტაპზე არის კონფიგურაცია გარემოს ცვლადებისგან, მაგალითად, მაგალითად, ცვლადები, რომლებიც მითითებულია სიმბოლური ფაილების ადგილმდებარეობის შესახებ და ა.შ. ქვემოთ მოყვანილია ამ ცვლადების აღწერა.

სისტემური ცვლადების აღწერა

ამ ცვლადების განმარტება შეიძლება განთავსდეს ბრძანებათა ფაილში, რათა თავიდან იქნას აცილებული შესაბამისი ბრძანებები თითოეულ Download:

echo off
Set _nt_debug_port \u003d com2
Set _nt_debug_baud_rate \u003d 9600
Set _nt_symbol_path \u003d D: \\ სიმბოლოები \\ i386
Set _nt_log_file_open \u003d D: \\ debug \\ logs \\ debug.log

ახლა თქვენ უნდა კოპირება Core Debug პროგრამული უზრუნველყოფა, რომელიც მდებარეობს მხარდაჭერით \\ Debug დირექტორიაში \\<процессор> სამონტაჟო CD (მხარდაჭერა \\ debug \\ I386). ყველაზე მარტივი გზა კოპირების მთელი დირექტორია მთლიანად, რადგან მას აქვს მცირე ზომის (დაახლოებით 2.5 მბ). I386 პლატფორმაზე, Debugger გამოიყენება, რომელიც მიეწოდება როგორც ფაილი i386kd.exe. Debugger იწყება I386KD ბრძანების გამოყენებით. შესვლის ბრძანება, დააჭირეთ გასაღები კომბინაცია და დაველოდოთ KD\u003e ბრძანების ხაზის მოწვევას.

დაყოფა