Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2009, 13:08
bonani bonani вне форума
Прохожий
 
Регистрация: 13.02.2009
Сообщения: 2
Репутация: 10
По умолчанию Принцип работы с HEX редактором

Привет, ребята.
Введу вас в курс дела. Есть игра, у каждого... как сказать... ну пускай, юнита есть свои параметры. Мне нужно их изменить. Пытался я провернуть это нечистое дело. Надо сказать не безуспешно. Узнал в каких .img файлах хранятся скилы и даже в каком .bin файле. Вытащил этот бинарник. Узнал, что такие файлы можно редактировать HEX редактором. И вроде бы уже осталось всего ничего, но вот беда - открыв его в WinHex я понял, что ничего не понимаю.
Ковырял гугл, понял что HEX-редактор — это тип программ для редактирования и просмотра двоичных данных в шестнадцатеричном представлении. Стал читать статьи, в которых проводятся какие то действия в хекс редакторе. Но разобраться так и не получилось, т.к они в основном написаны для опытных людей(
Нашел на вашем сайте эту статью и решил осмелится попросить у вас подсказки.
Объясните пожалуйста принцип работы с hex редакторами, например с WinHex. Или ткните носом на какой нибудь мануал.
Информация, которая должна хранится в моих 2 бинарниках примерно такая:
player1 stats1 stats2 .....
player2 stats1 stats2 .....
и так далее
Но где как и чего - ничего не пойму. Ребят помогите плиз. Я не задрот, который хочет начитерить. Мне в школе нравилось программированием, работал немного в делфи. И сейчас мне просто очень интересно понять эту тему, дойти до конца.
На всякий случай вот эти два бинарника.

Последний раз редактировалось bonani, 13.02.2009 в 13:12.
Ответить с цитированием
  #2  
Старый 15.02.2009, 05:05
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Hex редактор просто показывает тебе из каких байт состоит файл, и ты можешь эти байты заменять, удалять или добавлять новые.
Проблема в том, что тебе нужно найти нужные байты. Вся суть в том, что программа, которая создавала сей бинарник записала в него нужную информацию (последовательность байт), но неизветно каким методом она (программа) пользовалась. Т.е. эта прога могла использовать кокой либо метод шифрования (что очень даже может бы), метод архивации данных (тоже не исключено) или просто записала информацию в своей кодировке (т.е. если в кодировке ASCII сивол "A" имеет код 65, то программа могла использовать для этого символа другой код).
Тебе нужно узнать метод записи информации в бинарник, а это уже посложнее, чем работа с Hex редактором.
Ответить с цитированием
  #3  
Старый 15.02.2009, 21:59
bonani bonani вне форума
Прохожий
 
Регистрация: 13.02.2009
Сообщения: 2
Репутация: 10
По умолчанию

Karsh, спасибо за ответ. Я так и думал, что информация зашифрована.
Скажите пожалуйста, есть ли какие то способы узнать метод записи информации в бинарник? Какие то программы для расшифровки что ли...
В самой игре можно редактировать скилы и тогда информация сохраняется в совсем другой бинарник, открыв который в HEX редакторе все понятно, все видно. А вот файлы с дефолтными параметрами не разобрать... Хотелось бы всетаки попробовать добиться положительного результата, а не опускать руки...
Ответить с цитированием
  #4  
Старый 16.02.2009, 17:16
Grunch Grunch вне форума
Новичок
 
Регистрация: 08.04.2008
Адрес: Краснодар
Сообщения: 52
Репутация: 10
По умолчанию

Ну, для начала, можно попробовать так (допустим что данные не зашифрованы): допустим сила юнита - 100. В шестнадцатеричном формате это - 64. Значит надо искать в бинарнике байт со значением 64. Скорее всего таких мест будет оочень много, думаем дальше - логично предположить что все параметры юнита будут лежать рядом. Предположим что по умолчанию у юнита к тому же 240 жизней - в 16ричном виде - F0. Значит ищем места где есть надалеко друг от друга 64 и F0. Ну и так далее... Но это так навскидку, может и не прокатить.
PS. Не забываем, что сейчас многие не экономят на памяти, соответственно может быть надо искать не байт, а слово или даже двойное слово с нужными значениями
Ответить с цитированием
  #5  
Старый 16.02.2009, 18:54
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Еще рекомендую поискать повторяющиеся значения, особенно если они будут появляться с одной периодичностью. И проанализировать различия на этих диапазонах - вдруг это окажутся что каждый такой диапазон отдельный юнит? (Это дополнение к словам Grunch).
Вот еще идейка насчет сейвов... если сделать две штуки с небольшой периодичностью, то они будут в чем то схожи. Различиями могут быть например количество ресурсов итд. Этот принцип лежит в работы ArtMoney.
Третий вариант - методом тыка, те проверять реакцию программы на изменения. Но это не по-джедайски .
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter