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

    Как при отключении скрипта вернуть или (записать) в адрес значение ?

    Запланировано Прикреплена Закрыта Перенесена Взлом игр (начинающим)
    18 Сообщения 3 Posters 229 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • G
      garik66 @Asusih
      отредактировано

      @Asusih попробуй так

      define(address,Player:UpdatePlacement+b23)
      define(bytes,0F B6 87 90 07 00 00)
      
      [ENABLE]
      
      assert(address,bytes)
      alloc(newmem,$1000,Player:UpdatePlacement+b23)
      
      label(code)
      label(return)
      
      newmem:
      
      code:
      jmp Player:UpdatePlacement+b53
      jmp return
      
      address:
      jmp newmem
      nop 2
      return:
      
      [DISABLE]
      address:
      db bytes
      // movzx eax,byte ptr [rdi+00000790]
      
      dealloc(newmem)
      
      {
      // ORIGINAL CODE - INJECTION POINT: Player:UpdatePlacement+b23
      
      Player:UpdatePlacement+aee: 49 BB 5C 35 61 23 DA 02 00 00 - mov r11,000002DA2361355C
      Player:UpdatePlacement+af8: 41 FF D3 - call r11
      Player:UpdatePlacement+afb: E9 33 03 00 00 - jmp Player:UpdatePlacement+e33
      Player:UpdatePlacement+b00: 48 8B 8F 38 06 00 00 - mov rcx,[rdi+00000638]
      Player:UpdatePlacement+b07: 33 D2 - xor edx,edx
      Player:UpdatePlacement+b09: 48 8D 64 24 00 - lea rsp,[rsp+00]
      Player:UpdatePlacement+b0e: 49 BB 10 07 AE 93 DB 02 00 00 - mov r11,UnityEngine.Object:op_Inequality
      Player:UpdatePlacement+b18: 41 FF D3 - call r11
      Player:UpdatePlacement+b1b: 85 C0 - test eax,eax
      Player:UpdatePlacement+b1d: 0F 84 10 03 00 00 - je Player:UpdatePlacement+e33
      // ---------- INJECTING HERE ----------
      Player:UpdatePlacement+b23: 0F B6 87 90 07 00 00 - movzx eax,byte ptr [rdi+00000790]
      // ---------- DONE INJECTING ----------
      Player:UpdatePlacement+b2a: 85 C0 - test eax,eax
      Player:UpdatePlacement+b2c: 75 25 - jne Player:UpdatePlacement+b53
      Player:UpdatePlacement+b2e: 48 8B CF - mov rcx,rdi
      Player:UpdatePlacement+b31: 48 8B 95 C8 FE FF FF - mov rdx,[rbp-00000138]
      Player:UpdatePlacement+b38: 45 33 C0 - xor r8d,r8d
      Player:UpdatePlacement+b3b: 66 66 90 - nop 3
      Player:UpdatePlacement+b3e: 49 BB 50 41 1B 25 DA 02 00 00 - mov r11,Player:HaveRequirements
      Player:UpdatePlacement+b48: 41 FF D3 - call r11
      Player:UpdatePlacement+b4b: 85 C0 - test eax,eax
      Player:UpdatePlacement+b4d: 0F 84 95 02 00 00 - je Player:UpdatePlacement+de8
      }
      
      A 1 ответ Последний ответ Ответить Цитировать 0
      • G
        garik66 @Asusih
        отредактировано

        @Asusih да и забыл, все-таки проверь первый мой скрипт, загрузив игру заново, есть подозрение, что ты проверял его с уже измененным значением в адресе игры.

        1 ответ Последний ответ Ответить Цитировать 1
        • LIRWL
          LIRW
          отредактировано

          на прямую пиши mov eax,00000001 под патч или этим же хуком..
          если перезаписывает что то... патчи его.. либо флаго dd 00 - 01
          newmem:

          originalcode:
          mov eax,00000001

          exit:
          jmp returnhere

          G A 2 ответов Последний ответ Ответить Цитировать 1
          • G
            garik66 @LIRW
            отредактировано

            @LIRW первый скрипт, это и есть запись напрямую, со слов ТС это не сработало, видимо дальше по коду перезаписывается.
            с флагами более большой скрипт планировал предложить 3 вариантом.
            Второй мой скрипт это уже прыжок куда-надо, но ТС пока не отписался сработало или нет.

            LIRWL A 2 ответов Последний ответ Ответить Цитировать 1
            • LIRWL
              LIRW @garik66
              отредактировано

              @garik66 Игорь понял тебя. Пусть пробует тогда.

              1 ответ Последний ответ Ответить Цитировать 0
              • A
                Asusih @garik66
                отредактировано Asusih

                @garik66 ,это включает пол функции в игре. То есть вообще функция открывает все рецепты и бесплатный крафт, тут же не появляются все рецепты и крафт тоже не работает . С первым скриптом такая же ситуация (

                1 ответ Последний ответ Ответить Цитировать 0
                • A
                  Asusih @LIRW
                  отредактировано

                  Это сообщение удалено!
                  1 ответ Последний ответ Ответить Цитировать 0
                  • A
                    Asusih @garik66
                    отредактировано Asusih

                    @garik66, он получается не меняет значение. То есть если добавить адрес в таблицу, то значение остается неизменным. Просто не совсем понимаю, почему просто нельзя в автоассемблере записать при выключении скрипта значение, или это делается через флаги ?

                    G 2 ответов Последний ответ Ответить Цитировать 0
                    • G
                      garik66 @Asusih
                      отредактировано garik66

                      @Asusih судя, по описанному тобой, скрипт с флагом тоже скорее всего тебе не поможет.
                      Но давай попробуем

                      1. добавь скрипт в таблицу
                      [ENABLE]
                      alloc(newmem,2048,Player:UpdatePlacement+b23)
                      label(returnhere)
                      label(originalcode)
                      label(exit)
                      label(Flag)
                      registersymbol(Flag)
                      
                      newmem:
                      cmp [Flag],1
                      jne @f
                      mov [rdi+00000790] ,#1
                      jmp originalcode
                      
                      @@:
                      mov [rdi+00000790] ,0
                      
                      originalcode:
                      movzx eax,byte ptr [rdi+00000790]
                      
                      exit:
                      jmp returnhere
                      
                      Flag:
                      dd 1
                      
                      Player:UpdatePlacement+b23:
                      jmp newmem
                      nop 2
                      returnhere:
                      
                      [DISABLE]
                      unregistersymbol(Flag)
                      dealloc(newmem)
                      Player:UpdatePlacement+b23:
                      db 0F B6 87 90 07 00 00
                      
                      1. теперь нужно добавить в таблицу адрес Flag, после активации скрипта.
                        По умолчанию будет в нем 1, перед отключением скрипта в адресе нужно поставить в адресе Flag 0.
                      1 ответ Последний ответ Ответить Цитировать 0
                      • G
                        garik66 @Asusih
                        отредактировано

                        @Asusih отпишись, после проверки - интересно.

                        A 2 ответов Последний ответ Ответить Цитировать 1
                        • A
                          Asusih @garik66
                          отредактировано

                          @garik66 ,хорошо , чуть позже проверю

                          1 ответ Последний ответ Ответить Цитировать 0
                          • A
                            Asusih @garik66
                            отредактировано

                            @garik66 ,спасибо, это работает. Благодарен, вообще хотелось как писал, но думаю что так не получится, а так большое спасибо !

                            G 2 ответов Последний ответ Ответить Цитировать 1
                            • G
                              garik66 @Asusih
                              отредактировано

                              @Asusih для того чтобы сделать все в одном скрипте нужно изучать игровой код. В этом случае СЕ-ных логов не достаточно.

                              1 ответ Последний ответ Ответить Цитировать 0
                              • G
                                garik66 @Asusih
                                отредактировано

                                @Asusih и еще вариант:
                                Найти указатели на адрес и написать простейший скрипт

                                [ENABLE]
                                //code from here to '[DISABLE]' will be used to enable the cheat
                                mov[адрес с указателями],1
                                 
                                 
                                [DISABLE]
                                //code from here till the end of the code will be used to disable the cheat
                                mov[адрес с указателями],0
                                
                                A 1 ответ Последний ответ Ответить Цитировать 1
                                • A
                                  Asusih @garik66
                                  отредактировано

                                  @garik66, оо, попытаюсь сделать,спасибо большое.

                                  1 ответ Последний ответ Ответить Цитировать 0
                                  • Первое сообщение
                                    Последнее сообщение