Добавление байтов в файл с помощью Hex Editor

Я пытаюсь изменить текст в некоторых файлах игры, используя шестнадцатеричный редактор HxD.

Когда я вижу предложение в шестнадцатеричном редакторе, например Powered by me, оно имеет длину 13 символов. Я обнаружил, что заменяющее предложение также должно состоять из 13 символов, чтобы оно работало. Если длина не 13 символов, игра по какой-то причине не загрузится.

Я добавил байты в файл. Теперь мне нужно выяснить, как заставить его работать. Как я могу заставить файл работать с моими добавленными байтами?


person Joost de Valk    schedule 05.04.2017    source источник
comment
Я предполагаю, что решение вашей проблемы может быть связано с игрой, к которой вы стремитесь, поэтому вам лучше указать это в своем вопросе.   -  person rudolf_franek    schedule 05.04.2017


Ответы (1)


Вероятно, он должен быть такой же длины или короче (например, дополнен нулями) из-за указателей внутри самого файла. Если файл игры ожидает структуру или функцию с индексом XXXX, а вы сдвигаете все на пять байт, то это не сработает. Как это исправить? Вам потребуется глубокое знание формата файла игры. Затем вы можете приступить к пересмотру того, что еще необходимо пересмотреть.

Кроме того, Windows DLL хранит свои строки и диалоги в отдельной области ресурсов, и их на удивление легко редактировать с помощью редактора ресурсов!

person Yimin Rong    schedule 05.04.2017
comment
Или короче говоришь? Файл имеет тонны 0 внизу, если я удалю около 30 из них, как вы думаете, это сработает? - person Joost de Valk; 05.04.2017
comment
Нет, это должно быть в пространстве, занимаемом строкой, например. Powered by me можно изменить на Joost Rules__, где '_' означает '\x00' или null, или, может быть, даже пробелы. Вы должны убедиться, что все после строки остается выровненным. - person Yimin Rong; 05.04.2017
comment
Помимо необходимости интимных знаний, есть ли другой способ исправить это? - person Joost de Valk; 05.04.2017
comment
Не совсем. Некоторые форматы файлов стандартизированы, и вы можете использовать редактор ресурсов. Редактор будет отслеживать все указатели для вас. - person Yimin Rong; 05.04.2017
comment
Хорошо, я попробую редактор ресурсов. Большое спасибо. - person Joost de Valk; 05.04.2017
comment
Итак, например, предположим, что я должен изменить строку в конце (приблизительно) файла, можно ли это сделать, если я буду искать адреса от этой точки до конца и смотреть, нужно ли мне изменить какой-либо указатель? (например, для каждого адреса до конца я бы посмотрел, есть ли указатели на этот адрес, и изменил бы их на новое место) Будет ли это работать? - person DADi590; 25.02.2020
comment
@DADi590 DADi590 Если бы вы сохранили исходную длину строки такой же, вам не нужно было бы менять указатели. Оптимизированный код может делать странные вещи, например добавлять к существующему указателю, чтобы получить новый указатель, или использовать смещение к существующему указателю, и в этом случае поиск и замена указателей не будут работать на 100%. В любом случае попробовать не помешает. - person Yimin Rong; 26.02.2020
comment
Ах да, я имел в виду изменение длины. Интересно однако. Спасибо! - person DADi590; 27.02.2020