GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Subnautica Взлом кода двери

    Запланировано Прикреплена Закрыта Перенесена Взлом игр (вопросы и ответы)
    53 Сообщения 4 Posters 1.4k Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • I
      Iniar @__fastcall
      отредактировано

      @__fastcall Хм, глянул в инете по поводу dnspy - что это. Интересная тема. Если есть время, можешь на примере той же Subnautica небольшое видео сделать, что можно получить через dnspy и как (в каком виде) выйти к примеру на пароли дверей в игре? Скажу честно, в этом направлении я пока только от тебя узнал про анализ кода таким способом.

      __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
      • __fastcall_
        __fastcall @Iniar
        отредактировано

        @Iniar К сожалению у меня нету времени из-за подготовки к ЕГЭ, но ты можешь в ютубе написать Reversing unity games и там будут гайды на эту тему.

        I 1 ответ Последний ответ Ответить Цитировать 0
        • I
          Iniar @__fastcall
          отредактировано

          @__fastcall Понял, спасибо за наводку, попробую порыть. Но моя задача всё же остаётся открытой. Возможно ли это реализовать в CE? А попутно пока буду пробовать освоить тему с реверсом в предложенных тобой приложениях.

          __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
          • __fastcall_
            __fastcall @Iniar
            отредактировано

            @Iniar Можно конечно в СЕ реализовать, там скорее всего где-то есть метод, который просто сравнивает пароли, его и по названию можно попробовать отыскать. А там уже через патч кода делать, как угодно.

            I 2 ответов Последний ответ Ответить Цитировать 0
            • I
              Iniar @__fastcall
              отредактировано

              @__fastcall Конечно я понимаю, что там обязательно должен присутствовать метод сравнивания, а так же в каком-то виде где-то лежит так называемый мастер-пароль с которым идёт сравнение. Но вот выйти на данный метод конкретно в Subnautica у меня пока не вышло и раз это скорей всего можно сделать через CE, то я прошу знающих людей помочь мне в поиске пути к этому методу сравнения, а там уже думаю, что увижу что с чем сравнивается и смогу выуживать при вводе неверного рандомного пароля типа 1234 уже верный пароль с которым сравниваются эти 1234.

              Partizan1078P 1 ответ Последний ответ Ответить Цитировать 0
              • I
                Iniar @__fastcall
                отредактировано

                @__fastcall Если появится некоторое время, можешь тоже подключиться к процессу? Сохранение игры у панели замка двери могу предоставить для экономии времени в игре.

                __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
                • __fastcall_
                  __fastcall @Iniar
                  отредактировано

                  @Iniar Скинь assembly c sharp.dll. Ща попробую поискать.

                  I 1 ответ Последний ответ Ответить Цитировать 0
                  • I
                    Iniar @__fastcall
                    отредактировано

                    @__fastcall Это нужно взять в dnspy? Скажу, что развиваю навыки в CE и имеется который уровень программирования (логику программирования понимаю на среднем уровне), а так же на среднем уровне понимаю assembler. Но твой запрос не понял. Опиши краткий алгоритм действий пожалуйста. Я попытаюсь разобраться. Может это для меня будет легко, просто я эти действия другими словами понимаю.

                    __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
                    • __fastcall_
                      __fastcall @Iniar
                      отредактировано

                      @Iniar Я просто хотел, чтобы ты мне скинул из папки с игрой файл assemblyCSharp.dll, т.к мне лень игру скачивать. Т.к пароли статичные, то возможно их можно найти по строкам.

                      I 2 ответов Последний ответ Ответить Цитировать 0
                      • I
                        Iniar @__fastcall
                        отредактировано

                        @__fastcall Понял теперь, сейчас на работе, после работы скину в личку или сюда. Подумал, что надо где-то уже код игры выгрузить и тебе прислать, что пока было бы не особо быстро, пока разобрался бы. Если не сложно, можешь потом пояснялку пожалуйста небольшую сделать по своим исследованиям файла. Если время и желание есть. Хотелось бы по мимо результата всё же какой-то опыт на практике конкретной ещё получить. Пароли сами как таковые мне не нужны. Мне больше интересен разбор игры через CE, так как я пока в ней больше понимаю как можно докуда-то добраться, чем например через dnspy, но пояснялки будут полезны для понимания. Заранее спасибо.

                        1 ответ Последний ответ Ответить Цитировать 0
                        • I
                          Iniar @__fastcall
                          отредактировано

                          @__fastcall
                          архив с ассембли сишарп как обещал

                          По другому увы не нашёл как скинуть архив. После конвертации в картинку тут ошибку пишет при загрузке, а в ЛС у меня ещё нет прав отправлять файлы.

                          __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
                          • __fastcall_
                            __fastcall @Iniar
                            отредактировано

                            @Iniar 104b90aa-3527-4050-8ed3-32382c03c87a-image.png
                            Ну по коду вроде похоже на то.

                            I 2 ответов Последний ответ Ответить Цитировать 0
                            • I
                              Iniar @__fastcall
                              отредактировано

                              @__fastcall Вроде как да, этот самый код. И зелёный цвет ниже присутствует в параметре колор. Это вроде, если верно понял код, то когда на клавиши нажимаешь и когда код верно вводишь появляется зелёный замок открытый. Сейчас вопрос, как исходя их этого можно в CE выйти на то место где коды сравнивает? И можно ли обращая внимание на этот скрин кода?

                              __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
                              • I
                                Iniar @__fastcall
                                отредактировано

                                @__fastcall И кстати вопрос сразу же.Из кода видно, что есть переменная accessCode. Можно ли её в CE найти по данному названию и попасть в эту самую процедуру?

                                1 ответ Последний ответ Ответить Цитировать 0
                                • __fastcall_
                                  __fastcall @Iniar
                                  отредактировано

                                  @Iniar я поэтому и скинул скрин с RVA.

                                  I 1 ответ Последний ответ Ответить Цитировать 0
                                  • I
                                    Iniar @__fastcall
                                    отредактировано

                                    @__fastcall В RVA адрес на начало процедуры?

                                    __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
                                    • __fastcall_
                                      __fastcall @Iniar
                                      отредактировано

                                      @Iniar Assembly-CSharp.dll + RVA = Адрес метода. Вроде так.

                                      I 1 ответ Последний ответ Ответить Цитировать 0
                                      • I
                                        Iniar @__fastcall
                                        отредактировано

                                        @__fastcall Хорошо. Посмотрел в CE в редакторе памяти список подгруженных библиотек. Но там не нашёл эту длл-ку. Этот адрес можно получить как то через CE или в чём-то другом?

                                        __fastcall_ 1 ответ Последний ответ Ответить Цитировать 0
                                        • __fastcall_
                                          __fastcall @Iniar
                                          отредактировано

                                          @Iniar Вообщем, я забыл, как это делать через dnspy, сделай просто через CE -> Mono dissector. Там можно через поиск будет найти метод этот.

                                          I 2 ответов Последний ответ Ответить Цитировать 0
                                          • Partizan1078P
                                            Partizan1078
                                            отредактировано

                                            Помнится был у меня заказец на подобно.(открыть заблокированные двери)Игра Гедония и тож на юнити.
                                            Я поступил гораздо проще. А именно так. Давайте будем рассуждать логически. Возьмём любую отрывающуюся дверь. Сделаем допущение. Если дверь в открытом состоянии то это флаг равный 1 (единица) а если закрыта то это = 0. Следовательно. Я могу воспользоваться сканером. Обычно флаги хранятся как 1 байт. Найдя этот флаг я могу уже от чего-то оттолкнуться. Не так ли?
                                            Причём флаг может быть не только 1-0 а допустим 144=открыто 72=закрыто. И всё наоборот. Всё что угодно разрабу в голову придёт.
                                            Ну та вот найдя инструкции работающие не с одной конкретной дверью а с видимыми (как минимум)

                                            И кстати за счёт того что СЕ парсит структуры мне удалось найти в структуре двери значение Lock = 0 или =1

                                            Упешно написал скрипт который открывает все двери.

                                            И да если не удаётся найти флаг. Всегда можно поискать угол открытия двери или чего угодно

                                            Гедония. Не помню какая версия.
                                            Открытие всех дверей.

                                            [ENABLE]
                                            {$lua}
                                            if (LaunchMonoDataCollector()==0) then
                                              error('Failed to Activate Mono Features')
                                            end
                                            {$asm}
                                            aobscanregion(UnDoor,Door:Interact+230, Door:Interact+293, 0F 84 ? ? ? ? 66)
                                            registersymbol(UnDoor)
                                            UnDoor:
                                            db E9 6D 01 00 00 90
                                            
                                            [DISABLE]
                                            UnDoor:
                                            db 0F 84 6C 01 00 00
                                            unregistersymbol(UnDoor)
                                            {
                                            // ORIGINAL CODE - INJECTION POINT: Door:Interact+25e
                                            Door:Interact+230: 4C 8B 8D 40 FF FF FF           - mov r9,[rbp-000000C0]
                                            Door:Interact+237: 4C 89 8D 50 FF FF FF           - mov [rbp-000000B0],r9
                                            Door:Interact+23e: 4D 8D 00                       - lea r8,[r8]
                                            Door:Interact+241: 83 38 00                       - cmp dword ptr [rax],00
                                            Door:Interact+244: 66 90                          - nop 2
                                            Door:Interact+246: 49 BB 2E E9 4F 12 BF 02 00 00  - mov r11,000002BF124FE92E
                                            Door:Interact+250: 41 FF D3                       - call r11
                                            Door:Interact+253: E9 CB 04 00 00                 - jmp Door:Interact+723
                                            Door:Interact+258: 0F B6 46 35                    - movzx eax,byte ptr [rsi+35]
                                            Door:Interact+25c: 85 C0                          - test eax,eax
                                            // ---------- INJECTING HERE ----------
                                            Door:Interact+25e: 0F 84 6C 01 00 00              - je Door:Interact+3d0
                                            // ---------- DONE INJECTING  ----------
                                            Door:Interact+264: 66 90                          - nop 2
                                            Door:Interact+266: 49 BB 70 A0 82 0A 6E 02 00 00  - mov r11,0000026E0A82A070
                                            Door:Interact+270: 41 FF D3                       - call r11
                                            Door:Interact+273: 48 8B C8                       - mov rcx,rax
                                            Door:Interact+276: 48 BA 30 EF 2F CD BE 02 00 00  - mov rdx,000002BECD2FEF30
                                            Door:Interact+280: 48 8D 64 24 00                 - lea rsp,[rsp+00]
                                            Door:Interact+285: 90                             - nop 
                                            Door:Interact+286: 49 BB C0 65 5A DD BD 02 00 00  - mov r11,System.String:op_Equality
                                            Door:Interact+290: 41 FF D3                       - call r11
                                            Door:Interact+293: 85 C0                          - test eax,eax
                                            }
                                            
                                            1 ответ Последний ответ Ответить Цитировать 1
                                            • Первое сообщение
                                              Последнее сообщение