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

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

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

      Есть скрипт, туда я записываю значение, но после отключение он его не восстанавливает. А мне как раз таки это нужно.
      Буду благодарен, кто покажет хотя бы пример .

      Вот сам скрипт :
      [ENABLE]
      alloc(newmem,2048,Player:UpdatePlacement+b23)
      label(returnhere)
      label(originalcode)
      label(exit)

      newmem:
      mov [rdi+00000790] ,#1

      originalcode:
      movzx eax,byte ptr [rdi+00000790]

      exit:
      jmp returnhere

      Player:UpdatePlacement+b23:
      jmp newmem
      nop 2
      returnhere:

      [DISABLE]
      dealloc(newmem)
      Player:UpdatePlacement+b23:
      db 0F B6 87 90 07 00 00

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

        @Asusih без кода игры (хотя бы логов. которые создает СЕ по умолчанию, при создании скрипта) тяжело что-то посоветовать. Но попробуй не записывать в нужный адрес игры значение, а подгружать его извне, короче попробуй так и отпишись о результатах.

        [ENABLE]
        alloc(newmem,2048,Player:UpdatePlacement+b23)
        label(returnhere)
        label(originalcode)
        label(exit)
        label(odin)
        
        newmem:
        //mov [rdi+00000790] ,#1
        
        originalcode:
        //movzx eax,byte ptr [rdi+00000790]
        movzx eax,byte ptr [odin]
        
        exit:
        jmp returnhere
        
        odin:
        dd 1
        
        Player:UpdatePlacement+b23:
        jmp newmem
        nop 2
        returnhere:
        
        [DISABLE]
        dealloc(newmem)
        Player:UpdatePlacement+b23:
        db 0F B6 87 90 07 00 00
        
        A 1 ответ Последний ответ Ответить Цитировать 1
        • 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
                                        • Первое сообщение
                                          Последнее сообщение