PDA

Просмотр полной версии : [Tutorial] Использование HEX значений.


Глюконатор
24.05.2008, 20:47
Почитав наш любимый форум и пообщавшись с нубами я понял одну вещь.. Много юзеров этого форума имеют плохие представления о шестнадцатиричной системе счисления (далее 16 СС или хекс). Дабы уменьшить пустоты в этой области знаний пишу данный ликбез.

Начнем с азов.
Хекс система имеет слегка "непривычный" нам (бренным телам) набор чисел. А именно: 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). Так же каждый байт имеет свой адрес, который тоже записывается в хекс.

Получение хекс значения.
Для того, чтобы получить аналог нашего с вами числа в хекс существует несколько способов:


Самый доступный. При условии что у вас винда).
Открываем калькулятор и включаем в нем инженерный вид.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Перед нами великое творение мелкомягких во всем его великолепии. Слева вверху мы видим незамысловатые надписи Hex и Dec (остальные нас не интересуют).
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Как уже наверное некоторые догадались Hex - режим отображения в хекс, Dec - в привычной нам 10 СС. Для того чтобы получить хекс значение - выделяем Dec и вводим наше с вами число. Затем тыкаем на Hex и... бах! Получаем значение в хекс-формате. Эта незамысловатая утилитка разбивает значения в группы по 4. Этого можно не пугаться, итоговое значение при копировании будет таким каким нам нужно. Кстати зачем она это делает - ума не приложу.. наверное понтуецо =)
Для получения десятичного числа из хекс делаем все с точночстью до наоборот. Т.е. сначала тыкаем Hex, вводим число и тыкаем Dec.
.
Для счастливых обладателей WinHex ([Ссылки могут видеть только зарегистрированные и активированные пользователи])'а.
----
И сказал пророк:"Открой ВинХекс и тыкни на F8. Будет тебе счатье до конца дней твоих!"
----
Следуя наказам пророка поступаем в точности как он говорил. И, о чудо! Перед нами появляется великое окошечко!
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Теперь все, что от нас требуется это ввести либо хекс значение либо десятичное. Они вводятся слева и справа соответственно (для тех, кто в танке: 1000 - это десятичное число, 3Е8 - хекс). Далее тыкается ентер и мы получаем нужное нам число в соответствующей графе. Усе.
.
Юзерам, имеющим в своем арсенале Hex Editor Neo ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Для начала стоит открыть Base Convertor, если он у еще не открыт конечно =) Для свершения сего чудного действа следует пойти по пути View -> Tool Windows -> Base Converter.
Перед нами в виде доп. панельки появится незамысловатое окошечко с кучей полей... из которых нас интересуют только Decimal и Hex.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Люди, еще не потерявщие цепочку логических рассуждений наверняка догадались, что в поле Decimal вводится десятичное число, а его шестнадцатиричный аналог можно будет лицезреть в поле Hex. Конвертация идет незамделительно, так что никаких дополнительных телодвижений не требуется.
.
Для продвинутых читеров.
Люди использующие СЕ (Cheat Engine, есть в архиве темы ([Ссылки могут видеть только зарегистрированные и активированные пользователи])) могут прибегнуть к оч хитрой фишке этой программы. А именно:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
В выделенном мною (красным прямоугльничком) поле ввести значение нуждающееся в переводе (при вводе хекс-значения - галочка Hex есть, при вводе десятичного значения галочки нет)... и... поставить или убрать соответственно галочку! :forward: Усе. Число переведтся в выбранную СС.


Запись хекс значения
Трудная часть закончилась. Теперь начнется АД. Дело в том, что все числа хранятся в "неправильном" порядке. А именно задом-наперед.
Для того, чтобы нам правильно вписать число в память, нужно проделать несколько простых действий:

Разбить наше с вами хекс число на пары. Начинать с правого конца. Для примера я возьму длинное число:
009624D4

В итоге получаем:
00 96 24 D4

Если чисел нечетное количество, к примеру 3Е8, то оставшееся одинокое число (оно всегда должно получаться слева) дополнить ноликом. 03 Е8.

Так же замечу, что если вам известо, что в данной области памяти хранится число определенного размера (к примеру 4 байта), а цифорок даже по прикидкам "на глаз" слегка меньше, то надо дописать нолики до этой размерности. На примере того же числа: 00 00 03 Е8.
.
Поменять байты местами. Т.е. последний станет первым, предпоследний - вторым и т.д. В нашем случае получаем:
D4 24 96 00

Для второго числа:
Е8 03 00 00
.
Полученную последовательность спокойно вписывать в память.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Для получения правильного значения в 10 СС делаем все в обратной последовательности (от пункта 3 к пункту 1).


Незнанием этого "момента" объясняются многие косяки юзеров по типу: "ААА!! Изменил этот пакет и меня выкинуло!!!" Ни для кого не секрет, что первые два байта в пакете (в трафике РФ) - его длина в хекс.

Вот для примера пакет:
12 00 04 05 40 3F 4C 00 13 1E A6 FF 78 0B 81 1D 2B 0B

Первые два байта - 12 00. При правильном переводе в 10 СС мы получим длину равную 18. Подсчитав число байт, убедимся, что значение верное. Дык вот. При изменении длины пакета, длину тоже надо менять. При чем правильно, а не тупым переводом из 10 СС в хекс.

На этом спешу закончить.

__________________________________________________
Все (не считая нубских) вопросы оставляйте тут. По мере возможностей буду деать FAQ. Вопросы типа: "Все сделал как ты написал - ничо ни работаит!" и прочие нубские будут удаляться. Расписывать еще (!) подробнее я не собираюсь, ибо считаю что получится некое неуважение к форумчанам (типа ваще для дибилоф).

Yohan
24.05.2008, 21:15
Ничего принципиально нового для меня, но для начинающих будет не то что очень, это будет архиполезно
А втом и весь прикол, что без знания таких простых весчей крупного ничего не сделаешь.

stic
26.05.2008, 21:36
а етот принцип и в едф файлах??

-(NY)-
26.05.2008, 21:48
Вообщем,я думаю Глюк , расписывая это, подразумевал ЕДФ .

stic
30.05.2008, 19:57
ваше тру все обеснил я б 5 спосибок дал ))

123123123
05.06.2008, 23:34
Все сделал, 1 загвоздка, новое значение не вписывается

Глюконатор
06.06.2008, 00:36
Значит не все сделал.

123123123
06.06.2008, 01:17
В принцепи все работает, когда нажимаю обмен у банкира, в окне денег появляется введеная в СЕ сумма, но обменя ничего незя, пишет обмен не удался, и в инвертаре деньги ослись прежние, значение не поменялось, кто может помочь, отпишитесь

realmrak
06.06.2008, 02:09
Вот тебе и результат - ты увидел введенную в СЕ сумму денег. А обменять ничего нельзя, потому что количество денежек проверяется сервером, а СЕ работает на стороне клиента.

JEY72
15.06.2008, 23:12
Последняя версия программы Dehex, программа написана мной дабы облегчить жизнь тем людям кто неочнь дружит с Hex системой счисления, проект является полностью законченым и далее развиваться небудет. Критика по программе также не принимается!

DimenSi
12.08.2008, 06:39
я не понял какой это программой все делать?

Глюконатор
12.08.2008, 12:36
пост перечитай. вдумчиво. потом еще раз перечитай. подумай, что ты упустил в первый раз. потом почитай еще раз. может поймешь.

warez42rus
19.09.2008, 10:27
Народ подскажите в item.edf как понять где чё значит. Я хачу допустим какийнить вещи подредактировать, а там спошные байты. Справа текст но там не текс а х пойми чё.
Зы сильна какашками не кидаца я ток учусь:confused:

Leo_ня
19.09.2008, 10:30
вот для примера пакет:
код:
12 00 04 05 40 3f 4c 00 13 1e A6 Ff 78 0b 81 1d 2b 0b
первые два байта - 12 00. при правильном переводе в 10 сс мы получим длину равную 18. подсчитав число байт, убедимся, что значение верное. дык вот. при изменении длины пакета, длину тоже надо менять. при чем правильно, а не тупым переводом из 10 сс в хекс.

Предлагаю способы, как проще узнать длину пакета, не перещитывая каждый байтиг.

например: у нас есть пакет, который отправляет в чат сообщение: "флудфлудфлуд". (см. скринадын)

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Мы изменяем его, добавляем к "флудфлудфлуд" "ищофлуд х_х" (см. скриндва). Из-за этого изменяется длина пакета. Нам говорят: "Итоговый пакет: [ok] (добавлены 2 байта размера)" (если указана фунцкия "автоматическое определение" или "всегда добавлять"). То есть к пакету с уже 2-я байтами размера, прибавились ещё два (2D 00 сначала, потом 3A 00 2D 00). Естественно, если на сервер придёт такой пакет, то он не сможет его понять, т.к. ID пакета сдвинулся на два байта направо. Если фунцкия автоопределенияивсегдадобавления отключена, то сервер всё равно нас отключит, т.к. длина пакета не будет совпадать с байтами размера (это такая защита).

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Что же делать? Точнее что делать мы знаем.. но этот способ слишком долгий :) Врядли кто-то захочет пересчитывать все байты каждый раз, тем более, если пакет длинный, то это просто невозможно.

Вот два способа:
Первый:
Нам добавили два байта размера: "3A 00". (см. скриндва)
Естественно эти два байта уже посчитаны. Их надо вычесть. То есть 3A - 2 = 38. Нужно вместо старого размера (2D) поставить эти 38. (см. скринтри)

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Второй способ:
Для тех кто не умеет отнимать от HEX значений, и для тех кому так будет проще :) (скорее всего даже удобнее этот)

Выделяем в пакете два первых байта (размера), удаляем их. Теперь ВПФ сам будет считать байты в пакете, и при отправке вставлять два байта размера. Теперь можно изменять сам пакет, добавлять, убавлять байты, а про байты размера забыть. (см. скринчитыри)

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Теперь можно спокойно отправлять пакет.

Пользуйтесь чем удобнее)

зы: кто-то говорил, что максимальная длина пакета = 255 байтов.. Не правда :) длина пакета считается то в двух байтах. То есть самая большая длина пакета = FF FF (65535 байтов). Но ВПФ позволяет только 1802 (6146 байта)

Добавлено через 3 минуты
Народ подскажите в item.edf как понять где чё значит. Я хачу допустим какийнить вещи подредактировать, а там спошные байты. Справа текст но там не текс а х пойми чё.
Зы сильна какашками не кидаца я ток учусь
[Ссылки могут видеть только зарегистрированные и активированные пользователи] мой же гайд))
ты просто не раскодировал .edf

TheJumper
01.01.2010, 20:23
Почитав наш любимый форум и пообщавшись с нубами я понял одну вещь.. Много юзеров этого форума имеют плохие представления о шестнадцатиричной системе счисления (далее 16 СС или хекс). Дабы уменьшить пустоты в этой области знаний пишу данный ликбез.

Начнем с азов.
Хекс система имеет слегка "непривычный" нам (бренным телам) набор чисел. А именно: 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). Так же каждый байт имеет свой адрес, который тоже записывается в хекс.

Получение хекс значения.
Для того, чтобы получить аналог нашего с вами числа в хекс существует несколько способов:


Самый доступный. При условии что у вас винда).
Открываем калькулятор и включаем в нем инженерный вид.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Перед нами великое творение мелкомягких во всем его великолепии. Слева вверху мы видим незамысловатые надписи Hex и Dec (остальные нас не интересуют).
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Как уже наверное некоторые догадались Hex - режим отображения в хекс, Dec - в привычной нам 10 СС. Для того чтобы получить хекс значение - выделяем Dec и вводим наше с вами число. Затем тыкаем на Hex и... бах! Получаем значение в хекс-формате. Эта незамысловатая утилитка разбивает значения в группы по 4. Этого можно не пугаться, итоговое значение при копировании будет таким каким нам нужно. Кстати зачем она это делает - ума не приложу.. наверное понтуецо =)
Для получения десятичного числа из хекс делаем все с точночстью до наоборот. Т.е. сначала тыкаем Hex, вводим число и тыкаем Dec.
.
Для счастливых обладателей WinHex ([Ссылки могут видеть только зарегистрированные и активированные пользователи])'а.
----
И сказал пророк:"Открой ВинХекс и тыкни на F8. Будет тебе счатье до конца дней твоих!"
----
Следуя наказам пророка поступаем в точности как он говорил. И, о чудо! Перед нами появляется великое окошечко!
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Теперь все, что от нас требуется это ввести либо хекс значение либо десятичное. Они вводятся слева и справа соответственно (для тех, кто в танке: 1000 - это десятичное число, 3Е8 - хекс). Далее тыкается ентер и мы получаем нужное нам число в соответствующей графе. Усе.
.
Юзерам, имеющим в своем арсенале Hex Editor Neo ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Для начала стоит открыть Base Convertor, если он у еще не открыт конечно =) Для свершения сего чудного действа следует пойти по пути View -> Tool Windows -> Base Converter.
Перед нами в виде доп. панельки появится незамысловатое окошечко с кучей полей... из которых нас интересуют только Decimal и Hex.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Люди, еще не потерявщие цепочку логических рассуждений наверняка догадались, что в поле Decimal вводится десятичное число, а его шестнадцатиричный аналог можно будет лицезреть в поле Hex. Конвертация идет незамделительно, так что никаких дополнительных телодвижений не требуется.
.
Для продвинутых читеров.
Люди использующие СЕ (Cheat Engine, есть в архиве темы ([Ссылки могут видеть только зарегистрированные и активированные пользователи])) могут прибегнуть к оч хитрой фишке этой программы. А именно:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
В выделенном мною (красным прямоугльничком) поле ввести значение нуждающееся в переводе (при вводе хекс-значения - галочка Hex есть, при вводе десятичного значения галочки нет)... и... поставить или убрать соответственно галочку! :forward: Усе. Число переведтся в выбранную СС.


Запись хекс значения
Трудная часть закончилась. Теперь начнется АД. Дело в том, что все числа хранятся в "неправильном" порядке. А именно задом-наперед.
Для того, чтобы нам правильно вписать число в память, нужно проделать несколько простых действий:

Разбить наше с вами хекс число на пары. Начинать с правого конца. Для примера я возьму длинное число:
009624D4

В итоге получаем:
00 96 24 D4

Если чисел нечетное количество, к примеру 3Е8, то оставшееся одинокое число (оно всегда должно получаться слева) дополнить ноликом. 03 Е8.

Так же замечу, что если вам известо, что в данной области памяти хранится число определенного размера (к примеру 4 байта), а цифорок даже по прикидкам "на глаз" слегка меньше, то надо дописать нолики до этой размерности. На примере того же числа: 00 00 03 Е8.
.
Поменять байты местами. Т.е. последний станет первым, предпоследний - вторым и т.д. В нашем случае получаем:
D4 24 96 00

Для второго числа:
Е8 03 00 00
.
Полученную последовательность спокойно вписывать в память.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Для получения правильного значения в 10 СС делаем все в обратной последовательности (от пункта 3 к пункту 1).


Незнанием этого "момента" объясняются многие косяки юзеров по типу: "ААА!! Изменил этот пакет и меня выкинуло!!!" Ни для кого не секрет, что первые два байта в пакете (в трафике РФ) - его длина в хекс.

Вот для примера пакет:
12 00 04 05 40 3F 4C 00 13 1E A6 FF 78 0B 81 1D 2B 0B

Первые два байта - 12 00. При правильном переводе в 10 СС мы получим длину равную 18. Подсчитав число байт, убедимся, что значение верное. Дык вот. При изменении длины пакета, длину тоже надо менять. При чем правильно, а не тупым переводом из 10 СС в хекс.

На этом спешу закончить.

__________________________________________________
Все (не считая нубских) вопросы оставляйте тут. По мере возможностей буду деать FAQ. Вопросы типа: "Все сделал как ты написал - ничо ни работаит!" и прочие нубские будут удаляться. Расписывать еще (!) подробнее я не собираюсь, ибо считаю что получится некое неуважение к форумчанам (типа ваще для дибилоф).





Читал ету ****ь 20 минут. нех*я не понял. вообще что ето такое и нах*й оно нужно??) обьясните норм языком)):wtf:

Vendeta
01.01.2010, 20:50
Читал ету ****ь 20 минут. нех*я не понял. вообще что ето такое и нах*й оно нужно??) обьясните норм языком)):wtf:
а оно тебе зачем? один фиг ничего непоймешь

TheJumper
11.01.2010, 14:06
а зачем тогда писали?)

manstrrr
11.01.2010, 14:51
Вот за твои завуалированные *** полагается бан.
Кто захотел, тот понял.

Leo_ня
11.01.2010, 14:58
а зачем тогда писали?)
Гайд по шестнадцатиричной СС, переводам туда и обратно. Эти знания необходимы для редактирования пакетов, файлов хекс-редакторами.

Тебе оно не нужно, забей.

DrDizel
21.04.2010, 17:21
Ааааатличная темка..... тут можно понять суть прграммы СЕ, что я и искал, и как пользоваться) теперь осталось выпрямить руки и включить мОск для дальнейшего совершенствования!) Сяпки!!!!

Leo_ня
21.04.2010, 17:30
Ааааатличная темка..... тут можно понять суть прграммы СЕ, что я и искал, и как пользоваться) теперь осталось выпрямить руки и включить мОск для дальнейшего совершенствования!) Сяпки!!!!
Как я давно не видел юзеров, которые смогли понять это о_о

AcramanchiK
07.04.2012, 00:31
Хмм, странно вышло з первого раза спасибо, только проблема одна была з Hex Editor Neo

Gomer_simpson
11.08.2012, 18:41
ппц

Самурей
17.08.2012, 17:33
Спс тема очень помогла.

MadBee
17.08.2012, 18:34
Позновательно!

Feafea
04.01.2013, 01:42
Полезный гайд, на досуге почитаю:)

Glamurka
04.01.2013, 21:31
не могу вписать новое значение...

MaksMathis
09.12.2014, 14:59
Добрый день, помогите разобраться с данным документом. Только не судите строго!
1. Есть документ [Ссылки могут видеть только зарегистрированные и активированные пользователи] при открытии пишет что документ Бинарный, но не которые люди утверждают, что эти данные можно изменить с помощью Hex редактора и найти-изменить то что мне надо.
2. В документе мне надо найти цифровые данные! число 500 и заменить его на 999999 , сохранить его и подложить на прежнее место.
3. Дело в том что открыть та я его могу, но там такая Белиберда, что мне не под силу разобрать, как вообще эти данные найти.
Помогите, или дайте направление как и где капать.