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

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

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

      @garik66, в общем не сработало. В основном мне надо,чтобы при выключении скрипта значение в адресе было 0. Так-как тип функции это boolean, поэтому при включении должно быть 1, а при выключении 0. Буду благодарен, если поможешь мне.

      Как и просили с логами вроде.

      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:
      mov [rdi+00000790],#1

      code:
      movzx eax,byte ptr [rdi+00000790]
      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
      }

      G 2 ответов Последний ответ Ответить Цитировать 0
      • 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
                                    • Первое сообщение
                                      Последнее сообщение