Привіт і ласкаво просимо назад.
У цьому уроці ми розглянемо інструкцію REP.
Команда REP - це повторна команда для STOS,
LODS і MOVS.
Що робить REP?
Приклад інструкції REP виглядає так:
REP MOVS B.
Вона повторює інструкцію MOVS B - разів. - буде містити кількість разів, яку ви хочете, щоб MOVE
B повторив, і - також відомий як лічильник.
Він буде зменшуватися, поки не стане нульовим.
Розглянемо практичний приклад.
Отже, тут ми зберігаємо пам'ять source-джерело, що містить рядок-джерело, з якого ви хочете скопіювати.
І тут ви переміщуєтесь - у пам'ять призначення, куди ви хочете скопіювати рядок.
Потім ви переносите 5 в -. Отже, 5 - це кількість разів, яку ви
хочете, щоб команда MOVS повторювалася.
Отже, тут ви завантажуєте - кількість разів, яку ви хочете,
щоб MOVS B повторився.
І в цьому випадку це має бути довжина рядка в -, тому що ви збираєтеся копіювати
кожен символ в з - в -.
Далі ви викликаєте інструкцію REP за допомогою команди MOVS B.
Потім ви викличете інструкцію REP MOVS B.
Отже, ця інструкція MOVS B буде повторена п'ять разів.
Отже, давайте подивимося, як ми можемо реалізувати це всередині x64dbg.
Отже, відкрийте ваш x64dbg, введіть інструкції та збережіть
- збережіть його як 63_rep. exe.
А для цієї адреси, 00403050, перейдіть
до карти пам'яті і введіть рядок APPLE у відповідному місці.
І для цієї адреси виберіть тут порожню адресу, куди ви збираєтеся скопіювати цей
рядок.
Далі ми збираємося поставити там точку зупинки і запустити.
А потім переступай.
Тепер він скопіює рядок - він
скопіює адресу в -.
Отже - отримав 00403050, яка є адресою джерела, що містить рядок.
Потім він скопіює адресу призначення в -.
Ми переступили через це і помітили - тепер у нього є адреса призначення: 00403060.
Потім копіюємо 5 в -. Переступив, і - тепер має 5.
Далі ми виконаємо інструкцію REP, щоб повторити MOVS B п'ять разів.
REP звернеться до -, а оскільки - отримав 5, він повторить MOVS B п'ять разів.
Тож слідкуйте за цією адресою, щоб побачити, що станеться, коли я зателефоную - коли ми переступимо через цю інструкцію.
Отже, тепер він скопіював рядок APPLE до адреси призначення, яка знаходиться тут, і ми бачимо, що рядок APPLE
там є.
Також зверніть увагу на те, що - тепер це нуль, тому що він виконав цю інструкцію MOVS B п'ять разів.
Ось як ми можемо використовувати інструкцію REP, префікс REP, для повторення рядкових інструкцій кількість
разів, що базується на -.
Це все для цього відео.
Дякуємо за перегляд.