Перейти к содержимому


Фотография

HEX-редактор...


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 19

#1 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 20 August 2010 - 19:08

Изображение
Я сам практически не имею опыта в программировании, но вот я часто читаю на форумах и в статьях что-то на подобии "Я извлек из игры текстуру HEX'ом" я знаю что это за редактор и для чего, но я не смог найти инструкцию как им извлекать файлы из игр... Или же это очень сложно и не доступно 'людям_не_знакомым_с_программированием' ?

Если же имеются понятные любому начинающему инструкции как извлекать HEX'ом файлы, было бы здорово их почитать :) Потому что насколько я понял, им можно извлечь файлы даже из таких игр, где не существует инструментов для редактирования ресурсов.

p.s. Если вопрос глупый или ответ на него уже есть на форуме, извиняюсь.

Сообщение отредактировал SILENT_Pavel: 20 August 2010 - 22:09


#2 XEPOMAHT007

XEPOMAHT007

    Активный участник

  • LCSTeam
  • PipPipPip
  • 472 сообщений
  • Пол:Мужчина


Отправлено 20 August 2010 - 20:40

Например я постигал Хекс методом тыка, могу показать как с ним работать на конкретном примере, например как извлечь из GTA LCS что-то похожее на info.zon (предположительно, это объёмы, в которых отображаются привязанные к ним модели, для оптимизации так сказать):
1000000.0, -100000.0, -100000.0,  1000000.0, generic
-467.87433, 411.31039, 787.83582, -1830.0836, commer
-338.18445, 230.50165, 701.81464, -1746.4286, comroad
 219.39145, 18.568237, 518.26276, -749.69202, fortdestroyed
  77.14743, 114.80292, 563.80872, -749.69202, fortstaunton
 685.40082, 146.17627, 1505.7715, -1209.5403, indroads
 501.60175, 383.96289, 1807.8451, -1306.8621, indust
-975.22168, 428.87195, 1743.0469, -1650.8715, leedsbits
-1463.2380, 423.23294, 1700.4484, -1300.4834, leedsbits2
-1307.8527, 599.25787, 1744.3400, -1281.9691, making
-1697.8241, 658.79041, -145.0040, -1071.9205, subroads
-1748.5355, 1350.3230, 249.00775, -1454.1134, suburb
-1321.3948, 628.34717, 1722.8704, -1370.2383, temppart

a4ea86ab343c.gif
BETA 4.0 COMING SOON


#3 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 20 August 2010 - 21:15

XEPOMAHT007
Ммм... а можно по проще пример и по подробнее? Или там документацию по этому поводу есть? :unsure: Ну как бы пошагово и какой именно HEX-редактор юзать, я понимаю что многого требую, но все же...

Сообщение отредактировал SILENT_Pavel: 20 August 2010 - 21:16


#4 XEPOMAHT007

XEPOMAHT007

    Активный участник

  • LCSTeam
  • PipPipPip
  • 472 сообщений
  • Пол:Мужчина


Отправлено 20 August 2010 - 21:55

Попроще - ну например открой какой-нибудь dir-файл и попробуй хексом прочитать следующую информацию из вечной примечательной статьи WIKI:

Элемент (повторяется n-раз, где n - общее количество элементов):

 4 байта  - DWORD	- смещение файла (в блоках) в *.img архиве, относительно его начала
 4 байта  - DWORD 	- размер файла (в блоках) в *.img архиве
24 байта  - CHAR[24] 	- имя файла

a4ea86ab343c.gif
BETA 4.0 COMING SOON


#5 solom

solom

    Активный участник

  • Пользователи
  • PipPipPip
  • 267 сообщений
  • Пол:Мужчина


Отправлено 21 August 2010 - 01:46

Лучше скачаи профессиональный хекс редактор 010 editor. Если знаешь английсский язык, то можешь изучить статью в разделе Help/help topics или просто нажать на клавишу F1.

#6 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 21 August 2010 - 07:55

Определенно 010 Editor. Скачать можно с официального сайта: www.sweetscape.com.
Основной плюс этого шестнадцатиричного редактора - возможность писать удобные шаблоны для структур. Я, например, всегда расписываю какие-либо форматы именно так.
А начинать действительно лучше с вещей попроще - можно взять какой-нибудь формат с известной структурой и попробовать его проанализировать. Так же неплохо бы почитать какую-нибудь документацию по базовым типам и их размерности/шестнадцатиричному представлению.

Если будут конкретные вопросы по существу у кого-либо - можете смело их задавать, подскажу и поделюсь опытом.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#7 bykin

bykin

    Участник

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 21 August 2010 - 12:05

только что скачал 010 editor. смотрю редактор неплохой. но вот вопрос. я начинаю учиться писать шаблоны но вот возникает вопрос. при изучений какого либо фаила нужно же писать какие то структуры. можешь рассказать что такое Dword, Float,Int,char? и кстати если в таблице Template Results всё высвечиваетс то значит что шаблон сделан правильно?

#8 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 21 August 2010 - 15:02

Мне бы просто наглядную инструкцию как извлечь например текстурку загрузочного экрана из архива игры HEX'ом и привести палитру в нормальное состояние, на примере конкретно я быстрее пойму, видео там или со скринами... :unsure:

#9 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 21 August 2010 - 15:52

bykin
Это типы данных величин.

"DWORD" - четырехбайтовая величина, "WORD" - двухбайтовая.
"float" - четырехбайтовая дробная величина, "double" - восьмибайтовая.
"Int" - четырехбайтовая беззнаковая целая величина, "byte" - однобайтовая, "short" - двухбайтовая. "Unsigned"-вариации - те же величины, только со знаком.
Количество байт - то, сколько цифра занимает пространства в памяти, и, следовательно, в самом файле.

Если хочется разобраться с шаблонами - лучше почитать для начала вот это. Могу и на примере простенького *.dir/*.img рассказать.

SILENT_Pavel
Во-первых, скажи название игры. Во-вторых, назови платформу (PS2/PSP). В-третьих, лучше выложить ту текстуру, которую ты хочешь заменить. Если это загрузочный экран, то он хранится не в *.img-архиве, а в одном их loads-файлов. Могу помочь и объяснить все по пунктам, с указанием на необходимый софт и рекомендации по его использованию.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#10 GHOST

GHOST

    Активный участник

  • Пользователи
  • PipPipPip
  • 75 сообщений
  • Пол:Мужчина
  • Город:Тамбов


Отправлено 21 August 2010 - 17:45

Хорошая тема :rolleyes: Я практикуюсь в моддиенге первой Мафии с помощью в этой версии Хекса

Изображение

;) Первое время просто голова опухала) Столько цифр) Сейчас уже лучше, есть продвижения..

#11 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 21 August 2010 - 23:45

Dageron
Хорошо.
____________________________________
Игра: Grand Theft Auto: Liberty City Stories

Платформа: PSP

Используем программу: 010 Editor v3

Цель: Извлечь и заменить HEX'ом некоторые игровые файлы.
____________________________________
Конкретный пример 1, без архива:
____________________________________
В этом (MPLOAD1.CHK) файле есть такая текстура загрузочного экрана мультиплеера. Перенесемся в прошлое, допустим игра только что вышла и еще не изобрели не одного инструмента что бы редактировать подобные тип файлов, и допустим я знаю или хочу проверить есть ли в этом файле текструра, но не имею ничего кроме HEX'а или имею все кроме инструментов, для конкретной игры.
____________________________________
Конкретный пример 2, архив:
____________________________________
В данном архиве (GTA3PSPHR.IMG) мне надо извлечь эту (texture1.chk) текстуру или набор текстур, при условии что я уже научился делать, то что написано в примере 1. Т.е. я уже могу из извлеченного файла архивного выдрать эту (toni_head128_X_8bit) текстуру, тут нет проблем. Так вот предположим я даже не знаю имени файла - набора текстур, как мне этот архив сканировать или просматривать HEX'ом и вытащить оттуда нужные файлы или вообще какие-нибудь файлы, при том условии что допустим программ для извлечения их еще нет, как в случае с GTA CW? А потом еще и заменить на свой отредактированный вариант.
____________________________________
Все файлы, нужные для этого в этом архиве (на всякий случай)

Если не сложно распиши пожалуйста подробно как делать описанные выше примеры как бы для чайников, заранее большое спасибо! :)

Сообщение отредактировал SILENT_Pavel: 16 May 2012 - 18:50


#12 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 22 August 2010 - 10:49

Хорошо, начнем с первого пункта.
Постараюсь объяснить весь ход работы, особенно отдавая должное логическим рассуждениям. Предупреждаю сразу - рассказ аналитический, здесь я все попытался расписать по-порядку сам подход к подобным задачам.

В любом текстурном файле (или же текстурной директории) надо уметь разграничивать "блок описателей" и "блок графики", поскольку подход к их изучению принципиально разный. Собственно, останавливаться сейчас на "блоке описателей" смысле нет по причине того, что *.chK - нехороший для этого пример. Я сам потратил уйму времени, прежде чем вывел приличную структуру. Гораздо лучше остановиться на консольных графических форматах, поскольку достаточно понять их устройство в одной игре, как это практически один-в-один наложится на любую другую.
Итак, не вдаваясь в конкретное строение *.chk, разберем все по-порядку.

Определить наличие графики в файле можно просто визуально. Наглядно она представляет собой большой набор "блоков", каждый из которых имеет много подряд повторяющихся одинаковых байт. К примеру, в файле MPLOAD1.CHK как раз и содержится такая текстура.

Изображение

Открываем текстуру в 010. Что мы видим? Первые 96 байт сразу отбрасываем, поскольку это заголовок и блок описателей, сейчас он нам неинтересен. А вот дальше идет большой массив нулей и некие "жидкие" данные.

Раз файл с консоли (PSP/PS2), значит наличие "сжатой" графики весьма сомнительно и скорее всего текстура в обычном формате "битовая матрица+палитра".
В LCS/VCS так и есть - текстуры либо 8bpp, либо 4bpp ("Bits Per Pixel" - число бит, отводимых на один пиксель). Для 8bpp размер рассчитывается как "Высота*Ширину", для 4bpp - "Высота*Ширину/2".

Итак, допустим, что мы знаем, что текстура 512*256 и 8bpp (все равно в большинстве случаев при разборе консольных форматов все это определяется экспериментально и методом научного тыка). Следовательно, размер блока графики равен 131072 байт.

Нажимаем Ctrl+G, вводим в появившемся окне 131168 (131072+96=131168). Следует обратить внимание на то, чтобы стоял параметр Decimal, а не Hex - мы работаем не в шестнадцатиричной, а в десятичной системе счисления (для удобства восприятия).

Изображение

Итак, мы попали на некие непонятные на первый взгляд данные. 8-битную палитру узнать легко - это большой массив, который визуально выглядит очень симметричным. 4-битную палитру обычно узнать еще проще - это маленький массив, визуально так же симметричный. Мы сместились на оффсет 131168, хотя явно видно, что палитра начинается с 131232. Это значит, что начальный блок графических данных начинается не с оффсета 96, а с оффсета 160.

Что же представляет из себя сама палитра? Массив цветов. На каждый цвет отводится 4 байта - "blue, green, red, alpha" (это на консолях, на ПК другой порядок - "red, green, blue, alpha"). Число элементов массива определяется по параметру bpp, для 8 бит - 256 (2^8=256), для 4 бит - 16 (2^4=16). Следовательно, 8-битная палитра занимает 256*4=1024 байта, 4-битная - 16*4=64 байта.

Теперь заменим текстуру, например, вот на эту:
Изображение

Стоит помнить про то, что простого сохранения в raw-режиме недостаточно, ведь на PSP используется swizzling (грубо говоря и не вдаваясь в тонкости - это алгоритм адаптации графики для консоли). Надо пересохранить эту текстуру в нужном raw-формате и позволяет это сделать GIMP, со специальным RAWTex-плагином (нужно поместить файл RAWTex.exe в GIMP-2.0/lib/gimp/2.0/plug-ins).
Конечно это не идеальный и, возможно, некрасивый метод, но он работает и позволяет обойтись без написания своего софта.

Открываем GIMP, а в нем - нашу картинку. Теперь ее надо адаптировать под нужный режим цветов.
"Изображение"->"Режим"->"Индексированные"->"Создать оптимальную палитру" и в "Максимальном числе цветов" указать нужно 256 (т.к. у нас 8 бит).
Теперь сохраняем. "Файл"->"Сохранить как"->"RAW Texture"

Изображение

В поле "Texture Format" следует указать "GU_PSM_T8" и установить галочку "Swizzle Mode (PSP only)". "Mipmaps" в данном случае - "none".

Должны создаться три файла:
texture.h - нам неинтересен, это C++ заголовок, в котором указываются все параметры и характеристки текстуры, это для тех, кто homebrew на PSP делает.
texture.raw - текстура.
texture.rawpal - палитра текстуры.
(Следует обратить внимание на то, чтобы в пути сохраняемого файла не было русских символов, иначе возникнет ошибка.)

Открываем *.raw и *.rawpal в 010, а так же наш оригинальный *.chk. Смещаемся в *.chk к оффсету 160 (это начало блока графики, как мы экспериментально пределили) и копируем туда все содержимое из *.raw. Если все получилось правильно, то мы должны были оказаться на оффсете 131232, т.е. начале массива цветов (палитры). Теперь копируем туда все содержимое *.rawpal.

Результат (готовый *.chk-файл).
Вот и получился достаточно стильный загрузочный экран, можешь проверить. :)

p.s. Если есть еще вопросы - задавай. Только если уж совсем ничего не понятно, то лучше начинать с вещей попроще вроде обычных *.img-архивов (не LCS/VCS!) или же подобных "не запутанных" вещей.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#13 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 28 August 2010 - 16:20

Спасибо большое за ответ :)

#14 bykin

bykin

    Участник

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 12 September 2010 - 09:54

Dageron можешь помочь. В общем я хочу узнать как сделать так, чтобы байты FF FF высвечивались зелёным цветом. В общем код цвета у меня есть,но я не знаю как сделать так,чтобы именно эти байты отображались зелёным цветом. Можешь сказать как?

#15 solom

solom

    Активный участник

  • Пользователи
  • PipPipPip
  • 267 сообщений
  • Пол:Мужчина


Отправлено 24 October 2010 - 06:48

Дагерон расскажи как ты нашёл у DIR файла значение байтов? Ну например про файл .DIR 24 байта - имена. Я вот непонимаю лично., И ещё - 2 числа вместе это 1 байт?

Сообщение отредактировал solom: 24 October 2010 - 06:50


#16 TuborgShadow

TuborgShadow

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 01 April 2011 - 10:41

Народ, подскажите плиз... Как в Саньке (GTASA) с помощью хекса (у меня HxD) изменять характеристики или параметры?

Сообщение отредактировал TuborgShadow: 01 April 2011 - 10:42


#17 solom

solom

    Активный участник

  • Пользователи
  • PipPipPip
  • 267 сообщений
  • Пол:Мужчина


Отправлено 01 April 2011 - 10:43

Народ, подскажите плиз...
Как в Саньке (GTASA) с помощью хекса (у меня HxD) изменять характеристики или параметры?

Какие ты имеешь ввиду параметры и какой ты хочешь отредактировать файл?

#18 TuborgShadow

TuborgShadow

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 01 April 2011 - 12:03

Я говорю не про файл, а про параметры внутри игрового процесса... Ну нечто вроде того, что этими редакторами делают с Hellgate: London

#19 SILENT_Pavel

SILENT_Pavel

    Активный участник

  • Пользователи
  • PipPipPip
  • 937 сообщений


Отправлено 01 April 2011 - 17:52

Он наверное имеет ввиду редактирование процессов игры через хекс прямо в оперативной памяти, этим иногда балуются матерые, творят сумашедшие вещи порой :-), или на подобии, или напиши подробнее что там делают с хелгейтом и пруф предоставь...

#20 ZepeR

ZepeR

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Ромхакинг


Отправлено 26 March 2019 - 12:15

Не остались ли у кого картинки с этой страницы ? интересно на них посмотреть.

На своей странице Dageron http://web.archive.o...ageron.com/?p=6 писал о (010 Editor – шаблоны и их функциональность) там он выкрадывал архив с примерами файла и шаблона для 010 Editor не остался ли у кого этот архив с шаблонами ?
Я от него нашёл только два шаблона на http://www.gtamodding.ru/wiki/WTD и http://gtamodding.ru/wiki/WDR

По 010 Editor ещё нашёл
https://habr.com/ru/post/213639/
https://sohabr.net/habr/post/213211/
https://sohabr.net/post/213435/






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных