Начнем с азов.
Хекс система имеет слегка "непривычный" нам (бренным телам) набор чисел. А именно: 0 1 2 3 4 5 6 7 8 9 A B C D E F. ЧислА G (да и всех последующих) в ней нет, поэтому при изменении значений смысла писать эту букафку тоже нет. Любой фаил, который вы откроете хекс-редактором в первую очередь предстанет перед вами в виде наборов этих циферо-буковок. По идее все данные там идут друг за дружкой, но для удобства программы-редакторы разбивают их на пары (0Е 3А и т.д.). Такие пары по буржуйски зовутся оффсетами (offset) или по нашински - байтами (Напомню, что 1 байт = 2^8 бит = 256 значений, которые хексом кодируются всеми различными парами от 00 до FF). Так же каждый байт имеет свой адрес, который тоже записывается в хекс.
Получение хекс значения.
Для того, чтобы получить аналог нашего с вами числа в хекс существует несколько способов:
1. Самый доступный. При условии что у вас винда.
Открываем калькулятор и включаем в нем инженерный вид.
Перед нами великое творение мелкомягких во всем его великолепии. Слева вверху мы видим незамысловатые надписи Hex и Dec (остальные нас не интересуют).
Как уже наверное некоторые догадались Hex - режим отображения в хекс, Dec - в привычной нам 10 СС. Для того чтобы получить хекс значение - выделяем Dec и вводим наше с вами число. Затем тыкаем на Hex и... бах! Получаем значение в хекс-формате. Эта незамысловатая утилитка разбивает значения в группы по 4. Этого можно не пугаться, итоговое значение при копировании будет таким каким нам нужно. Кстати зачем она это делает - ума не приложу.. наверное понтуецо =)
Для получения десятичного числа из хекс делаем все с точночстью до наоборот. Т.е. сначала тыкаем Hex, вводим число и тыкаем Dec.
2. Для счастливых обладателей WinHex'а.
----
И сказал пророк:"Открой ВинХекс и тыкни на F8. Будет тебе счатье до конца дней твоих!"
----
Следуя наказам пророка поступаем в точности как он говорил. И, о чудо! Перед нами появляется великое окошечко!
Теперь все, что от нас требуется это ввести либо хекс значение либо десятичное. Они вводятся слева и справа соответственно (для тех, кто в танке: 1000 - это десятичное число, 3Е8 - хекс). Далее тыкается ентер и мы получаем нужное нам число в соответствующей графе. Усе.
3. Для продвинутых читеров.
Люди использующие СЕ (Cheat Engine) могут прибегнуть к оч хитрой фишке этой программы. А именно:
В выделенном мною (красным прямоугльничком) поле ввести значение нуждающееся в переводе (при вводе хекс-значения - галочка Hex есть, при вводе десятичного значения галочки нет)... и... поставить или убрать соответственно галочку! Усе. Число переведтся в выбранную СС.
Запись хекс значения
Трудная часть закончилась. Теперь начнется АД. Дело в том, что все числа хранятся в "неправильном" порядке. А именно задом-наперед.
Для того, чтобы нам правильно вписать число в память, нужно проделать несколько простых действий:
1. Разбить наше с вами хекс число на пары. Начинать с правого конца. Для примера я возьму длинное число:
009624D4
В итоге получаем:
00 96 24 D4
Если чисел нечетное количество, к примеру 3Е8, то оставшееся одинокое число (оно всегда должно получаться слева) дополнить ноликом. 03 Е8.
Так же замечу, что если вам известо, что в данной области памяти хранится число определенного размера (к примеру 4 байта), а цифорок даже по прикидкам "на глаз" слегка меньше, то надо дописать нолики до этой размерности. На примере того же числа: 00 00 03 Е8.
2. Поменять байты местами. Т.е. последний станет первым, предпоследний - вторым и т.д. В нашем случае получаем:
D4 24 96 00
Для второго числа:
Е8 03 00 00
3. Полученную последовательность спокойно вписывать в память.
Для получения правильного значения в 10 СС делаем все в обратной последовательности (от пункта 3 к пункту 1).
Незнанием этого "момента" объясняются многие косяки юзеров по типу: "ААА!! Изменил этот пакет и меня выкинуло!!!" Ни для кого не секрет, что первые два байта в пакете (в трафике РФ) - его длина в хекс.
Первые два байта - 12 00. При правильном переводе в 10 СС мы получим длину равную 18. Подсчитав число байт, убедимся, что значение верное. Дык вот. При изменении длины пакета, длину тоже надо менять. При чем правильно, а не тупым переводом из 10 СС в хекс.
Copyright с zhyk
Добавлено через 17 минут
Новичкам будет полезно...
Последний раз редактировалось Rofl25; 26.11.2008 в 07:28.
Причина: Добавлено сообщение