Сейчас на форуме: tyns777, bezumchik, Lohmaty (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Изменение функции в EXE
Посл.ответ Сообщение

Ранг: 1.0 (гость), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 06 февраля 2019 17:08 · Поправил: Xenon
· Личное сообщение · #1

Приветствую

Ситуация следующая:

Занимаюсь портингом игры с консоли Xbox 360 на ПК. Занимаюсь, потому что издатель убил проект на ПК-версии, а именно - нет дополнительного контента (автомобили и трассы). Понял всю механику игры, как работает звук, как работают шейдеры, как происходит наложение текстур и прочее, подробности ни к чему. Столкнулся с такой проблемой: на консоли порядок байтов - BigEndian, на ПК - Little endian.

Но на положение таблиц в файле это не влияет. Меняются местами только первые два байта, потом вторые два байта и т.д. в таблице.

К примеру:

1. Cтроение 3D файла консольной версии. Любой формат трехмерного файла - это таблицы. Таблицы вершин, таблицы полигонов, координаты текстур. И эти таблицы идут по порядку. На консоли: 1-таблица полигонов, 2 - таблица вершин, 3 - таблица текстурных координат.

2. На ПК : 1-таблица текстурных координат, 2 - таблица вершин, 3 - таблица полигонов.

Грубо говоря, файл записан задом наперед и порядок байтов иной

Есть ли возможность изменить функцию чтения этого файла в исполняемом EXE? И как ее найти?

P.S. Игра защищена SecuROM 2010 года

| Сообщение посчитали полезным: kampaster

Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 06 февраля 2019 18:08
· Личное сообщение · #2

Xenon пишет:
изменить функцию чтения этого файла в исполняемом EXE?

Скорее всего чтение происходит из разных мест и возможны разные хардкорные хаки, тут имхо более грамотным подходом будет сконвертить сами файлы, пройтись скриптом по директроиям игры и пересобрать в "правильном" порядке.



Ранг: 1.0 (гость), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 06 февраля 2019 18:11 · Поправил: Xenon
· Личное сообщение · #3

VOLKOFF пишет:
Скорее всего чтение происходит из разных мест и возможны разные хардкорные хаки, тут имхо более грамотным подходом будет сконвертить сами файлы, пройтись скриптом по директроиям игры и пересобрать в "правильном" порядке.


Я так и сделал, но для обработки одного файла у меня уходит неделя. А файлов всего около 600.

Спасибо за ответ)



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 06 февраля 2019 18:17
· Личное сообщение · #4

Xenon пишет:
для обработки одного файла у меня уходит неделя


Вы их руками что ли конвертите?
На xentax-е точно пробегали готовые конверторы иксбоксовских файлов для пк.



Ранг: 1.0 (гость), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 06 февраля 2019 18:29
· Личное сообщение · #5

VOLKOFF пишет:
Вы их руками что ли конвертите?
На xentax-е точно пробегали готовые конверторы иксбоксовских файлов для пк.


Свапаю байты, и меняю положение. Но смещение таблиц в файле прописывается внутри самого файла и это тоже редактирую. Ну и одна модель автомобиля состоит из 4 файлов - сама модель, текстуры, шейдеры и шейдерные инстансы. А сам автомобиль это двери, крылья, бампера, стеклянные элементы, колеса. И под каждый элемент отдельный шейдер. И это все вместе нужно редактировать. Инфа в hex-редакторе не очевидна и поэтому уходит много времени. Была мысль заморочится и написать на питоне 3d viewer, но пока все смутно)))

На xentax`e много полезной инфы, оттуда и почерпнул знания)))



Ранг: 36.1 (посетитель), 11thx
Активность: 0.020
Статус: Участник

Создано: 06 февраля 2019 18:29 · Поправил: Jonny
· Личное сообщение · #6

Xenon пишет:
P.S. Игра защищена SecuROM 2010 года


Ты программу не распаковал что ли?

Xenon пишет:
Есть ли возможность изменить функцию чтения этого файла в исполняемом EXE? И как ее найти?

Если распаковал, ищещь в дизассемблере эту функцию, запоминаешь ее адрес, создаешь свою функцию чтения под сигнатуру подменяемой функции, собираешь в длл либо blob, связываешь свой код с exe, чтобы вместо той функции вызывалась твоя. Связать свой код можно как минимум двумя способами -
статическое - добавляешь в exe новую секцию, заливаешь в секцию свой блоб, пренаправляешь подменяемую функцию на твою с помощью jmp.
динамическое - подгрузка своего кода во время выполнения.



Ранг: 1.0 (гость), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 06 февраля 2019 18:40 · Поправил: Xenon
· Личное сообщение · #7

Jonny пишет:
Ты программу не распаковал что ли?


Нет. На просторах интернета лежит две кряктуные версии:

1. Такой же размер исполняемого файла, что и у лицензионного, но вызывается изменная dll
2. Размер исполняемого файла уменьшен на 7мб (думаю удален секуромовский мусор и прочее, что запутывает взлом) и вызывается изменная dll

Добавлено спустя 5 минут
Jonny пишет:
Ты программу не распаковал что ли?


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

Хекс вид во вложении


c2ec_06.02.2019_EXELAB.rU.tgz - Снимок.JPG



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 06 февраля 2019 19:06
· Личное сообщение · #8

Xenon, не занимайтесь ерундой, пишите конвертер файлов.
А ломать функцию чтения файлов внутри бинаря очень странная затея, тем более, по ощущениям, навыков недостаточно у вас.
Написать конвертер на питоне или любом другом удобном языке будет куда проще, если итак уже известна структура.




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 06 февраля 2019 19:28
· Личное сообщение · #9

Xenon пишет:
Я так и сделал, но для обработки одного файла у меня уходит неделя. А файлов всего около 600.

Страшно представить на чем и как ты этот конвертер написал.

-----
2 оттенка серого




Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 06 февраля 2019 19:32
· Личное сообщение · #10

f13nd пишет:
Страшно представить на чем и как ты этот конвертер написал

Xenon пишет:
Инфа в hex-редакторе не очевидна и поэтому уходит много времени

здесь наши полномочия все
По структуре и сигам пишется скрипт и минут за 10-20 все готово. И даже это избыточно, если уже готовые инструменты есть.



Ранг: 1.0 (гость), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 06 февраля 2019 19:34
· Личное сообщение · #11

f13nd пишет:
Страшно представить на чем и как ты этот конвертер написал.


в хекс редакторе переставлял данные и правил. Ничего не писал

Единственное что я сделал с экзешником, это заставил его читать файлы с жестого диска. То есть, лежал файл в сжатом архиве (чтобы такие как я не модифицировали игру) я его распаковывал в папку с экзешником и уже прописывал в экзешнике путь к этому файлу. Но это совсем просто




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 06 февраля 2019 20:06
· Личное сообщение · #12

Xenon пишет:
в хекс редакторе переставлял данные и правил. Ничего не писал

Понятно. Починка кода в программе это всегда кот в мешке. Никогда нельзя заранее знать чем окажется то, что представляется как "функция чтения структур файла", сколько времени займет все копание в программе и переделка. Рациональней всего вообще туда не лезть и таки сделать конвертер.

-----
2 оттенка серого



 eXeL@B —› Вопросы новичков —› Изменение функции в EXE
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати