Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Лабораторна робота






“Дослідження коду програм”

 

Мета заняття:

– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;

– придбати практичні навички в дослідженні коду програм з використанням АРІ-функцій під Win32 для МП платформи х86.

 

Постановка задачі

Написати програми на мові асемблеру та знайти в ехе-файлах місця знаходження ключів регістрації програм:

1. Вимоги реєстрації із збереженням ключа безпосередньо в програмі.

2. Вимоги реєстрації із збереженням ключа в масиві збереження даних.

 

Вимоги до програм:

– вивести дані про автора;

– передбачити повідомлення при невірних діях або некоректних даних.

 

Зміст звіту

1. Постановка задачі.

2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.

3. Лістинг програми та коментарі до всіх команд.

4. Рrint screen екрана 32-розрядного налагоджувача з виконанням програми та результатами виконання.

5. Висновки за результатами роботи.

 

Приклад 26.1. Написати програму на мові С++ з реєстрацією збереження ключа в програмі. Текст програми може бути таким, як наведено в лістингу 26.3.

 

Лістинг 26.3:

#include < iostream>

void main()

{

int password;

C:

system(" cls");

std:: cout < < " Enter pssword " < < std:: endl;

std:: cin > > password;

if (password==12345)

{

std:: cout < < " You entered a correct password" < < std:: endl;

}

else

{

std:: cout < < " You entered a wrong password" < < std:: endl;

system(" pause");

goto C;

}

system(" pause");

}

 

Для програми з лістингу 26.3 отримати ехе-файл, при запуску якої виведеться повідомлення про регістрацію з вимогою ввести ключ. Якщо ключ співпадає із тим, що зберігається в програмі, то буде виведено повідомлення про реєстрацію програми. (рис. 26.2).

 
 

 


Якщо ж ключ введено невірний, то буде виведено відповідне повідомлення та меню про продовження роботи або вихід (рис. 26.3).

 
 

 

 


Щоб програма приймала будь-який ключ треба змінити її код у налагоджувачі. Відкриваємо ехе-файл у налагоджувачі OllyDbg (рис. 26.4).

 
 

 


При натисканні на функціональну клавішу F8 налагоджувач перейде на початок програми, вигляд якої наведено на рис. 26.5.

 

 
 

 


Натискаючи F8 починаємо покроково трасувати програму, поки не виведеться повідомлення про введення ключа. Ту команду, яка вивела відповідне повідомлення необхідно відмітити, тобто поставити контрольну крапку. Для цього, підводимо курсор на цю команду та натискуємо ліву клавішу мишки, а також функціональну клавішу F2. Адреса команди підсвітиться червоним кольором (рис. 26.6).

 

 

 
 
Рис. 26.6. Виділення команди виведення повідомлення

 

 


Після виділення цієї команди (як правило – команду call) знову перезапускаємо програму. Для цього натискаємо кнопку , а потім кнопку , або F9. Виконання програми зупиниться на цій виділеній команді. Входимо в цю команду натисканням кнопку F7. Натискуємо ще раз кнопку F7 (або F8) та в полі коментарів зразу видно команди, які відповідають за відповідні повідомлення (рис. 26.7).

 

 
 

 


Через декілька кроків буде порівняння введеного коду з заданим. Це команда переходу JNZ. Робимо подвійний клік на ній. З’являється вікно (рис. 26.8). Необхідно запам’ятати код цієї команди – 75 20.

 

 
 

 

 


Замінюємо цю команду на команду безумовного переходу JMP та перевіряємо адресу – чи правильно буде перенесено виконання програми (рис. 26.9). Якщо необхідно, то змінюємо й адресу.

 
 

 

 


Тепер треба „зашити” цей код у програму. Для цього скористаємося HEX-редактором XVI32, в який завантажуємо ехе-файл (рис. 26.10).

 
 

 


Викликаємо пункт меню Search і шукаємо 75 20. Замінюємо знайдений рядок на інший. Для цього натискаємо на кнопочку та змінюємо рядок (рис. 26.11).

 
 

 


Зберігаємо зміни, закриваємо редактор. Ця програма прийматиме будь-який ключ.

 

 

Література: Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку “Комп’ютерна інженерія” вищих навчальних закладів. – Х.: “Слово”, 2010. – 924 с.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.