Частина 4 - Системи чисел

Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial

Усе дуже просто. Ніщо не змінюється навіть у майбутньому. Усі системи, навіть інтерпретовані мови, використовують JVM або щось подібне і потім переходять до збірки, потім до машинного коду, потім до бінарного. Чому нам потрібно навіть говорити про системи чисел? Чому це відноситься до нашої серії тут? Відповідь дуже проста. Крім всього іншого, інструкції та пам'ять, а також регістр процесора використовують ще одну систему чисел, яку називають шістнадцятковою.

Давайте розберемося з бінарним! У серці мікропроцесора знаходяться ряд бінарних чисел, які можуть бути або +5В (ввімкнено або 1) або 0В (вимкнено або 0). Кожне 0 або 1 представляє окремий біт інформації в мікропроцесорі. Кombinatsiya з 8 бітами призводить до однієї байти. До того, як ми перейдемо до бінарного, давайте розглянемо знайомий десятковий. Якщо ми візьмемо число 2017, ми зрозуміємо це як дві тисячі сімнадцять.

Давайте розглянемо бінарну систему та її основи роботи.

Якщо ми перетворимо бінарне число на десяткове, ми дуже просто зробимо наступне. Давайте візьмемо бінарне число 0101 1101 і, як ви бачите, воно становить 93 десяткові.

Додавання значень в стовпці значення дозволяє нам отримати 0 + 64 + 0 + 16 + 8 + 4 + 0 + 1 = 93 десяткові. Якщо ми перетворимо десяткове число на бінарне, ми перевіримо, чи можливо віднімання відносно найбільшої бітової одиниці, якщо так, то в бінарний стовпець буде розміщено 1, а залишок буде перенесений в наступну строку. Давайте розглянемо приклад десяткового значення 120, яке є 0111 1000 бінарним.

1) Чи вміститься 128 в 120: Ні, тому 0. 2) Чи вміститься 64 в 120: Так, тому 1, потім 120 – 64 = 56. 3) Чи вміститься 32 в 56: Так, тому 1, потім 56 – 32 = 24. 4) Чи вміститься 16 в 24: Так, тому 1, потім 24 – 16 = 8. 5) Чи вміститься 8 в 8: Так, тому 1, потім 8 – 8 = 0. 6) Чи вміститься 4 в 0: Ні, тому 0. 7) Чи вміститься 2 в 0: Ні, тому 0. 8) Чи вміститься 1 в 0: Ні, тому 0. Коли ми хочемо перетворити бінарне на шістнадцяткове, ми дуже просто працюємо з наступною таблицею.

Давайте перетворимо бінарне число, наприклад, 0101 1111 на шістнадцяткове. Для цього ми дуже просто порівнюємо кожен нібель, який складається з 4 біта. Увага, 8 біта рівна одному байту, а 2 нібелі рівні одному байту.

Отже, 0101 1111 бінарне = 0x5f шістнадцяткове. Означення 0x позначає шістнадцяткове. Щоб перейти від шістнадцятирічного до бінарного, досить просто, як і потрібно зробити навпаки, наприклад:

ХМДХ0773402ф6879ХМДХ

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

ХМДХ17а151277521ХМДХ

Отже, ми бачимо, що 80 + 15 = 95, що є ХМДХаабб9е792ф30ХМДХ шістнадцятирічним. Нарешті, щоб перетворити з десяткової на шістнадцятирічну. Давайте візьмемо число 850 десяткове, яке є 352 шістнадцятирічним. ХМДХ125492е7ф7еХМДХ

“Чому б мені витрачати свій час на вивчення цього бруду, коли комп'ютер робить усе це для мене!”

Як я вже згадував вище, дуже важливо мати хорошу розуміння цих двох додаткових системи чисел, якщо ви справжньо бажаєте захопитися і вивчити відтворення інженерії на її основі. Є деякі чудові інструменти, які допомагають процесу RE, але краще розуміння, яке ви маєте цих, допоможе вам, коли ви зростаєте. Я не пропоную вам запам'ятовувати вище, ні я не пропоную вам зробити тисячу прикладів кожного. Я тільки просуваю, щоб ви взяли час, щоб справжньо зрозуміти, що буквально все і я маю на увазі все йде до бінарних бітів у процесорі. Чи ви створюєте, чи відлагоджуєте чи хакуєте Асемблер, ХМДХ7093а2а87455ХМДХ, Java, C, C++, R, JavaScript чи будь-яку іншу нову мову застосування, яке потрапляє на вулицю, у кінцевому підсумку все МУСЬ ВІДПРАВИТИ до бінарного 0 і 1, які представляють +5В або 0В. Ми як люди працюємо на основі десяткової системи чисел. Давайте розширимо свій розум до бази 2 бінарної та бази 16 шістнадцятирічної! Наступного тижня ми вийдемо на бінарну додавання! Залишайтесь на підтримці!

results matching ""

    No results matching ""