Передмова

Кожен задає питання: який відладчик я повинен використовувати?.. Все, як правило, відповідають Ice (айс). Тут же з’являється друге питання Як використовувати Айс ?!

Це керівництво повинне допомогти вам освоїти Айс для геймхакинга.

По-перше, потрібно взяти Айс для Windows 95 (ст. 3.25) або вище. Після інсталяції Айс живе своїм непомітним життям. Поки він не знадобиться. Зазвичай Айс потребу в грамотній настройці і підключення бібліотек. Для цього доведеться редагувати winice.dat, або його можна взяти в готовому вигляді. Відкрийте winice.dat будь-яким редактором. Знайдіть такі рядки:

;exp=c:windows_directorykernel32.dll
;exp=c:windows_directoryuser32.dll

Якщо Ви приберете крапки з комою, то звернення стануть активними. Якщо не стануть, то приберіть всі крапки з комою. Потім збережіть файл. І перезавантажте вінду.

Для того щоб потрапити в Айс натисніть [Ctrl+D], якщо, звичайно, до цього не поміняли це поєднання гарячих клавіш.

Для роботи краще знати команди з клави для айса

F1 Допомогу
F2 Вікно регістра
F5 Вивалитися в вінду
F8 Трейс до наступної інструкції (переходить на всі звернення)
F10 крок до наступної інструкції (виконує поточне звернення і переходить)
F12 запустити до найближчої команди RET

Існують і інші клавіші, ці найбільш корисні.

Незважаючи на дивний вигляд (як ніби все накрилося) айс дуже простий. Однак Вам необхідно хоча б примітивно знати ASM (див. керівництво по ASM).

Перед тим, як ми продовжимо, Ви повинні переконатися, що ви бачите на екрані 4 секції; ними можна керувати наступними командами
WR Показати/сховати вікно Регістрів
WD Показати/Сховати вікно Даних, враховуючи номер після команди
WC — Показати/Сховати вікно Коду | дозволяє вам встановити кількість рядків.

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

Вікна можуть бути змінені, кожне може бути прокручено, використовуючи наступні клавіші:

Скролл вікно Коду;
Скролл вікно консолі управління;
Скролл вікно Даних.

Зауваження, деякі розробники настільки не вважають нас за людей, що вставляють правильний серійник в прогу, тільки в декількох байтах далі від місця введення, тому можна проскроллить і подивитися

Верхні три лінії на екрані відносяться до регістру і його вмісту (EAX, EBX і т. д.) більш детально дивіться в посібнику ASM.

Друга лінія з правого краю містить 8 літер це прапори. Сині букви показують, який прапор активний. Ось список прапорів:

O D I S Z A P C
| | | | | | | |
| | | | | | | +——- Несучий прапор
| | | | | | +——— Прапор рівності
| | | | | +———– Допоміжний несе прапор
| | | | +————- Нульовий прапор ( Дуже корисний )
| | | +————— Прапор підпису
| | +—————– прапор переривань
| +——————- Направляючий прапор
+——————— Прапор потоку

Треба сказати, що для злому (crack) частіше використовують нульовою прапор (детальніше можливо у посібнику кряку)

Тепер вікно Даних: воно показує значення пам’яті в будь-якій адресі. Наприклад, введіть dF9D2B айс покаже значення цієї адреси.

d команда, щоб показати пам’ять

Тепер вікно Коду воно містить частину програми на яку ми дивимося. Секція показує адреса коду, машинний код (див. список), ASM-команду

Зауваження, для того щоб подивитись на опкод (маш. код.), треба ввести команду CODEON.
Нарешті, внизу вікно вводу використовується для вводу команд і перегляду відповідей.

Брикпойнты

Брикпойнты дуже корисні. Брикпойнт це те місце, на якому прога перерветься, в залежності від параметрів брика.

Брикпойнт на запуск

Синтакс: bpx

Головна проблема налагодження знайти вхід в програму. З брикпойнтом це дуже просто.

Спрощено, все що потрібно це сказати айсу де зупинитися і подивитися що сталося. Тип брикпойнта залежить від типу програми

Покажемо це на прикладі:

1. Викличте Айс ( CTRL-D ), і введіть ‘bpx GetLocalTime’
2. Введення повинен знову з’явитися, поверніться в вінду ( CTRL-D )
3. Два рази натисніть на значку годин.

Айс повинен спливти, і почати обіг GetLocalTime, якщо натиснете F11, то повернетеся до функціональної частини коду.

Іншими функціональними зверненнями, корисні при пошуку серійників, є GetWindowTexta’ або ‘GetDlgItemTexta’. Приклад:

1. Натисніть кнопку СТАРТ і натисність Виконати
2. Наберіть що завгодно, нп ‘lalalalalalalalalaa’ [Enter] НЕ НАТИСКАТИ
3. Увімкніть айс. ( CTRL-D )
4. Введіть BPX GetWindowTextA
5. Поверніться в вінду, натисніть [Enter]

Айс спливе на початку ‘GetWindowTexta’, натисніть F11 для повернення викликає кодом. Що стосується другої команди, працює вона приблизно також, зазвичай її використовують, якщо перша не допомогла.

Пошук в Пам’яті

Синтакс: s l “

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

s 0 l fffffff ‘mystring’

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

Зазвичай пошук слід продовжувати, так як в вінді половина значень дублюється, а також є «порожні» адреси (зазвичай їх тим більше, чим більше пам’ять).

Брикпойнт на доступ до пам’яті

Синтакс: BPM R/W

Зазвичай саме для цього і використовується пошук

Тут все просто, після знаходження адреси на нього слід ставити брік для перегляду звернень до нього основний шлях боротьби з ДМА (див. керівництво по геймхакингу)

R/W служить для того, щоб ставити брік, коли на адресу щось пишеться (W) або коли його читають ®.

Іноді бувають випадки, коли один адреса отримати не вдається. Звичайно, якщо їх 2-3, можна перевірити кожен, а якщо їх цілий ділянку ?

Для цього служить брикпойнт на пам’ять з урахуванням меж:

Синтакс: BPR R/W

Також, якщо у Вас є досвід, то можна вгадати в якій зоні пам’яті міститься значення. Зазвичай це використовується при підборі логінів і паролів. Для цього ставиться брік на область пам’яті, відповідальною за доступ (перевіряється гетдиалогом), а потім програма запускається разом з пас-генератором, спосіб досить трудомісткий (айс часто спливає багато треба перевіряти); однак при нескладних захистах це спрацьовує.

Для перегляду списку брикпойнтов:
Синтакс: bl

Це виведе лист певних брикпойнтов у форматі:
Номер) Брикпойнт_Тип Параметри Лічильник

Наприклад
00) BPX #0028:09876543 C=01

Лічильник використовується для установки числа звернень, як видно з прикладу (З=01) брикпойнт спрацює при першому зверненні

Для видалення брикпойнтов
Синтакс: bc

Це видаляє специфічні бріки (за номерами), наприклад:

BC 0

Іноді більш корисно вимкнути брік, а не видаляти, наприклад при складних операціях. Або як кажуть: видалити завжди встигнете. Особливо це стає зрозуміло, коли видаливши брік, будете заново шукати адресу, щоб його знову поставити

BD 1,2,3,5

Очевидно, що якщо Ви щось вимкнули, це можна включити знову.

Поки на цьому все. Я сподіваюся, що цієї інформації вистачить для спілкування з Айсом, якщо ні — чекайте розширеного керівництва.