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

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

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

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

    _ 1 ответ Последний ответ 10 мар. 2024 г., 18:23 Ответить Цитировать 0
    • _
      __fastcall @Iniar
      отредактировано 10 мар. 2024 г., 18:23

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

      I 2 ответов Последний ответ 10 мар. 2024 г., 18:41 Ответить Цитировать 0
      • I
        Iniar @__fastcall
        отредактировано 10 мар. 2024 г., 18:41

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

        P 1 ответ Последний ответ 11 мар. 2024 г., 20:45 Ответить Цитировать 0
        • I
          Iniar @__fastcall
          отредактировано 10 мар. 2024 г., 18:45

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

          _ 1 ответ Последний ответ 10 мар. 2024 г., 18:57 Ответить Цитировать 0
          • _
            __fastcall @Iniar
            отредактировано 10 мар. 2024 г., 18:57

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

            I 1 ответ Последний ответ 10 мар. 2024 г., 19:10 Ответить Цитировать 0
            • I
              Iniar @__fastcall
              отредактировано 10 мар. 2024 г., 19:10

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

              _ 1 ответ Последний ответ 10 мар. 2024 г., 19:16 Ответить Цитировать 0
              • _
                __fastcall @Iniar
                отредактировано 10 мар. 2024 г., 19:16

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

                I 2 ответов Последний ответ 11 мар. 2024 г., 04:35 Ответить Цитировать 0
                • I
                  Iniar @__fastcall
                  отредактировано 11 мар. 2024 г., 04:35

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

                  1 ответ Последний ответ Ответить Цитировать 0
                  • I
                    Iniar @__fastcall
                    отредактировано 11 мар. 2024 г., 13:27

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

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

                    _ 1 ответ Последний ответ 11 мар. 2024 г., 14:31 Ответить Цитировать 0
                    • _
                      __fastcall @Iniar
                      отредактировано 11 мар. 2024 г., 14:31

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

                      I 2 ответов Последний ответ 11 мар. 2024 г., 15:00 Ответить Цитировать 0
                      • I
                        Iniar @__fastcall
                        отредактировано 11 мар. 2024 г., 15:00

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

                        _ 1 ответ Последний ответ 11 мар. 2024 г., 15:03 Ответить Цитировать 0
                        • I
                          Iniar @__fastcall
                          отредактировано 11 мар. 2024 г., 15:03

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

                          1 ответ Последний ответ Ответить Цитировать 0
                          • _
                            __fastcall @Iniar
                            отредактировано 11 мар. 2024 г., 15:03

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

                            I 1 ответ Последний ответ 11 мар. 2024 г., 15:05 Ответить Цитировать 0
                            • I
                              Iniar @__fastcall
                              отредактировано 11 мар. 2024 г., 15:05

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

                              _ 1 ответ Последний ответ 11 мар. 2024 г., 15:07 Ответить Цитировать 0
                              • _
                                __fastcall @Iniar
                                отредактировано 11 мар. 2024 г., 15:07

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

                                I 1 ответ Последний ответ 11 мар. 2024 г., 15:16 Ответить Цитировать 0
                                • I
                                  Iniar @__fastcall
                                  отредактировано 11 мар. 2024 г., 15:16

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

                                  _ 1 ответ Последний ответ 11 мар. 2024 г., 15:37 Ответить Цитировать 0
                                  • _
                                    __fastcall @Iniar
                                    отредактировано 11 мар. 2024 г., 15:37

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

                                    I 2 ответов Последний ответ 12 мар. 2024 г., 05:04 Ответить Цитировать 0
                                    • P
                                      Partizan1078
                                      отредактировано 11 мар. 2024 г., 19:51

                                      Помнится был у меня заказец на подобно.(открыть заблокированные двери)Игра Гедония и тож на юнити.
                                      Я поступил гораздо проще. А именно так. Давайте будем рассуждать логически. Возьмём любую отрывающуюся дверь. Сделаем допущение. Если дверь в открытом состоянии то это флаг равный 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
                                      • P
                                        Partizan1078
                                        отредактировано 11 мар. 2024 г., 19:57

                                        Ещё бывают такие игры как дай лайт 2.
                                        В которых что-бы открыть замок нужна отмычка.
                                        Бывает такое что в соседнем регисре хранится "правильное число".
                                        И его нужно всего лишь подменить!(регистр)

                                        [ENABLE]
                                        aobscanmodule(EeasyOpenLock,gamedll_ph_x64_rwdi.dll,F3 ? ? ? ? ? ? ? 33 ? 0F 2F ? 73 ? 89 ? ? ? ? ? 0F 57)
                                        registersymbol(EeasyOpenLock)
                                        EeasyOpenLock:
                                        movss [rcx+00000138],xmm4
                                        //F3 0F 11 A1 38 01 00 00
                                        
                                        [DISABLE]
                                        EeasyOpenLock:
                                        db F3 0F 11 89 38 01 00 00
                                        unregistersymbol(EeasyOpenLock)
                                        {
                                        // ORIGINAL CODE - INJECTION POINT: gamedll_ph_x64_rwdi.dll+F44F92
                                        gamedll_ph_x64_rwdi.dll+F44F5D: F3 0F 5D C8                    - minss xmm1,xmm0
                                        gamedll_ph_x64_rwdi.dll+F44F61: 80 B9 40 01 00 00 00           - cmp byte ptr [rcx+00000140],00
                                        gamedll_ph_x64_rwdi.dll+F44F68: F3 0F 11 89 3C 01 00 00        - movss [rcx+0000013C],xmm1
                                        gamedll_ph_x64_rwdi.dll+F44F70: 74 09                          - je gamedll_ph_x64_rwdi.dll+F44F7B
                                        gamedll_ph_x64_rwdi.dll+F44F72: 80 7A 1C 00                    - cmp byte ptr [rdx+1C],00
                                        gamedll_ph_x64_rwdi.dll+F44F76: 74 03                          - je gamedll_ph_x64_rwdi.dll+F44F7B
                                        gamedll_ph_x64_rwdi.dll+F44F78: 0F 57 C9                       - xorps xmm1,xmm1
                                        gamedll_ph_x64_rwdi.dll+F44F7B: F3 0F 58 89 38 01 00 00        - addss xmm1,[rcx+00000138]
                                        gamedll_ph_x64_rwdi.dll+F44F83: F3 0F 10 25 45 34 0E 01        - movss xmm4,[gamedll_ph_x64_rwdi.dll+20283D0]
                                        gamedll_ph_x64_rwdi.dll+F44F8B: C6 81 40 01 00 00 00           - mov byte ptr [rcx+00000140],00
                                        // ---------- INJECTING HERE ----------
                                        gamedll_ph_x64_rwdi.dll+F44F92: F3 0F 11 89 38 01 00 00        - movss [rcx+00000138],xmm1
                                        // ---------- DONE INJECTING  ----------
                                        gamedll_ph_x64_rwdi.dll+F44F9A: 33 C9                          - xor ecx,ecx
                                        gamedll_ph_x64_rwdi.dll+F44F9C: 0F 2F CB                       - comiss xmm1,xmm3
                                        gamedll_ph_x64_rwdi.dll+F44F9F: 73 0B                          - jae gamedll_ph_x64_rwdi.dll+F44FAC
                                        gamedll_ph_x64_rwdi.dll+F44FA1: 89 8E 38 01 00 00              - mov [rsi+00000138],ecx
                                        gamedll_ph_x64_rwdi.dll+F44FA7: 0F 57 C9                       - xorps xmm1,xmm1
                                        gamedll_ph_x64_rwdi.dll+F44FAA: EB 12                          - jmp gamedll_ph_x64_rwdi.dll+F44FBE
                                        gamedll_ph_x64_rwdi.dll+F44FAC: 0F 2F CC                       - comiss xmm1,xmm4
                                        gamedll_ph_x64_rwdi.dll+F44FAF: 76 0D                          - jna gamedll_ph_x64_rwdi.dll+F44FBE
                                        gamedll_ph_x64_rwdi.dll+F44FB1: C7 86 38 01 00 00 00 00 B4 42  - mov [rsi+00000138],42B40000
                                        gamedll_ph_x64_rwdi.dll+F44FBB: 0F 28 CC                       - movaps xmm1,xmm4
                                        }
                                        
                                        1 ответ Последний ответ Ответить Цитировать 2
                                        • P
                                          Partizan1078 @Iniar
                                          отредактировано Partizan1078 3 нояб. 2024 г., 20:45 11 мар. 2024 г., 20:45

                                          @Iniar Скинь сейвы перед дверью с паролем. И желательно что-бы была рядышком дверь разлоченая.

                                          I 1 ответ Последний ответ 12 мар. 2024 г., 03:58 Ответить Цитировать 0
                                          17 из 53
                                          • Первое сообщение
                                            17/53
                                            Последнее сообщение