Привіт і ласкаво просимо назад.
На цьому уроці ми виконаємо практичну вправу.
Отже, ми виконаємо практичну вправу на основі того, що ви вивчили на попередньому уроці.
І ми збираємося впроваджувати цей код. Покладіть його праворуч, щоб ми могли кодувати його разом. Відкрийте ваш шаблон
за допомогою x64dbg, потім прокрутіть вниз, знайдіть це місце і введіть код праворуч ось
тут.
Отже, спочатку треба перемістити - нуль, а потім перемістити -, -, а потім зсунути вліво -, два, а потім додати - до базової
адреси.
Тож базової адреси в цьому випадку ми поки що не знаємо.
Тож ми можемо просто тимчасово - або, можливо, ми можемо отримати базову адресу.
Тепер перейдемо до карти пам'яті та відкриємо дані.
А тут ми можемо створити нашу базову адресу, ввівши три значення. Отже, ми можемо використати 3040 і поставити нуль одиниць
ось тут.
Двічі клацнемо на ньому.
А потім у відкритому текстовому полі просто введіть нуль одиниць під виразом. Ключ в порядку.
А потім ось тут двічі клацніть і введіть нуль два.
А тут поставте нуль три.
Отже, тепер у нас є три слова.
Перше слово починається звідси, 00000001, а адреса - 3040.
Отже, це базова адреса.
А наступне слово - ось тут.
Якщо ви наведете мишку на це місце, то побачите адресу, яка показує 403044.
Якщо ви наведете мишку на
цю адресу, то побачите, що вона має номер 403048.
Якщо ви наведете мишку на це місце, то побачите 30404C.
Бачиш?
Таким чином, кожна адреса збільшується на слово або чотири байти.
Отже, базова адреса для цього масиву - 403040.
Отже, ми просто натискаємо правою кнопкою миші і копіюємо цю адресу, копіюємо цю адресу, і це буде наша базова адреса.
Ми можемо повернутися сюди і почати кодувати його.
Отже, натискаємо пробіл і натискаємо додати -, і вашу базову адресу, 0x шістнадцятковий префікс, а потім вставляємо туди вашу базову
адресу.
І це вирішує цю лінію, цю
лінію.
Далі ми переносимо в нього -. Отже, ми можемо просто ввести mov -, а потім вказівник DWORD і розіменування
-.
Отже, в цьому випадку ви просто вводите "ось так" і натискаєте "ОК". Ось так.
Далі будуть INC -, -, INC -, а потім порівняння.
- з трьома. Якщо не рівні, то ви стрибаєте назад на вершину.
Отже, верхня частина тут відноситься до циклу.
Отже, верхньою для цього випадку буде ось ця адреса, рядок, де у вас є інструкція MOV -, -.
Для вашого комп'ютера він може відрізнятися.
Тож просто дотримуйтесь того, що ви бачите тут, поруч з цією інструкцією.
Тож просто скопіюйте адресу сюди, а потім приходьте сюди і поставте свій стрибок.
Перехід не рівний і вставте свою адресу, і...
Тож підтвердьте, перевірте ще раз.
Просто зробіть паузу, щоб переконатися, що ви все ввели правильно.
Після того, як ви перевірили, підтвердили, що все правильно, ви можете поставити тут точку
зупинки, як це зробив я, і почати відслідковувати.
Тож натисни "бігти". Він потрапляє в наш брейк-пойнт, і ви переступаєте через нього.
Тепер він перемістить нуль до -, переступить і тепер - має нуль.
Далі йде рух - до -, а тепер переступаємо. - тепер дорівнює нулю.
Далі ми помножимо нуль на чотири.
Отже, коли ви зсуваєте вліво на два, це означає помножити на чотири.
Тож коли ви переступаєте через нього, ви множите на чотири.
Що завгодно, нуль помножити на чотири, ви все одно отримаєте нуль.
Тож так, я все ще маю там нуль.
Тепер ми додамо цю адресу до нуля, щоб отримати зміщення.
Отже, наш перший офсет, як ми бачили, буде таким.
Отже, давайте зробимо крок, і ви побачите, що наше перше зміщення тепер у -.
- тепер вказує на 403040, що знаходиться тут.
А потім ми розіменовуємо цю адресу, щоб отримати звідти значення one і перемістити його в -, скопіювати
в -.
Тож давайте зробимо крок туди.
І тепер вона його має.
Далі ми збільшуємо -. Годинник -, - тепер стає одним цілим.
Тепер порівнюємо -. - це три. Відійди.
Це не так. Отже, оскільки - не дорівнює трьом,
цей стрибок не відбудеться.
Отже, оскільки - не дорівнює трьом, то вона перестрибне на вершину ось тут і повторить цикл.
Отже, зараз він перестрибує туди, а потім переходить у -. - тепер один.
Тож ми переступаємо. - стає одиницею, а тут ви множите одиницю на чотири.
Отже, у вас буде чотири.
Отже - вже чотири.
Далі до базової адреси потрібно додати чотири цифри.
Отже, коли ви додасте чотири до базової адреси, ви отримаєте 3044.
Отже, зараз - це 3044-0-2044, який посилається на цю локацію.
Якщо ви наведете мишку на цю адресу, то побачите адресу 403044.
Після цього він розіменовує посилання на 3044, щоб отримати значення two і скопіювати його. Два, переступайте і дивіться, тепер
їх стало два.
Далі збільшується на -.
- тепер стає два.
Потім він порівнює, чи - дорівнює трьом. Відійди. Це не так.
Тому він повернеться на вершину для наступного циклу.
Тож він знову стрибає на вершину.
Тепер він скопіює - до -. Відійди. - дорівнює двом, тому копіюється до двох.
-, - тепер два.
Далі ми помножимо два на чотири.
Тож переступайте, два помножте на чотири і отримаєте вісім.
Отже - вже вісім.
Тепер до базової адреси, 403040, буде
додано вісім.
Отже, коли ви додасте вісім до цієї адреси, то отримаєте 3048.
Отже, коли ви переступите, ви побачите, що тепер - стає 3048, а 3048 посилається на цю адресу.
Отже, якщо ви наведете на нього курсор, то побачите, що адреса дійсно 403048.
Далі ми розіменовуємо цю адресу, щоб отримати значення, яке там зберігається, а саме три,
і скопіювати його в -.
Тож ми переступаємо і бачимо - вже три.
Потім збільшуємо - на одиницю. Відійди.
- тепер три.
Тепер порівняємо. Три?
Так.
Оскільки - це дійсно три, стрибок
не відбудеться.
Після цього він вийде з циклу.
Ось і все.
Отже, ось
як ми можемо реалізувати цикл для ітерації по масиву пам'яті.
Тож це все - давайте збережемо це зараз. Клацніть файл, виправлення, клацніть файл виправлення, а потім
назвемо його 52.
52.
Тире масив циклу bin dot x і натисніть на кнопку зберегти.
На цьому відео все.
Дякуємо за перегляд.