Subnautica Взлом кода двери
-
Добрый день. Хочу предложить объединить совместные навыки в разных способах взлома игр от новичков до профи и кому так же как и мне интересно разбирать игры в различных нестандартных местах.
Задача: Игра Subnautica версия 71288, возник интерес для начала найти инструкцию сравнения вводимого 4-х значного циферного пароля на замке любой двери, выудить из этого блока кода верный пароль и вывести скриптом в таблицу или автоматом ввести в панель замка двери. Но мне для достижения минимума достаточно будет просто в регистре видеть верный пароль при вводе неверного пароля. К примеру я точно знаю, что код от двери от каюты капитана на Авроре 2679 (он приходит в радиосообщении в определённый момент игры). В ходе попыток выйти на инструкцию пришёл к выводам, что код при вводе сравнивается посимвольно и при этом каждый символ в формате Строка. Между символами промежуток 4 байта. Но для меня загвоздка в том, что в том блоке кода обрабатываются не только символы клавиатуры замка, но и все надписи в меню так же в виде кодов символов в unicode. Чувствую, что моих познаний в ассемблере где-то не хватает. Попробовал пройти по коду игры в том блоке, но наткнуться на обработку только пароля двери не смог. Кому тоже интересно ковырять игры для развития навыков и обмена совместным опытом, прошу присоединиться и предложить свои идеи и исследования. Могу предоставить сохранение игры где персонаж стоит непосредственно у панели замка двери на которой я проводил исследования. Прошу не игнорировать мою задачу опытными пользователями CE, всё же у вас больше опыта который вы можете передать своим последователям. -
Пользователь @Iniar написал в Subnautica Взлом кода двери:
или автоматом ввести в панель замка двери
А что там думать, условие отредактировал и всё. Любой пароль будет верен.
-
@LIRW Увы не всё так просто. Чтоб это понять, нужно на сам код игры при обработке нажатий посмотреть. В играх где вводимый пароль сравнивается инструкцией с оригинальным паролем, там твой ответ будет иметь место быть, а здесь и я так делал. Но в Subnautica всё далеко не так просто. И отчасти в этом и интерес к взлому данной игры. В коде игры я пока не смог найти гуда и как пишется полностью весь пароль замка, а посимвольно попадаю в код игры где обрабатывается не только пароль замка, но и все надписи меню игры. И просто взять и поменять инструкцию чтоб любой пароль стал верным - это не удастся сделать на данной стадии исследований.
-
@Iniar Так а в чём проблема через dnspy или il2cpp прогнать игру? Она же на юнити.
-
@__fastcall Забыл добавить, что можно попробовать через CE -> mono dissector.
-
@__fastcall Хм, глянул в инете по поводу dnspy - что это. Интересная тема. Если есть время, можешь на примере той же Subnautica небольшое видео сделать, что можно получить через dnspy и как (в каком виде) выйти к примеру на пароли дверей в игре? Скажу честно, в этом направлении я пока только от тебя узнал про анализ кода таким способом.
-
@Iniar К сожалению у меня нету времени из-за подготовки к ЕГЭ, но ты можешь в ютубе написать Reversing unity games и там будут гайды на эту тему.
-
@__fastcall Понял, спасибо за наводку, попробую порыть. Но моя задача всё же остаётся открытой. Возможно ли это реализовать в CE? А попутно пока буду пробовать освоить тему с реверсом в предложенных тобой приложениях.
-
@Iniar Можно конечно в СЕ реализовать, там скорее всего где-то есть метод, который просто сравнивает пароли, его и по названию можно попробовать отыскать. А там уже через патч кода делать, как угодно.
-
@__fastcall Конечно я понимаю, что там обязательно должен присутствовать метод сравнивания, а так же в каком-то виде где-то лежит так называемый мастер-пароль с которым идёт сравнение. Но вот выйти на данный метод конкретно в Subnautica у меня пока не вышло и раз это скорей всего можно сделать через CE, то я прошу знающих людей помочь мне в поиске пути к этому методу сравнения, а там уже думаю, что увижу что с чем сравнивается и смогу выуживать при вводе неверного рандомного пароля типа 1234 уже верный пароль с которым сравниваются эти 1234.
-
@__fastcall Если появится некоторое время, можешь тоже подключиться к процессу? Сохранение игры у панели замка двери могу предоставить для экономии времени в игре.
-
@Iniar Скинь assembly c sharp.dll. Ща попробую поискать.
-
@__fastcall Это нужно взять в dnspy? Скажу, что развиваю навыки в CE и имеется который уровень программирования (логику программирования понимаю на среднем уровне), а так же на среднем уровне понимаю assembler. Но твой запрос не понял. Опиши краткий алгоритм действий пожалуйста. Я попытаюсь разобраться. Может это для меня будет легко, просто я эти действия другими словами понимаю.
-
@Iniar Я просто хотел, чтобы ты мне скинул из папки с игрой файл assemblyCSharp.dll, т.к мне лень игру скачивать. Т.к пароли статичные, то возможно их можно найти по строкам.
-
@__fastcall Понял теперь, сейчас на работе, после работы скину в личку или сюда. Подумал, что надо где-то уже код игры выгрузить и тебе прислать, что пока было бы не особо быстро, пока разобрался бы. Если не сложно, можешь потом пояснялку пожалуйста небольшую сделать по своим исследованиям файла. Если время и желание есть. Хотелось бы по мимо результата всё же какой-то опыт на практике конкретной ещё получить. Пароли сами как таковые мне не нужны. Мне больше интересен разбор игры через CE, так как я пока в ней больше понимаю как можно докуда-то добраться, чем например через dnspy, но пояснялки будут полезны для понимания. Заранее спасибо.
-
@__fastcall
архив с ассембли сишарп как обещалПо другому увы не нашёл как скинуть архив. После конвертации в картинку тут ошибку пишет при загрузке, а в ЛС у меня ещё нет прав отправлять файлы.
-
@Iniar
Ну по коду вроде похоже на то. -
@__fastcall Вроде как да, этот самый код. И зелёный цвет ниже присутствует в параметре колор. Это вроде, если верно понял код, то когда на клавиши нажимаешь и когда код верно вводишь появляется зелёный замок открытый. Сейчас вопрос, как исходя их этого можно в CE выйти на то место где коды сравнивает? И можно ли обращая внимание на этот скрин кода?
-
@__fastcall И кстати вопрос сразу же.Из кода видно, что есть переменная accessCode. Можно ли её в CE найти по данному названию и попасть в эту самую процедуру?
-
@Iniar я поэтому и скинул скрин с RVA.