Меню
безкоштовно
Головна  /  Мультимедіа / Установка Debugging Tools for Windows. Робота з командним рядком Windows, Програма Debug і її використання Завантажити програму debug exe 64 біт

Установка Debugging Tools for Windows. Робота з командним рядком Windows, Програма Debug і її використання Завантажити програму debug exe 64 біт

Debug.exe - програма відладчик, яку використовують для перевірки і налагодження виконуваних файлів.

Використовувалася при операційній системі MS-DOS . Під пізніші версії операційних систем

працює через емулятор MS-DOS і має обмежені можливості. Викликається через командну строку

DEBUG [[диск:] [маршрут] ім'я_файлу [параметри]].

Наприклад: DEBUG C: \\ ... \\ My.com

Дана програма є консольним додатком і призначена для створення або зміни коду файлів. За допомогою неї можна створювати прості додаток під MS-DOS і відстежувати їх роботу. Даний відладчик знаходиться на найнижчому рівні компіляторів assembler. Але володіє непоганими можливостями, такими як перегляд і зміна пам'яті, отримання стану регістрів.

команди debug.exe

Правила набору команд debug.exe:

· В debug.exe не відрізняється регістр букв.

· Прогалини в командах використовується тільки для поділу параметрів.

· Введені числа повинні бути в шістнадцятковій системі числення, причому без завершальній літери h.

· Сегмент і зміщення записуються з використанням двокрапки, в форматі сегмент: зсув, наприклад, CS: 3C1 (зміщення 3C1h в сегменті коду) або 40:17 (зміщення 17h в сегменті, адреса початку якого - 40h).

Після завантаження відладчика на екрані з'явиться запрошення, що виглядає у вигляді дефіса. регістри CS, DS, ES, SS в цей момент ініціалізовані адресою 256-байтного префікса сегмента програми, а робоча область в пам'яті буде починатися з адреси цього префікса + 100h. команди debug.exe вводяться відразу після запрошення на місці, яке зазначено курсором. Кожна команда складається з ідентифікатора і параметрів, ідентифікатор складається з однієї літери.

Таблиця 1. Коротка таблиця всіх команд debug.exe

команда опис формат
A (Assemble) Транслювання команд асемблера в машинний код; адреса за замовчуванням - CS: 0100h. A [<адрес_начала_кода>]
C (Compare) Порівняння вмісту двох областей пам'яті; за замовчуванням використовується DS. У команді вказується або довжина ділянок, або діапазон адрес. C<начальный_адрес_1> L<длина> <начальный_адрес_2> C<начальный_адрес_1> <конечный_адрес_1> <начальный_адрес_2>
D (Display / Dump) Висновок вмісту області пам'яті в шістнадцятковому і ASCII-форматах. За замовчуванням використовується DS; можна вказувати довжину або діапазон. D [<начальный_адрес> ] D [начальний_адрес конечний_адрес]
E (Enter) Введення в пам'ять дані або інструкції машинного коду; за замовчуванням використовується DS. E [<адрес> [<инструкции/данные>]]
F (Fill) Заповнення області пам'яті даними зі списку; за замовчуванням використовується DS. Використовувати можна як довжину, так і діапазон. F<начальный_адрес_1> L<длина> "<данные>"F<начальный_адрес> <конечный_адрес> "<данные>"
G (Go) Виконання налагодженої програми на машинній мові до зазначеної точки зупину; за замовчуванням використовується CS. При цьому переконайтеся, що IP містить коректну адресу. G [\u003d<начальный_адрес>] <адрес_останова> [<адрес_останова> ...]
H (Hexadecimal) Обчислення суми і різниці двох шістнадцятирічних величин. H<величина_1> <величина_2>
I (Input) Зчитування і висновок одного байта з порту. I<адрес_порта>
L (Load) Завантаження файлу або даних із секторів диска в пам'ять; за замовчуванням - CS: 100h. Файл можна вказати за допомогою команди N або аргументу при запуску debug.exe. L [<адрес_в_памяти_для_загрузки>] L [<адрес_в_памяти_для_загрузки> [<номер_диска> <начальный_сектор> <количество_секторов>]]
M (Move) Копіювання вмісту осередків пам'яті; за замовчуванням використовується DS. Можна вказувати як довжину, так і діапазон. M<начальный_адрес> L<длина> <адрес_назначения> M<начальный_адрес> <конечный_адрес> <адрес_назначения>
N (Name) Вказівка \u200b\u200bімені файлу для команд L і W. N<имя_файла>
O (Output) Відсилання байта в порт. O<адрес_порта> <байт>
P (Proceed) Виконання інструкцій CALL, LOOP, INT або повторюваною строкової інструкції з префіксами REPnn, переходячи до наступної інструкції. P [\u003d<адрес_начала>] [<количество_инструкций>]
Q (Quit) Завершення роботи debug.exe. Q
R (Register) Висновок вмісту регістрів і наступної інструкції. R<имя_регистра>
S (Search) Пошук в пам'яті символів зі списку; за замовчуванням використовується DS. Можна вказувати як довжину, так і діапазон. S<начальный_адрес> L<длина> "<данные>"S<начальный_адрес> <конечный_адрес> "<данные>"
T (Trace) Покрокове виконання програми. Як і в команді P, за замовчуванням використовується пара CS: IP. Зауважу, що для виконання переривань краще користуватися командою P. T [\u003d<адрес_начала>] [<количество_выполняемых_команд>]
U (Unassemble) Дизасемблювання машинного коду; за замовчуванням використовується пара CS: IP. На жаль, debug.exe некоректно дізассемблірует специфічні команди процесорів 80286+, хоча вони все одно виконуються коректно. U [<начальный_адрес>] U [<начальный_адрес конечный_адрес>]
W (Write) Запис файлу з debug.exe; необхідно обов'язково задати ім'я файлу командою N, якщо він не був завантажений. А програми записуються тільки у вигляді файлов.COM! W [<адрес> [<номер_диска> <начальный_сектор> <количество_секторов>]]


Перегляд областей пам'яті

Розглянемо детально роботу команди D, Що дозволяє переглядати вміст окремих областей пам'яті. Цей приклад використовує команду D для перегляду області пам'яті, починаючи з 0159: 0240:

Тут на запит перегляду ділянки пам'яті ми отримали вісім рядків, в яких зазначено вміст вибраної області пам'яті. Кожен рядок складається з трьох частин:

· Адреса першого зліва показаного байта в форматі сегмент: зміщення.

· Шістнадцяткове уявлення параграфа (16 байт), що починається з вказаного на початку рядка байта.

· Символи цього ж параграфа в ASCII-форматі.

Адресу, вказану в рядку, відноситься виключно до першого байту в параграфі, а адреси наступних байтів слід обчислювати самостійно. Шістнадцяткове подання містить по два знака в кожному байті, а самі байти розділені пробілами для полегшення читання. Крім того, слід зазначити, що восьмий і дев'ятий байти розділені дефісом, розділяючи тим самим параграф на дві частини і полегшуючи обчислення адрес байтів в параграфі.

Корисні прийоми з командою D

Перевірка паралельних і послідовних портів

Перші 16 байт області даних BIOS містять адреси паралельних і послідовних портів. Тому за допомогою такої команди можна перевірити ці порти:

Перші виведені вісім байтів вказують на адреси послідовних портів COM1-COM4. Наступні 8 байтів вказують на адреси паралельних портів LPT1-LPT4. Наприклад, якщо на вашому комп'ютері є один паралельний порт, то перші два байта будуть, швидше за все, такими: 7803. Адреса порту записується в зверненої послідовності, тобто 0378.

Перевірка обладнання

Перші два байта, що розташовуються в BIOS за адресою 410h, містять інформацію про встановлений в системі обладнанні. Знаходимо ці байти командою:

Припустимо, що перші два байта виявляться 23 44. Розшифруємо ці байти для отримання інформації про встановлені пристрої. Для цього звернемо ці байти (44 23), потім переведемо їх в двійкову систему числення. отримуємо:

значення біта
позиція біта

Що означають ці біти? Продовжуємо розшифровувати:

Перевірка стану регістра клавіатури

В області даних BIOS за адресою 417h знаходиться перший байт, який зберігає стан регістра клавіатури. вимикаємо Num Lock і Caps Lock , Потім набираємо команду:

Перший байт буде дорівнює 00. Включивши Num Lock і Caps Lock, Знову виконуємо команду. Тепер перший байт повинен дорівнювати 60. Дослідним шляхом встановлено, що при включеному Num Lock перший байт дорівнює 20, а при Caps Lock - 40.

Перевірка стану відеосистеми

За адресою 449h в BIOS знаходиться перша область відеоданих. Для перевірки набираємо:

Перший байт показує поточний режим відео (наприклад, 03 - кольоровий), а другий - число стовпців (наприклад, 50 - режим з 80 стовпцями). Число рядків можна знайти за адресою 484h (40:84).

Перевірка копірайту BIOS і серійного номера

Попередження про авторське право на BIOS вбудовані в ROM BIOS за адресою FE00: 0. Рядок з копірайтом можна легко знайти в ASCII-послідовності, а серійний номер - у вигляді шістнадцятирічного числа. Хоча, рядок із зазначенням авторських прав може бути довгою і не уміщатися в виведену область пам'яті. В такому випадку слід просто ввести ще раз D.

Перевірка дати произвоства BIOS

Ця дата також записана в ROM BIOS починаючи з адреси FFFF: 5. Після виконання відповідної команди в ASCII-послідовності буде знаходитися ця дата, записана в форматі мм / дд / рр.

Безпосереднє введення програми в пам'ять за допомогою debug.exe

debug.exe дозволяє вводити програму безпосередньо в пам'ять машини, а потім стежити і управляти е виконанням. Ми будемо вводити програму в машинних кодах, використовуючи команду E. При цьому будьте пильні - введення помилкових даних за помилковою адресою загрожує непередбачуваними наслідками! Хоча до серйозних проблем в системі це навряд чи призведе, але втратити всі дані, введені в debug.exe, Можна запросто. Програма, яку необхідно ввести, використовує дані, закладені безпосередньо в тілі інструкцій. Далі показаний лістинг програми на Асемблері, в коментарях вказані аналоги команд мови в машинних кодах, а також пояснення кожної команди. Зауважте, що в числах немає символу h, Оскільки, як було сказано вище, debug.exe розуміє тільки числа в шістнадцятковій системі.

MOV AX, 0123; код B82301: заносимо значення 0123h в AX

ADD AX, 0025; код 052500: додаємо 0225h до значення AX

MOV BX, AX; код 8BD8: заносимо значення AX в BX

ADD BX, AX; код 03D8: додаємо значення AX до BX

MOV CX, BX; код 8BCB: заносимо значення BX в CX

SUB CX, AX; код 2BC8: забираємо значення AX з CX

SUB AX, AX; код 2BC0: очищаємо AX

JMP 100; код EBEE: переходимо до початку програми

Як можна помітити, кожна машинна інструкція має довжину від 1 до 3 байтів. Перший байт вказує операцію, наступні - її операнди. Виконання програми починається відповідно з першої інструкції і послідовно проходить через всі інструкції одну за одною. Тепер можна ввести програму в пам'ять. Розділимо машинний код на три частини по шість байт і введемо кожну, використовуючи команду E і починаючи з адреси CS: 100.

Тепер, коли програма введена в пам'ять, спробуємо керувати її виконанням. Для початку перевіримо поточний стан регістрів і прапорів, для цього вводимо команду R. Отладчик виведе вміст регістрів в шістнадцятковій формі; на різних машинах вміст регістрів може відрізнятися.

Отже, як можна бачити, debug.exe ініціалізувати сегменти DS, ES, SS, CS одним і тим же адресою. регістр IP містить 0100 , Вказуючи на те, що інструкції виконуються зі зміщення 100h щодо CS (А ми, вводячи інструкції в пам'ять, як раз вказали цю адресу).

Тут же зазначені і значення прапорів переповнення, напрямки, переривання, знака, нуля, додаткового перенесення, парності і перенесення:

Після регістрів і стану прапорів debug.exe виводить інформацію про першу інструкції, яка буде виконуватися:

· Адреса інструкції, в нашому випадку це 0B12: 0100, де 0B12 - адреса сегмента коду.

· Машинний код, що відповідає цій інструкції (B82301).

· Власне інструкція, записана на асемблері (MOV AX, 0123).

Тепер, після аналізу вмісту регістрів і прапорів, давайте перейдемо до виконання програми. Виконувати програму ми будемо крок за кроком, використовуючи команду T. Використавши в перший раз команду T, Ми виконуємо інструкцію MOV. Тут машинний код операнда інструкції - 2301 . операція поміщає 23 в AL (Молодша половина AX), А 01 - в AH (Старша). Після цього debug.exe знову виводить інформацію про регістрах:

тепер AX містить 0123h, IP0103h (Отже, довжина виконаної інструкції: 0103h - 0100h = 3 байта), а в якості наступної інструкції вказана операція ADD. Так, раз по раз виконуючи команду T, Ми дійдемо до останньої інструкції JMP 100. Вона встановить регістр IP в 100h, і debug.exe повернеться до початку програми. Повертаючись до початку програми, слід зауважити, що в DS, ES, SS і CS міститься один і той же адресу. Справа в тому що debug.exe розглядає введені програми виключно як програми .COM. А в програмах .COM, на відміну від .EXE, Стек, код і дані зберігаються в одному сегменті.

Ассемблирование і дизасемблювання

У минулому прикладі ми вводили програму в машинних кодах, однак, debug.exe цілком здатний розуміти інструкції, записані на асемблері. Для роботи з такими програмами в debug.exe використовуються команди A і U.

команда A запитує інструкції на асемблері і перетворює їх в машинний код. Для початку инициализируем початкова адреса для введення інструкцій (100h):

Отладчик виведе адресу сегмента коду і зміщення (наприклад, 13F2: 0100). Тепер ми повинні ввести такі інструкції на асемблері в пам'ять, після кожного рядка натискаючи Enter:

Після введення останньої інструкції натискаємо Enter двічі, щоб вказати отладчику, що ми закінчили вводити текст програми. Тепер програму можна запускати, використовуючи команди R для перегляду регістрів і T для трасування. Зауважу, що в своїх програмах при наявності інструкцій INT їх слід обробляти не командою T, А командою P, Яка обробляє всі переривання відразу.

Перейдемо до процедури дизассемблирования, а в якості прикладу візьмемо тільки що введену програму. Використовуємо адреси першої і останньої інструкцій для вказівки діапазону, який ми збираємося аналізувати код, тобто 100h і 107h.

Після виконання цієї команди debug.exe виведе інструкції, що знаходяться в зазначеному діапазоні, на асемблері, в машинних кодах, а також адреса кожної інструкції:

Збереження програми на диску

Спочатку задається ім'я файлу:

Потім в регістр СХ необхідно помістити розмір програми в байтах. Він буде дорівнює різниці кінцевого і початкового зсувів. Тепер залишається тільки здійснити запис на диск командою W і в результаті побачити записане кількість байтів. У підсумку ми отримуємо програму, готову до виконання.

Вихід здійснюється командою q. приклад:

0B3B: 0100 mov ax, 1234

0B3B: 0103 mov ah, 4c

0B3B: 0105 int 21

0B3B: 0100 B83412 MOV AX, +1234

0B3B: 0103 B44C MOV AH, 4C

0B3B: 0105 CD21 INT 21

AX \u003d 0000 BX \u003d 0000 CX \u003d 0007 DX \u003d 0000 SP \u003d FFEE BP \u003d 0000 SI \u003d 0000 DI \u003d 0000

DS \u003d 0B3B ES \u003d 0B3B SS \u003d 0B3B CS \u003d 0B3B IP \u003d 0100 NV UP EI PL NZ NA PO NC

0B3B: 0100 B83412 MOV AX, +1234

Запис 00007 байт

Для виконання цієї лабораторної роботи знадобиться кілька команд асемблера:

MOV AH,<шестнадцатиричное число> - запис в регістр AH числа 02 для вказівки системної функції - висновок символу на екран;

MOV DL,<шестнадцатиричное число> - запис в регістр DL коду символу;

INT 21 - основне переривання DOS (процедура), що реалізує багато різних функцій; номер функції записується попередньо в регістр AH; для роздруківки символу на екрані - в регістрі AH функція 02, при цьому в DL записують попередньо код символу.

INT 20 - переривання DOS, що здійснює вихід з програми (із.COM-програми).

приклад:

Вивести символ "*" на екран.

mov AH, 02; системна функція 02 - висновок символу на екран

mov DL, 2A; ASCII-код зірочки

int 21h; переривання для виведення "*"

int 20h; вихід з програми

практичне завдання

мета

Знайомство з отладчиком debug.exe. Отримання практичних навичок роботи з даною програмою.

устаткування:

Персональний комп'ютер під управлінням операційної системи Windows.

Програмне забезпечення:

Програма Debug.

Питання до допуску

1. Для чого призначена програма Debug?

2. Як запустити цю програму?

3. Яким чином вводяться команди в Debug?

4. Що таке ідентифікатор?

5. Як проводиться введення програми в Debug?

завдання

· Вивчити теоретичний матеріал.

· Виконати описані по ходу тексту команди.

· Знайдіть суму і різницю 2-х чисел: 1-е число - номер в групі (перекладене в шестнадцатиричную форму), 2-е - число, протилежне номеру першої літери прізвища в алфавіті ( від'ємне число в додатковому коді). Суму і різницю переведіть в десяткову форму.

· Перегляньте вміст регістрів мікропроцесора, а також прапорів і випишіть їх в протокол. Яку функцію виконує кожен з регістрів? .

· Запишіть в регістр AX перше число (із завдання 3), а в регістр BX - друге (з завдання 3). Введіть в оперативну пам'ять в сегмент коду (зміщення 100) машинну команду складання регістрів AX і BX. Перегляньте на екрані її асемблерну форму. Виконайте цю команду, результат переведіть в десяткову форму.

· Введіть у оперативну пам'ять в сегмент коду (зміщення 100) набір команд асемблера для роздруківки символу на екрані - першої літери вашого прізвища. Перевірте програму в DEBUG. Потім запишіть її на диск в віде.COM-файлу. Чому дорівнює розмір програми? Запустіть її на виконання з DOS.

· Всі дії опишіть в звіті.

1. Назва роботи.

2. Мета роботи.

3. Прилади і обладнання.

4. Короткі теоретичні відомості.

5. Опис виконаних дій.

6. Текст створеної програми.

7. Висновки.

Контрольні питання

1. Яка команда виробляє введення в пам'ять дані або інструкції машинного коду?

2. Як порівняти вміст двох областей пам'яті?

3. Яким чином заповнити область пам'яті даними зі списку?

4. Яка команда виробляє виконання налагодженої програми на машинній мові?

5. Яка команда записує файл з Debug?

6. Як проводиться ассемблирование і дизасемблювання?

Android Debug Bridge (adb) - це консольна програма, Яка дозволить вам здійснювати налагодження мобільних пристроїв на Android, а також емуляторів.

опис

Ця утиліта значно спрощує установку і дебаггінг додатків, а також надає доступ до оболонки Unix. Останню можна використовувати для запуску необхідних команд на пристрої. Крім іншого, програма може бути використана для розблокування смартфона з увімкненим режимом налагодження. Варто, при цьому, відзначити, що Android Debug Bridge підтримує роботу з будь-якими Android-пристроями, за умови, що необхідний функціонал ні заблокований виробником.

Програма включає в себе три компоненти:

  • Клієнт. Працює на ПК розробника, відправляє команди. Для виклику клієнта можна використовувати відповідну команду в терміналі.
  • Демон (adbd). Виконує команди на пристрої. Працює у фоновому режимі на кожному пристрої.
  • Сервер. Управляє взаємодією між клієнтом і демоном. Працює у фоновому режимі на комп'ютері розробника.

Можливості ADB:

  • Перегляд списку підключених і підтримуваних пристроїв.
  • Перегляд логів.
  • Копіювання і перенесення даних і файлів між пристроями.
  • Установка і видалення програм.
  • Очищення і перезапис розділу data.
  • А також багато іншого.

З нашого сайту ви можете завантажити Android Debug Bridge абсолютно безкоштовно, без реєстрації та СМС.

Скріншоти

Драйвер це за своєю суттю сполучна ланка між операційною системою, тобто програмним забезпеченням і залізом, тобто фізичними пристроями, таким як відеокарти, принтери, процесори і т.д. В операційній системі можуть бути закладені базові драйвера для найнеобхідніших пристроїв - мишка, клавіатура, але для всього іншого будуть потрібні свіжі драйвера.

Як встановити драйвер?

1.Самое простий спосіб, якщо є інсталяційний файл, То необхідно просто запустити його і слідувати інструкціям установника.
2.Якщо в наявності немає установника, а присутні тільки файли з розширеннями * .inf, * .dll, * .vxt, *. Sys, * .drv., То алгоритм дій повинен приблизно наступний:

a) Для початку треба на робочому столі вибрати значок ( Мій комп'ютер) І натиснути по ньому правою кнопкою миші, у випадаючому меню вибрати ( властивості).

b) Тепер переходимо на вкладку ( устаткування) І натискає на кнопку ( Диспетчер пристроїв).

c) Тепер необхідно вибрати пристрій для якого буде встановлюватися / оновлюватися драйвер. На рядку з пристроєм треба натиснути правою кнопкою миші і в випадаючому меню вибрати ( властивості), Або можна просто двічі по ньому клацнути, щоб перейти в потрібні налаштування.


d) Переходимо на вкладку ( драйвер), Вибираємо кнопку ( оновити).

e) У діалоговому вікні вибираємо пункт ( Ні, не цього разу) І переходимо ( далі).

f) На цьому етапі є два варіант. Можна спробувати встановити драйвера в автоматичному режимі, Тоді ОС сама спробує знайти підходящі пристрою драйвера і встановити їх, для цього вибираємо ( автоматична установка (Рекомендується)), Якщо спроба завершиться невдало, то треба переходити до другого пункту ( Установка з вказаного місця) І вибираємо ( далі).


g) Цей пункт меню має на увазі вибір між пошуком драйвера на змінних носіях і варіантом вказати папку з драйвером самостійно. Тому якщо в наявності є диск з драйверами, то треба вставте диск в CD-rom і вибрати варіант ( Пошук на змінних носіях (дискетах, компакт-дисках ..)) І перейти ( далі).

Якщо драйвер знайдений і скачав в інтернеті самостійно, то треба вказати в ручну шлях до папки в якій знаходяться інсталяційний дані для драйвера наступним чином. Вибираємо пункт ( Включити наступне місце пошуку:) І переходимо в ( огляд), Тепер зі списку вибираємо папку з драйвером і натискаємо на кнопку ( ОК). Тепер сміливо переходимо ( далі), Якщо все зроблено правильно, то почнеться установка необхідного драйвера.

Debugging Tools for Windows - Інструменти налагодження коду операційних систем Windows. Являють собою набір вільно розповсюджуваних програм від Microsoft, призначених для налагодження коду призначеного для користувача режиму і режиму ядра: додатків, драйверів, служб, модулів ядра. До складу інструментарію входять отладчики консольного і GUI- режимів, утиліти для роботи з символами, файлами, процесами, утиліти для забезпечення вилученого налагодження. Інструментарій містить в собі утиліти, за допомогою яких можна знаходити причини збоїв в різних компонентах системи. Debugging Tools for Windows з певного моменту недоступні для скачування в формі автономного дистрибутива і входять до складу Windows SDK (Windows Software Development Kit). набір інструментальних засобів Windows SDK, в свою чергу, доступний у вигляді частини програми підписки MSDN або ж може бути вільно завантажений в якості окремого дистрибутива з сайту msdn.microsoft.com. За заявою розробників, остання і сама актуальна версія Debugging Tools for Windows міститься саме в Windows SDK.

Debugging Tools for Windows оновлюються і викладаються в публічний доступ досить часто і процес цей ніяк не залежить від випуску операційних систем. Тому, періодично перевіряйте наявність нових версій.

Давайте тепер подивимося, що ж, зокрема, дозволяють нам кошти Debugging Tools for Microsoft Windows:

  • налагоджувати локальні додатки, Служби (сервіси), драйвера і ядро;
  • Налагоджувати по мережі віддалені програми, служби (сервіси), драйвера і ядро;
  • Налагоджувати інші програми, які в режимі реального часу;
  • Аналізувати файли дампов пам'яті додатків, ядра і системи в цілому;
  • Працювати з системами на базі архітектур x86 / x64 / Itanium;
  • Налагоджувати програми для користувача режиму і режиму ядра;

В наявності є таке версії Debugging Tools for Windows: 32-bit x86, Intel Itanium, 64-bit x64. Нам будуть потрібні дві з них: x86 або x64.

Доступні кілька способів установки Debugging Tools for Windows, в цій же статті ми будемо розглядати лише основні з них:

  • Установка за допомогою web-інсталятора.
  • Установка Debugging Tools for Windows з ISO-образу Windows SDK.
  • Установка Debugging Tools for Windows безпосередньо з пакетів dbg_amd64.msi /dbg_x86.msi.

Залишається незрозумілим ще в тій чи момент, навіщо мені інсталювати оцінний інструментарій на комп'ютер? Найчастіше адже стикаєшся з ситуацією, коли втручання в робочу середу вкрай небажано! І вже тим більше що інсталяція нового продукту, тобто внесення змін до реєстру / файли системи, може бути абсолютно неприпустима. Прикладами можуть служити критично-важливі сервера. Чому б розробникам непродумані варіант з Портабельная (portable) версіями додатків, що не вимагають установки?
Від версії до версії процес установки пакета Debugging Tools for Windows зазнає деякі зміни. Давайте тепер перейдемо безпосередньо до процесу установки і розглянемо способи, якими можна встановити інструментарій.

Установка Debugging Tools for Windows за допомогою web-інсталятора

Переходимо на сторінку Архів Windows SDK і знаходимо розділ під назвою Windows 10 і нижче пункт "Windows 10 SDK (10586) і емулятор пристрою з Windows 10 Mobile (Майкрософт) (версія 10586.11)".

Клацаємо по пункту ВСТАНОВИТИ ПАКЕТ SDK. Після клацання завантажуємо і запускаємо файл sdksetup.exe, який і ініціює процес онлайн-установки Windows SDK. На початковому етапі інсталятор перевірить наявність у системі встановленого пакета.NET Framework останньої версіїнаразі це 4.5). Якщо пакет відсутній, що буде запропонована установка і після закінчення виконана перезавантаження станції. Відразу після перезавантаження, на етапі авторизації користувача, стартує процес інсталяції вже безпосередньо Windows SDK.

Найчастіше, при виборі всіх без винятку компонентів пакета, в процесі установки можуть виникнути помилки. В цьому випадку рекомендується встановлювати компоненти вибірково, мінімально необхідний набір.

Після завершення інсталяції Debugging Tools for Windows розташування файлів налагодження при даному методі інсталяції у нас буде наступним:

  • 64-бітові версії: C: \\ Program Files (x86) \\ Windows Kits \\ x.x \\ Debuggers \\ x64
  • 32-бітові версії: C: \\ Program Files (x86) \\ Windows Kits \\ x.x \\ Debuggers \\ x86

* Де x.x - певна версія комплекту розробки;
Помітили, що версії 8 і вище, шляхи інсталяції помітно відрізняються від класичних для всіх попередніх версій засобів налагодження?

величезним плюсом даного способу установки Debigging Tools for Windows є установка версій налагоджувальних засобів відразу всіх архітектур.

Установка Debugging Tools for Windows з ISO-образу Windows SDK

Даний метод має на увазі установку Debugging Tools for Windows з використанням повного інсталяційного образу Windows SDK (Software Developers Kit). До певного часу, скачати образ ISO для відповідної системи можна було на сторінці Архів Windows SDK. Однак, в даний момент, отримати ISO-образ SDK можна через запуск web-інсталятора sdksetup.exe, і вибору пункту Download the Windows Software Development Kit в стартовому вікні інсталятора:

Як було з'ясовано, попередній метод установки за допомогою веб-інсталятора досить примхливий і часто завершується помилкою. На чистих системах встановлюється без проблем, однак на досить уже навантажених виникають численні проблеми. Якщо у Вас саме такий випадок, то скористайтеся даним методом.

Відповідно, на сторінці необхідно підібрати необхідний дистрибутив, для мене (та й думаю для багатьох) в даний момент це " пакет Windows SDK для Windows 7 і.NET Framework 4 "і трохи нижче натиснути на посилання" Отримати ISO-образ DVD-диска ".

При роботі з сайтом msdn.microsoft.com раджу скористатися браузером Internet Explorer, оскільки були помічені випадки непрацездатності конкуруючих продуктів!

Відповідно, необхідно вибрати виключно за потребою. Зазвичай розрядність Debugging Tools for Windows збігається з розрядністю системи. У мене досліджувані системи, в основному, 64-бітові, тому я в більшості випадків скачую образ для 64-бітної системи GRMSDKX_EN_DVD.iso.
Потім, після скачування образу, нам необхідно з наявними ISO-образом якось працювати. Традиційним способом є, звичайно ж, запис компакт-диска, але ж це досить довгий і іноді витратний метод. Пропоную скористатися безкоштовними утилітами по створенню в системі віртуальних дискових пристроїв. Особисто я для цієї мети краще користуватися програмою DEAMON Tools Lite. У кого-то можуть бути і інші переваги, більш прямі або легковагі утиліти, на смак і колір, як говориться .. Після інсталяції DAEMON Tools Lite, я просто клацаю два рази на файл образу GRMSDKX_EN_DVD.iso і в системі у мене з'являється новий віртуальний компакт диск:

вже потім подвійним клацанням активують автозагрузку і запускаю інсталяцію Windows SDK:

Коли підходить черга вибирати встановлюються компоненти зі списку, то відключаємо абсолютно все опції крім позначених на скріншоті. Це допоможе уникнути непотрібних нам зараз помилок.


Все саме так, на скріншоті відзначено дві опції: "Windows Performance Toolkit" і "Debugging Tools for Windows". Вибирайте обидві, тому як Windows Performance Toolkit Вам неодмінно стане в нагоді в роботі! Далі, після натискання кнопки "Next" інсталяція триває в звичайному режимі. І в кінці ви побачите напис "Installation Complete".
Після закінчення інсталяції робочі директорії комплекту Debugging Tools for Windows будуть наступними:

  • Для версії x86:
  • Для версії x64:

На цьому установку Debugging Tools for Windows можна вважати закінченою.

Установка Debugging Tools for Windows через.msi файл

У разі виникнення проблем при інсталяції Debugging Tools for Windows двома попередніми способами, у нас в запасі залишається ще один, самий надійний і перевірений часом, виручав, так би мовити, не раз. Колись, до інтеграції в Windows SDK, Debugging Tools for Windows були доступні у вигляді окремого інсталлятора.msi, який і зараз можна знайти, проте вже в надрах дистрибутива Windows SDK. Оскільки у нас на руках є вже ISO-образ Windows SDK, то ми можемо не монтувати його в систему, а просто відкрити за допомогою всім вже добре знайомого архиватора WinRAR, Ну або будь-якого іншого продукту, що працює з вмістом ISO-дисків.

Після відкриття способу нам необхідно пройти в каталог "Setup", що знаходиться в корені і далі вибрати одну з директорій:

  • Для установки 64-бітової версії: \\ Setup \\ WinSDKDebuggingTools_amd64 і розпакувати з цього каталогу файл dbg_amd64.msi.
  • Для встановлення 32-бітової версії: \\ Setup \\ WinSDKDebuggingTools і розпакувати з цього каталогу файл dbg_x86.msi.

Після закінчення інсталяції робочі директорії комплекту Debugging Tools for Windows будуть наступними:

  • Для версії x86: C: \\ Program Files (x86) \\ Debugging Tools for Windows (x86)
  • Для версії x64: C: \\ Program Files \\ Debugging Tools for Windows (x64)

На цьому установку Debugging Tools for Windows можна вважати виконаною.

додаткові відомості

Не знаю з чим це пов'язано, можливо з моєю неуважністю, але після інсталяції Отладочная коштів для Windows, інсталятор не описує в системну змінну шляху Path шлях до каталогу з отладчиком. Це накладає певні обмеження на запуск різних налагоджувальних завдань безпосередньо з консолі. Тому, в разі відсутності шляху, я самостійно прописую у вікні змінні середовища шлях до налагоджувальний засобів:

  • C: \\ Program Files (x86) \\ Windows Kits \\ 10 \\ Debuggers \\ x86
  • C: \\ Program Files (x86) \\ Windows Kits \\ 10 \\ Debuggers \\ x64

* У вашому випадку шляху можуть відрізнятися як по причині використання ОС інший розрядності, так і через використання SDK іншою версією.

Утиліти пакета Debugging Tools for Windows можуть працювати в якості переносних додатків, досить просто скопіювати з робочої системи каталог Microsoft Windows Performance Toolkit і використовувати його в якості портабельной версії на робочому сервері. Але не забувайте враховувати розрядність системи !! Якщо Ви навіть зробили повну інсталяцію пакета на критично-важливу систему, то працювати можна починати прямо після інсталяції, перезавантаження не потрібне.

Склад Debugging Tools for Windows

І тепер наостанок наведемо склад Debugging Tools for Windows:

файл призначення
adplus.doc Документація по утиліті ADPlus.
adplus.exe Консольний додаток, яке автоматизує роботу відладчика cdb для створення дампов, лог-файлів для одного або декількох процесів.
agestore.exe Утиліта для видалення застарілих файлів зі сховища, використовуваного сервером символів або сервером початкових кодів.
breakin.exe Утиліта, яка дозволяє посилати процесам комбінацію призначеного для користувача зупинки (break), аналогічна натисканню CTRL + C.
cdb.exe Консольний відладчик користувацького режиму.
convertstore.exe Утиліта для конвертації символів з рівня 2-tier в рівень 3-tier.
dbengprx.exe Ріпітер (проксі сервер) для віддаленої налагодження.
dbgrpc.exe Утиліта для відображення інформації про стан виклику RPC.
dbgsrv.exe Процес сервера, який використовується для віддаленої налагодження.
dbh.exe Утиліта для виведення інформації про вміст файлу символів.
dumpchk.exe Утиліта перевірки дампа. утиліта для швидкої перевірки дамп-файлу.
dumpexam.exe Утиліта для аналізу дампа пам'яті. Результат виводиться в% SystemRoot% \\ MEMORY.TXT.
gflags.exe Редактор глобальних прапорів системи. Утиліта управляє ключами реєстру та іншими настройками.
i386kd.exe Обгортка до kd. Коли то так називався kd для систем на базі Windows NT / 2000 для x86 машин? Ймовірно, залишено з міркувань сумісності.
ia64kd.exe Обгортка до kd. Коли то так називався kd для систем на базі Windows NT / 2000 для ia64 машин? Ймовірно, залишено з міркувань сумісності.
kd.exe Консольний відладчик режиму ядра.
kdbgctrl.exe Інструмент управління налагодження ядра. Утиліта для управління і конфігурації kernel debugging connection.
kdsrv.exe Сервер сполук для KD. Утиліта представляє собою невелике додатків, яке запускається і чекає віддалених з'єднань. kd запускається на клієнті і приєднується до цього сервера для віддаленої налагодження. І сервер і клієнт повинні бути з однієї збірки Debugging Tools.
kill.exe Утиліта для завершення процесів.
list.exe Утиліта для виведення вмісту файлу на екран. У комплекті ця мініатюрна утиліта виявилася з однією метою - перегляд великих текстових або лог-файлів. Займає небагато місця в пам'яті, оскільки вантажить текст частинами.
logger.exe Мініатюрний відладчик, який може працювати тільки з одним процесом. Утиліта впроваджує logexts.dll в простір процесу, яка записує всі виклики функцій і інші дії досліджуваної програми.
logviewer.exe Утиліта для перегляду логів, записаних отладчиком logger.exe.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Отладчик, ідентичний cdb, за винятком того, що він створює текстове вікно при запуску. Як і cdb, ntsd здатний налагоджувати і консольні додатки і графічні додатки.
pdbcopy.exe Утиліта для видалення приватних символів з файлу символів, контролю за публічними символами, включеними в файл символів.
remote.exe Утиліта для віддаленої налагодження і віддаленого контролю будь-якого консольного відладчика KD, CDB і NTSD. Дозволяє запускати всі ці консольні отладчики віддалено.
rtlist.exe Віддалений переглядач завдань. Утиліта використовується для виведення списку запущених процесів через процес сервера DbgSrv.
symchk.exe Утиліта для завантаження символів з сервера символів Microsoft і створення локального кеша символів.
symstore.exe Утиліта для створення мережевого або локального сховища символів (2-tier / 3-tier). Сховище символів - спеціалізована директорія на диску, яка будується відповідно до певною структурою і містить символи. У кореневій директорії символів створюється структура підпапок з назвами, ідентичними назві компонентів. У свою чергу, в кожній з цих підпапок знаходяться вкладені папки, що мають спеціальні найменування, одержувані методом хеширования бінарних файлів. Утиліта symstore сканує папки з компонентами і додає нові компоненти в сховище символів, звідки їх може отримати будь-який клієнт. Йдеться про те що symstore служить для отримання символів зі сховища рівня 0-tier і викладання їх в сховище рівня 2-tier / 3-tier.
tlist.exe Переглядач завдань. Утиліта для виведення списку всіх запущених процесів.
umdh.exe User-mode dump heap utility. Утиліта для аналізу куп (heap) обраного процесу. Дозволяє виводити різні параметри для купи.
usbview.exe Переглядач USB. Утиліта для перегляду USB пристроїв, Підключених до комп'ютера.
vmdemux.exe демультиплексор віртуальної машини. Для одного COM-з'єднання створює кілька іменованих каналів. Канали використовуються для налагодження різних компонентів віртуальної машини
windbg.exe Отладчик режиму користувача і режиму ядра з графічним інтерфейсом.
Запуск Debug.exe, програми для перевірки і налагодження виконавчих файлів MS-DOS. Виконана без параметрів команда debug запускає програму Debug.exe і виводить запрошення команди debug, Представлене дефісом (-).


1)
Запустити Virtual PC 2007 за образом Windows XP. Перекласти ОС в режим командного рядка.

Пуск -\u003e Виконати -\u003e Вводимо cmd і натискаємо Enter.


2)
Отримати і зафіксувати довідку по опціях команди debug

В консолі: ввестіdebug, потім (?).

короткий список всіх команд:

A (assemble) - Транслювання команд асемблера в машинний код. Адреса за замовчуванням - CS: 0100h.

З (compare) - Порівняння вмісту двох областей пам'яті. За замовчуванням використовується DS. У команді вказується або довжина ділянок, або діапазон адрес.

D (dump) - Висновок вмісту області пам'яті в шістнадцятковому і ASCII-форматах. За замовчуванням використовується DS. Можна вказувати довжину або діапазон.

E (enter) - Введення в пам'ять дані або інструкції машинного коду. За замовчуванням використовується DS.

F (fill) - Заповнення області пам'яті даними зі списку. За замовчуванням використовується DS. Використовувати можна як довжину, так і діапазон.

G (go) - Виконання налагодженої програми на машинній мові до зазначеної точки зупину. За замовчуванням використовується DS. При цьому слід переконатися, що IP містить коректну адресу.

H (hexadecimal) - Обчислення суми і різниці двох шістнадцятирічних величин.

I (input) - Зчитування і висновок одного байта з порту.

L (load) - Завантаження файлу або даних із секторів диска в пам'ять. . За замовчуванням - CS: 100h. Файл можна вказати за допомогою команди N або аргументу при запуску debug.exe.

M (move) - Копіювання вмісту осередків пам'яті; за замовчуванням використовується DS

N (name) - Вказівка \u200b\u200bімені файлу для команд L (LOAD) і W (WRITE).

O (output) - Відсилання байта в порт виводу.

P (proceed) - Виконання інструкцій CALL, LOOP, INT (циклу, переривання, процедур) або повторюваною строкової інструкції з префіксами REPnn, Переходячи до наступної інструкції.

Q (quit) - Завершення роботи debug.exe. Без збереження тестованого файлу.

R (register) - Висновок вмісту регістрів і наступної інструкції.

S (search) - Пошук в пам'яті символів зі списку. За замовчуванням використовується DS. Можна вказувати як довжину, так і діапазон.

T (trace) - Покрокове виконання програми. Як і в команді P, За замовчуванням використовується пара CS: IP. Але для виконання переривань краще користуватися командою P.

U (unassemble) - Дизасемблювання машинного коду. За замовчуванням використовується пара CS: IP.

W (write) - Запис файлу з debug.exe на диск. Необхідно обов'язково задати ім'я файлу командою N, Якщо він не був завантажений.


3)
Отримаємо та зафіксуємо дампи характерних областей RAM і ROM

Наберемо команду R.

регістри CS, DS, ES, SS в цей момент ініціалізовані адресою 256-байтного префікса сегмента програми, А робоча області в пам'яті буде починатися з адреси цього префікса + 100h.

Правила набору команд:

А) У debug.exe не відрізняється регістр букв.

Б) Прогалини в командах використовується тільки для поділу параметрів.

В) вводяться числа повинні бути в шістнадцятковій системі числення, причому без завершальній літери h.

Г) Сегмент і зміщення записуються з використанням двокрапки, в форматі сегмент: зміщення.


4)
Перегляд області пам'яті.

команда D, Дозволяє переглядати вміст окремих областей пам'яті.
Перевіримо розмір доступної для роботи пам'яті. Для цього введемо: d 40:13 і Enter.
Перші два байта, що з'явилися в результаті на екрані, містять розмір пам'яті в кілобайтах і в шістнадцятковому представленні, причому байти розташовуються в зворотній послідовності. У Нас це: 8002 0280 640 (К)

  • Адреса першого зліва показаного байта в форматі сегмент: зміщення.
  • Шістнадцяткове подання параграфа (16 байт), що починається з вказаного на початку рядка байта.
  • Символи цього ж параграфа в ASCII-форматі.


4)
Перевірка паралельних і послідовних портів.


Перші 16 байт області даних BIOS містять адреси паралельних і послідовних портів. Перші виведені вісім байтів вказують на адреси послідовних портів COM1-COM4. Наступні 8 байтів вказують на адреси паралельних портів LPT1-LPT4. Адреса порту 78 03 - записується в зверненої формі.


5)
Перевірка стану регістра клавіатури.


В області даних BIOS за адресою 417h знаходиться перший байт, який зберігає стан регістра клавіатури ..


6)
Перевірка дати виробництва BIOS.


Попередження про авторське право на BIOS вбудовані в ROM BIOS за адресою FE00: 0. Рядок з копірайтом можна легко знайти в ASCII послідовний, а серійний номер - у вигляді шістнадцятирічного числа. На екрані бачимо семизначний номер комп'ютера і дата копірайт. Хоча, рядок із зазначенням авторських прав може бути довгою і не уміщатися в виведену область пам'яті. В такому випадку слід просто ввести ще раз D.

Дата також записана в ROM BIOS починаючи з адреси FFFF: 5. Після виконання відповідної команди в ASCII послідовний буде знаходитися ця дата, записана в форматі мм / дд / рр.


7)
Приклад машинних кодів.


Розглянемо створення програми на машинній мові, її уявлення в пам'яті і результати виконання. команда відладчика A (Assemble) переводить DEBUG в режим прийому команд асемблера і переведення їх в машинні коди.

Тепер, коли програма введена в пам'ять, спробуємо керувати її виконанням. Для початку перевіримо поточний стан регістрів і прапорів, для цього вводимо команду R.


IP - регістр, що містить адресу-зміщення наступної команди, яка підлягає виконанню, щодо кодового сегмента CS в процесорах сімейства x86.

регістр IP пов'язаний з CS у вигляді CS: IP, де CS є поточним кодовою сегментом, а IP - поточним зміщенням щодо цього сегмента.

регістр IP є 16-розрядним регістром-покажчиком. Крім нього, до складу регістрів цього типу входять SP (Stack Pointer - покажчик стека) і BP (Base Pointer - базовий покажчик).

запис CX пройшла успішно і дорівнює 8-й. Відбулася ініціалізація сегментів DS, ES, SS, CS одним і тим же адресою. регістр IP містить 0100 , Вказуючи на те, що інструкції виконуються зі зміщення 100h щодо CS (з нього і починали).

значення

опис

відсутність переповнення

Напрямок вгору або вправо

дозвіл переривань

позитивний знак

нульове значення

Відсутність додаткового перенесення

непарне слово

0 B16 - адреса сегмента коду.
  • Машинний код, що відповідає цій інструкції ( B025).
  • Власне інструкція, записана на асемблері ( MOV A L,25 ).

  • 8)
    Команда відладчика U (Unassemble) показує машинні коди для команд асемблера.


    Виконаємо її. Необхідно повідомити отладчику адреси першої і останньої команди, які необхідно переглянути (у Нас 100 і 107). З'являться інструкції, що знаходяться в зазначеному діапазоні, на асемблері, в машинних кодах, а також адреса кожної інструкції. Виконаємо програму покроково, використовуючи команду T.

    Використавши вдруге команду T, Ми виконали інструкцію MOV. Машинний код операнда інструкції - 00D8. операція додає AL до BL. Для виходу введемо Q. І знову дізассембліруем створений testpi.com.


    9)
    Скопіювати BIOS (С000: 0 ... FFFF: F) в файл і зберегти файл для подальшого аналізу.


    Зміна або копіювання коду BIOS може порушити авторське право виробника BIOS. BIOS можна копіювати або модифікувати тільки для цілей індивідуального користування, але не для поширення. Типова процедура копіювання BIOS за допомогою програми DEBUG наведемо нижче. Ця процедура збереже в файлі весь сегмент в 64 Кбайт з адреси F000: 0000h по F0000: FFFFh.


    висновки:

    • debug.exe можна застосовувати для спостережень і налагодження програм на асемблері і машинних кодах.
    • debug.exe дозволяє трассіровать програму, встановлювати точки зупинки, переглядати області пам'яті, вводити програми безпосередньо в пам'ять комп'ютера.
    • debug.exe представляє файли програми як програми .COM.
    • debug.exe сприймає тільки числа в шістнадцятковій системі.
    • debug.exe не розрізняє регістр букв.