З поверненням.
Тепер візьмемо інший приклад.
Інший приклад: JNZ
(jump not zero).
JNZ стрибає, тільки якщо нульовий прапорець очищено до нуля.
Тобто, результат останнього обчислення є ненульовим.
Наприклад, якщо ми перемістимо одиницю до -, а потім збільшимо її, - стане двійкою.
У цьому випадку це ненульове значення.
Отже, ненульове значення означатиме, що нульовий прапорець очищено до нуля.
Тож це станеться.
Стрибок відбудеться.
Стрибок відбудеться, оскільки нульовий прапорець не встановлено.
Отже, він перейде за цією адресою і додасть два до -.
Отже - тепер їх стає чотири.
Отже, в підсумку, стрибок зроблено, і остаточне значення - дорівнює чотирьом.
Тож давайте спробуємо.
Тепер знову відкриваємо перший шаблон і вводимо наші інструкції.
Отже, давайте введемо інструкції, які ви бачите тут.
MOV - один, INC -.
JNZ.
А тут просто вводимо будь-яку адресу.
00401540.
Я просто копіюю адресу навмання.
Ми змінимо це пізніше.
Наступного разу ви додасте -
п'ять, а наступного разу буде додано - два.
Тепер ми можемо скопіювати цю адресу, щоб вставити її сюди.
Отже, ми копіюємо цю адресу, натискаємо правою кнопкою миші, копіюємо адресу, повертаємося до цього рядка,
просто натискаємо пробіл, а потім змінюємо її на цю.
Тепер зверніть увагу, що x64dbg змінив JNZ на JNE, тому JNE є еквівалентом JNZ.
Це те ж саме.
Він просто перевіряє, чи скинуто нульовий прапорець.
Якщо його очистити, то він буде стрибати.
Тож давайте запустимо це зараз і переступимо.
Ми підходимо до цієї лінії. Він переміщує одиницю на -.
Тож - тепер один.
Ви збільшуєте -.
- має стати двійкою, а нульовий прапорець має
залишитися не встановленим.
Він повинен залишатися чітким.
Нульовий прапорець чистий, тому що результатом останньої команди є ненульове значення.
Отже, оскільки нульовий прапорець очищено до нуля, це істина, тому він
буде стрибати.
Отже, він перестрибне сюди,
а тепер додасть два до -.
Тож давайте переступимо, і тепер - стає чотири, як ми
й передбачали тут.
Це і є сенс стрибка не в нуль.
Гаразд.
Давайте збережемо це. Файл, патч, патч, патч, і давайте
дамо йому ім'я: 32 JNZ точка E-X-E.
Зверніть увагу, що я вже коментував це тут, щоб було зрозуміліше, що JNE є еквівалентом інструкції
JNZ.
Вони обидва однакові.
Ось і все.
До зустрічі в наступному відео.
Дякуємо за перегляд.