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

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

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

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

    Вот сам скрипт :
    [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 ответ Последний ответ 27 нояб. 2024 г., 07:55 Ответить Цитировать 0
    • G
      garik66 @Asusih
      отредактировано 27 нояб. 2024 г., 07:55

      @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 ответ Последний ответ 27 нояб. 2024 г., 09:58 Ответить Цитировать 1
      • A
        Asusih @garik66
        отредактировано Asusih 27 нояб. 2024 г., 09:58

        @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 ответов Последний ответ 27 нояб. 2024 г., 10:16 Ответить Цитировать 0
        • G
          garik66 @Asusih
          отредактировано 27 нояб. 2024 г., 10:16

          @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 ответ Последний ответ 27 нояб. 2024 г., 13:59 Ответить Цитировать 0
          • G
            garik66 @Asusih
            отредактировано 27 нояб. 2024 г., 10:24

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

            1 ответ Последний ответ Ответить Цитировать 1
            • L
              LIRW
              отредактировано 27 нояб. 2024 г., 10:47

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

              originalcode:
              mov eax,00000001

              exit:
              jmp returnhere

              G A 2 ответов Последний ответ 27 нояб. 2024 г., 10:52 Ответить Цитировать 1
              • G
                garik66 @LIRW
                отредактировано 27 нояб. 2024 г., 10:52

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

                L A 2 ответов Последний ответ 27 нояб. 2024 г., 11:07 Ответить Цитировать 1
                • L
                  LIRW @garik66
                  отредактировано 27 нояб. 2024 г., 11:07

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

                  1 ответ Последний ответ Ответить Цитировать 0
                  • A
                    Asusih @garik66
                    отредактировано Asusih 27 нояб. 2024 г., 13:59

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

                    1 ответ Последний ответ Ответить Цитировать 0
                    • A
                      Asusih @LIRW
                      отредактировано 27 нояб. 2024 г., 14:03

                      Это сообщение удалено!
                      1 ответ Последний ответ Ответить Цитировать 0
                      • A
                        Asusih @garik66
                        отредактировано Asusih 27 нояб. 2024 г., 14:06

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

                        G 2 ответов Последний ответ 27 нояб. 2024 г., 14:42 Ответить Цитировать 0
                        • G
                          garik66 @Asusih
                          отредактировано garik66 27 нояб. 2024 г., 14:42

                          @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
                            отредактировано 27 нояб. 2024 г., 14:47

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

                            A 2 ответов Последний ответ 27 нояб. 2024 г., 14:48 Ответить Цитировать 1
                            • A
                              Asusih @garik66
                              отредактировано 27 нояб. 2024 г., 14:48

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

                              1 ответ Последний ответ Ответить Цитировать 0
                              • A
                                Asusih @garik66
                                отредактировано 27 нояб. 2024 г., 16:53

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

                                G 2 ответов Последний ответ 27 нояб. 2024 г., 17:00 Ответить Цитировать 1
                                • G
                                  garik66 @Asusih
                                  отредактировано 27 нояб. 2024 г., 17:00

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

                                  1 ответ Последний ответ Ответить Цитировать 0
                                  • G
                                    garik66 @Asusih
                                    отредактировано 27 нояб. 2024 г., 17:06

                                    @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 ответ Последний ответ 27 нояб. 2024 г., 17:22 Ответить Цитировать 1
                                    • A
                                      Asusih @garik66
                                      отредактировано 27 нояб. 2024 г., 17:22

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

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