Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 44 5 15
Заревёрсить игру ради калькулятора Аноним 18/03/24 Пнд 06:25:03 3090245 1
108ae45f3f23e92[...].png 10Кб, 460x817
460x817
Надо зареверс инжинирить игру, чтобы узнать как там считаются цифры наносимого урона. Я знаю все входные и формулу, знаю что значения урона округляются. Пытался сделать самостоятельно, получаю погрешности, в единицу, но есть, а нужно точно единица к единице.

Знаний в программировании чуть больше, чем ноль. Пока только узнал, что реверс на ассемблере. Понимаю что задача далеко не самая простая, но мне буквально надо достать лишь код расчёта цифр. Поэтому прошу подсказки/гайда/указания как достичь конкретно этого побыстрее (вариант нанять человека на это не актуален).
Аноним 18/03/24 Пнд 06:37:35 3090248 2
>>3090245 (OP)
С такой задачей даже большинство опытных разрабов быстро не справятся.
Этот "код расчёта цифр" там может оказаться где угодно. Может, он вообще размазан по десятку функций в разных dll. Без чей-то помощи тебе самому придётся изучать ассемблер, условную сишку и книги по реверсингу, после чего разбираться с дизассемблерами и дебагерами. Даже если ты гений, уйдёт минимум несколько месяцев.
Аноним 18/03/24 Пнд 07:56:48 3090307 3
>>3090248
Демн...Я конечно понимал, что всё туго, но настолько...
Правды ради, добавлю вопросу большу информации. В корневой папчке с игрой dll файл всего один и это стим_апи, один экзешник самой игры, остальое это png, fx, pac файлы.
Я изначально не знал, что это играет важную роль. Теперь задача выглядит намного проще?
Аноним 18/03/24 Пнд 08:29:03 3090323 4
>>3090307
>один экзешник самой игры
Посмотри сколько он весит и поразмысли.
Аноним 18/03/24 Пнд 08:39:12 3090329 5
>>3090323
полагаю для ревёрса это много.
Ну это уже проще, чем иметь сверху пачку dll файлов, не?
Аноним 12/04/24 Птн 23:54:43 3120688 6
image.png 30Кб, 461x571
461x571
Я оценил кстати
Аноним 13/04/24 Суб 00:03:22 3120695 7
Проще подобрать формулу.
Аноним 13/04/24 Суб 10:31:39 3120833 8
Аноним 13/04/24 Суб 19:12:24 3121266 9
>>3120833
Не получается как-то. Пока только узнал, что во втором множителе как минимум 3 знака после запятой. На этом всё. Уже часов 10 чистых долбился.
Аноним 13/04/24 Суб 21:06:20 3121435 10
>>3090245 (OP)
Смотря от игры, но ты никогда не узнаешь чтобы прям точно.

Тебе нужно набрать статистику по урону, очень много статистики, прям ОЧЕНЬ ОЧЕНЬМ НОГО и по этой статистике уже пытаться ебануть формулы. Можно хоть перебором эти формулы подбирать, похуй впринципе, думаю найдёшь все коофциенты всех значений. Чем больше статиситке по урону - тем точнее формула.

>>3120695
Да, формула проще ищется. И быстрее.
Аноним 13/04/24 Суб 22:31:14 3121546 11
>>3121266
Что может не получиться в линейной регрессии, алло?
Необъясненная дисперсия вызванная чистым рандомом? Ну это хуйня
Аноним 14/04/24 Вск 04:37:33 3121666 12
>>3121435
У меня есть "формула", у меня есть значения входного урона, у меня есть множители. Но когда начинаются математические операции, начинается ебала, что из-за неправильного округления множителей(это пока что единственное предположение), цифры не совпадают, необходимо точное попадание единица в единицу, а у меня неточности появляются.
>>3121546
Рандома нет.
Аноним 14/04/24 Вск 17:55:17 3122406 13
>>3121666
А, то есть есть некая ситуация K - "битва X[j] против Y[k]", в ходе которой получается урон, который игра вычисляет с большой точностью, но отображается на экране округленный до какого знака?
Аноним 14/04/24 Вск 17:56:24 3122410 14
И таких вот экземпляров данных K ты собрал десятки, а то и сотни?

Напоминаю, что Гауссу потребовалось всего три наблюдения
Аноним 16/04/24 Втр 21:21:26 3125572 15
>>3122406
У меня складывается впечатление, что тебе смешно будет от того, насколько у меня, полагаю, простая для тебя задача, учитывая, какие вопросы ты задаёшь.
Ну да, полагаю, что так, округлённый до целого числа, там множители это дроби.

>>3122410
А зачем мне много экзеипляров? Инфа о множителях и цифрах урона взята с интернета. А итоговое значение Я в саму игру захожу и делаю с кода, а там итог сверяю.
Аноним 16/04/24 Втр 21:49:50 3125632 16
>>3120833
Никогда бы не подумал, что сделать цикл из математических операций с необходимой точностью чисел настолько блять сложно. Отвал. Что Я делаю не так? Ааааааааааааааааааа, какая инфа нужна чтобы получить наводку, что Я делаю не так?
Аноним 16/04/24 Втр 23:28:35 3125717 17
Если это старая игра, то возможно исходники выложены/спизжены, поищи.
Аноним 17/04/24 Срд 15:28:16 3126372 18
>>3125717
2015 год, на пк с 2017. Сомневаюсь. Она в каком-то смысле даже до сих пор поддерживается. А данные с инета взять было не сложно, там в целом в файлах на каждого чара стандартный текстовый файл где множители были написаны, Я их сам недавно трогал поэтому в курсе. Но то, что относится не к одному персонажу а ко всей игре, вот это жесть без понятия, что с этим делать.
Аноним 17/04/24 Срд 23:14:09 3126928 19
>>3125572
Нет. Мы либо выясним что информация надежно затирается, либо произойдет чудо и формулу можно восстановить потыкав в экселе.

может уже наконец игру покажешь и ролики про нее?
Аноним 19/04/24 Птн 02:40:33 3128099 20
Аноним 19/04/24 Птн 05:50:02 3128114 21
>>3090245 (OP)
>>3128099
ОП, собери все .exe и .dll файлы от установленной игры, залей одним архивом на файлообменник (https://dropmefiles.com/, ЯДиск, GDrive). Может что-то подскажу по реверсингу и дальнейшим действиям.
Аноним 19/04/24 Птн 10:52:04 3128270 22
>>3128099
>Blazblue Centralfiction
Какое-то говнище.
Там скорее всего просто таблица заранее рассчитана и отбалансирована по ощущениям создателя.
Формулы нет.
Аноним 20/04/24 Суб 01:11:11 3129253 23
>>3128114
Там 15 гигов после архивации, если прям всё кидать...ну прям всё, т.е. кроме экзешника там только очень очень очень много .pac файлов, в которых инфа об игре, конкретно какая не знаю, но например, все статовые штуки персонажей расписаны там.
Аноним 20/04/24 Суб 03:56:33 3129292 24
>>3129253
>Там 15 гигов после архивации, если прям всё кидать...ну прям всё
Залей пока только исполняемые файлы.

> много .pac файлов, в которых инфа об игре, конкретно какая не знаю, но например, все статовые штуки персонажей расписаны там.
Откуда знаешь про их содержимое? Где-то есть описание формата данных? Ну закинь несколько небольших .pac тоже для примера.
Аноним 20/04/24 Суб 22:57:58 3130042 25
image.png 16Кб, 254x733
254x733
>>3129292
https://dropmefiles.com/XWirb
Вот все исполняемые файлы, ну собсна кроме стим_апи

>Откуда знаешь про их содержимое? Где-то есть описание формата данных? Ну закинь несколько небольших .pac тоже для примера.

Я сам туда залазил, ну ток в .pac персонажей, плюс они вроде как раскиданы по папкам, для чего что предназначено.
Аноним 21/04/24 Вск 05:13:44 3130197 26
>>3130042
Глянул твой .exe.
Поискал в теле файла строки с "damage" (урон), довольно много связанных имён попадается, то есть за что-то зацепиться всё же можно.
Дальше дизассемблировал, поверхностно глянул несколько произвольных функций, которые ссылаются на строки с "damage".
Вот несколько фрагментов кода, показавшихся мне заслуживающими внимания для дальнейшего изучения:

https://pastebin.ai/vua5lj3ddy (в начале приведён фрагмент ассемблерного кода внутри комментария / ... /, далее - декомпилированный в Си код функции)
Функция ссылается на массив строк off_9EE048, который содержит названия ударов (типов урона?). Судя по всему, в зависимости от силы удара, выбирается одна из строк для дальнейшего вывода игроку. Также в данной функции происходят какие-то несложные расчёты.

https://pastebin.ai/ao3ha0pboo
В функции используются строки "TrainingEtc_OneDamage", "TrainingEtc_ComboDamage", "TrainingEtc_MaxComboDamage". Из названий можно предположить, что она как-то связана с обучающим этапом. Можно изучить дальше, что вызывается из этой фукнции и какие вызывают её саму.

https://pastebin.ai/dkdae6brzq
В данной функции используются строки "NirvanaCarlDamage", "NirvanaDamageBody", "NirvanaDamageBodyEnd", "NirvanaDamageLegEnd". Может ты знаешь, что за Нирвана такая, и как оно связано с уроном телу.

Основная проблема при реверсинге нативного кода в том, что зачастую отсутствует какая-либо высокоуровневая информация о структуре кода (названия функций), типах данных, названиях переменных. Дизассемблер как-то пытается отчасти это реконструировать, хотя бы поделить поток низкоуровневых инструкций на отдельные функции и построить карту вызовов, чтобы можно было анализировать ход выполнения и взаимосвязанность частей уже на более высоком уровне, но этого всё равно недостаточно для быстрого и полноценного понимания логики работы кода. Конечно, в последние годы появились декомпиляторы, которые из ассемблерных инструкций кое-как реконструируют Си-шный код, но даже с такими удобствами получается много неточностей, это лишь заготовка для последующего кропотливого анализа.
Аноним 22/04/24 Пнд 02:09:40 3131210 27
>>3130197
Ох анонче, спасибо тебе. На первый взгляд правда, всё грустно очень.
>Функция ссылается на массив строк off_9EE048
Это из специального режима, к основной игре по сути никак не относится. Если Я правильно понял.
>В функции используются строки "TrainingEtc_OneDamage", "TrainingEtc_ComboDamage", "TrainingEtc_MaxComboDamage"
Настройки режима тренировка собсна...Там буквально весь список настроек.
>Может ты знаешь, что за Нирвана такая, и как оно связано с уроном телу.
Это буквально кусок кода, отвечающий за работу отдельного юнита, Я так полистал, он там полностью прописан.

На самом деле анонче, спасибо тебе, Я и близко не ожидал такой помощи. Заодно показал мне, верхушку айсберга сложности данного процесса. Позже ещё подробней гляну. И вообще ещё бы полистать что-то связанное с "multiplier", "proration". Но больше конечно, хз за что зацепиться.
Аноним 22/04/24 Пнд 06:09:14 3131253 28
>>3130197
Ещё какая-то потенциально интересная функция, где есть множество отсылок к "'hit" (удар/попадание).
https://pastebin.ai/ddmk6fj4al

В свою очередь, единственная функция, из которой она вызывается, это вот эта https://pastebin.ai/hmugxzavzs
Судя по используемым в ней строкам
"SPA_CounterHit", "TRI_CounterHit" (счётчики попаданий?)
"Throw Counter" (счётчик киданий?)
похоже как раз на обработку каких-то действий/ударов.
Аноним 22/04/24 Пнд 21:51:47 3132278 29
>>3131253
Кстати, а вот это клёво ты придумал. Может там что как раз и найдётся. Я сам совсем забыл про тот же 'hit" и "throw".
Аноним 23/04/24 Втр 09:09:46 3132500 30
>>3090245 (OP)
Заняться нечем? Вот вместо того чтобы пилить свою игру дальше ты хочешь полгода убить на калькулятор урона, за это время мог бы уже саму игру закончить и калькулятор свой написать
Аноним 23/04/24 Втр 14:00:07 3132834 31
>>3132500
Всмы...Я не делаю свою игру...
Аноним 23/04/24 Втр 15:40:09 3132932 32
>>3132834
А зач тебе этот калькулятор всрался тогда
Аноним 23/04/24 Втр 20:48:22 3133211 33
>>3132932
Чтобы урон программно считать, а не тратить часы на попытки исполнить всё вручную.
Аноним 23/04/24 Втр 21:01:25 3133249 34
>>3133211
игра сама тебе все посчитает
Аноним 23/04/24 Втр 21:28:11 3133304 35
>>3133249
Прочитай сообщение сначала, на которое отвечаешь.
Аноним 23/04/24 Втр 22:55:50 3133428 36
>>3133211
Так зачем тебе урон какой-то считать, если не для игры своей? Какая конечная цель то и выгода?
Аноним 24/04/24 Срд 14:52:25 3133961 37
>>3133428
Ну, для своей игры, но только не той, что предмет, а то, что наречие(?). Т.е. лучше играть, лучше понять теорию, как получать больше урона и учить те цепочки, которые могут выдавать больше урона. Заниматься этим в игре в ручную крайне проблематично, только на одного персонажа у меня ушло более 50 часов и это только для самой теории, а чтобы вообще была возможность проверять её на практике, у меня ушло несколько сотен.
Считать цифры самостоятельно ещё менее весёлое занятие, т.к. по идее надо считать не только урон, но есть и ещё один параметр, который Я пока что не затрагивал, т.к. мало смысла в попытках его автоматизировать, если даже урон не могу просчитать верно.
Аноним 24/04/24 Срд 20:47:13 3134285 38
изображение.png 577Кб, 1246x708
1246x708
>>3133961
1. Пишешь симулятор
2. Читаешь какие-нибудь книги
3. Даешь поиграть друзьям, собираешь все данные и еще раз перебалансируешь
Аноним 24/04/24 Срд 20:48:11 3134288 39
изображение.png 462Кб, 1274x498
1274x498
>>3134285
Сам охуел, это оказывается жена Ромеро
Аноним 25/04/24 Чтв 02:04:45 3134506 40
>>3134285
До меня не сразу дошло. Но видно для человека, который понятия не имеет о чём текст, Я изрёкся недостаточно понятно.

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

Если всё-таки появится вопрос, нахуя мне это, то ответ на него уже скорее из раздела /psy/, к сожалению. Тут же и ответ, почему Я занимаюсь этим лишь эпизодически и возможно с двух недельными и более перерывами.
Аноним 25/04/24 Чтв 02:07:05 3134508 41
>>3134288
Лишь бы поддерживала и не отягощала. Как выглядит - вторично.
Аноним 25/04/24 Чтв 13:09:09 3134917 42
>>3134506
Ну записывай данные.
Покемонов (ГО) же как-то "отреверсели" не имея доступа к серверному коду
Аноним 25/04/24 Чтв 15:16:58 3135017 43
>>3134506
Весь ютуб ломится от туториалов как реверсить игры
@
Спрашивает на двоще
Аноним 25/04/24 Чтв 23:55:17 3135726 44
>>3134917
Не пон.

>>3135017
А был запрос "научится реверс-инженерить игры"?
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов