Частина 7 – Програмовий Відлік
Для повного змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial
Ми розпочнемо з регістрів протягом наступних тижнів, щоб забезпечити, щоб ви отримали міцне розуміння їхньої ролі та того, що вони можуть зробити.
Ми починаємо з PC або програмного відліку. Програмний відлік відповідає за керування процесором щодо того, яка інструкція буде виконана наступно. PC буквально містить адресу інструкції, яка буде завантажена наступно.
Під час кодування ви можете посилатися на PC як на PC або R15, оскільки регістр 15 є програмним відліком. Вам обов'язково потрібно ставитися до нього з увагою, оскільки ви можете встановити його неправильно і призвести до краху виконуваного файлу досить легко.
Ви можете керувати PC безпосередньо в коді:
mov r15, 0x00000000
Я не рекомендую спробувати це, оскільки ми не працюємо в режимі Thumb і це призведе до помилки, оскільки ви потрапите в область операційної системи, а не в призначену програмну область.
У нашому ARM процесорі ми дотримуємося стандартної конвенції виклику, тобто параметри передають шляхом розміщення значення параметрів в регістрах R0 – R3 перед викликом підпрограми, а підпрограма повертає значення, розмістивши його в R0 перед поверненням.
Це важливо зрозуміти, коли ми думаємо про те, як здійснюється виконання під час роботи зі стеком і регістром зв'язку, який ми обговоримо в майбутніх уроках.
Під час хакінгу або відтворення бінарного файлу керування PC є необхідним, коли ви хочете перевірити виконання підпрограми та вивчити, як програма працює, щоб розбити її і зрозуміти, що вона робить.
Наступного тижня ми продовжимо вивчати більше інформації про CPSR!