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

Mafia II-DE v.1.0.1 вращение колёс

Запланировано Прикреплена Закрыта Перенесена Общий
15 Сообщения 4 Posters 351 Просмотры
Загружаем больше сообщений
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • P
    Partizan1078
    отредактировано 23 мая 2023 г., 22:54

    Захотель я ускорить тачку путём накрутки вращения колёс.
    Но столкнулся с ситуацией.
    Дело такое. Если я просто возьму и пропишу значение допустим 1000. То всё работает.

     mov [r14+000003BC],(float)1000
     mulss xmm14,[r14+000003BC]
    

    А ну да в инструкции срабатывает только 4 адреса моих колёс. Других нет.
    Инструция на чтение.
    Но хочется прикрутить горячую кнопку.

    И как только я делаю так.

    [ENABLE]
    aobscanmodule(car_02,Mafia II Definitive Edition.exe,F3 45 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? 44 0F)
    alloc(newmem,$1000,car_02)
    label(return)
    label(hot_key)
    registersymbol(hot_key)
    registersymbol(car_02)
    
    newmem:
      cmp [hot_key],01
      jne short @F
      mov [r14+000003BC],(float)1000
      mov [hot_key],00
    @@:
      mulss xmm14,[r14+000003BC]
      jmp return
    
    hot_key:
    dd 00
    
    car_02:
      jmp newmem
      nop 4
    return:
    
    [DISABLE]
    car_02:
    db F3 45 0F 59 B6 BC 03 00 00
    unregistersymbol(*)
    dealloc(newmem)
    {
    // ORIGINAL CODE - INJECTION POINT: Mafia II Definitive Edition.exe+4D8131
    Mafia II Definitive Edition.exe+4D80E6: F3 41 0F 11 A6 1C 02 00 00  - movss [r14+0000021C],xmm4
    Mafia II Definitive Edition.exe+4D80EF: F3 41 0F 10 86 D0 01 00 00  - movss xmm0,[r14+000001D0]
    Mafia II Definitive Edition.exe+4D80F8: F3 41 0F 10 8E E0 01 00 00  - movss xmm1,[r14+000001E0]
    Mafia II Definitive Edition.exe+4D8101: F3 41 0F 10 96 F0 01 00 00  - movss xmm2,[r14+000001F0]
    Mafia II Definitive Edition.exe+4D810A: F3 41 0F 11 86 00 02 00 00  - movss [r14+00000200],xmm0
    Mafia II Definitive Edition.exe+4D8113: F3 41 0F 11 8E 10 02 00 00  - movss [r14+00000210],xmm1
    Mafia II Definitive Edition.exe+4D811C: F3 41 0F 11 96 20 02 00 00  - movss [r14+00000220],xmm2
    Mafia II Definitive Edition.exe+4D8125: 49 8B 86 48 04 00 00        - mov rax,[r14+00000448]
    Mafia II Definitive Edition.exe+4D812C: 48 85 C0                    - test rax,rax
    Mafia II Definitive Edition.exe+4D812F: 74 1B                       - je "Mafia II Definitive Edition.exe"+4D814C
    // ---------- INJECTING HERE ----------
    Mafia II Definitive Edition.exe+4D8131: F3 45 0F 59 B6 BC 03 00 00  - mulss xmm14,[r14+000003BC]
    // ---------- DONE INJECTING  ----------
    Mafia II Definitive Edition.exe+4D813A: F3 44 0F 58 B0 DC 03 00 00  - addss xmm14,[rax+000003DC]
    Mafia II Definitive Edition.exe+4D8143: F3 44 0F 11 B0 DC 03 00 00  - movss [rax+000003DC],xmm14
    Mafia II Definitive Edition.exe+4D814C: 44 0F 28 74 24 40           - movaps xmm14,[rsp+40]
    Mafia II Definitive Edition.exe+4D8152: 4C 8D 9C 24 D0 00 00 00     - lea r11,[rsp+000000D0]
    Mafia II Definitive Edition.exe+4D815A: 49 8B 5B 10                 - mov rbx,[r11+10]
    Mafia II Definitive Edition.exe+4D815E: 49 8B 73 18                 - mov rsi,[r11+18]
    Mafia II Definitive Edition.exe+4D8162: 49 8B 7B 20                 - mov rdi,[r11+20]
    Mafia II Definitive Edition.exe+4D8166: 41 0F 28 73 F0              - movaps xmm6,[r11-10]
    Mafia II Definitive Edition.exe+4D816B: 41 0F 28 7B E0              - movaps xmm7,[r11-20]
    Mafia II Definitive Edition.exe+4D8170: 45 0F 28 43 D0              - movaps xmm8,[r11-30]
    }
    

    То по непонятной мне причине моё значение пишется только в 1 (первый) адрес.

    Вопрос. Почему так происходит???
    Первый раз с таким столкнулся.
    Может из-за того что взял инструкцию с умножением?

    G 3 ответов Последний ответ 23 мая 2023 г., 23:08 Ответить Цитировать 0
    • G
      garik66 @Partizan1078
      отредактировано 23 мая 2023 г., 23:08

      Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

      cmp [hot_key],01
      jne short @F
      mov [r14+000003BC],(float)1000
      mov [hot_key],00 // просто не обнуляй,

      1 ответ Последний ответ Ответить Цитировать 0
      • G
        garik66 @Partizan1078
        отредактировано 23 мая 2023 г., 23:10

        @Partizan1078 либо можно сделать счетчик на 4 записи, чтобы все 4 колеса получили 1000.

        P 1 ответ Последний ответ 23 мая 2023 г., 23:13 Ответить Цитировать 0
        • P
          Partizan1078 @garik66
          отредактировано 23 мая 2023 г., 23:13

          @garik66 Я тоже сразу подумал что за один проход не может эта инсрукция записать все 4 адреса. Прикручивал счётчик. Итог тот-же. Счётчик доводил до 100 циклов. Писалось только в первый адрес.

          1 ответ Последний ответ Ответить Цитировать 0
          • G
            garik66 @Partizan1078
            отредактировано 23 мая 2023 г., 23:17

            Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:
            Попробуй все-таки так:

            newmem:
            cmp [hot_key],01
            jne short @F
            mov [r14+000003BC],(float)1000
            // mov [hot_key],00 // без этой строки
            @@:
            mulss xmm14,[r14+000003BC]
            jmp return

            P 1 ответ Последний ответ 23 мая 2023 г., 23:19 Ответить Цитировать 0
            • P
              Partizan1078 @garik66
              отредактировано 23 мая 2023 г., 23:19

              @garik66 Тогда как мне заставить машину больше не разгоняться. Если только в самой таблице вешать ещё одну кнопку на обнуление.

              G 1 ответ Последний ответ 23 мая 2023 г., 23:22 Ответить Цитировать 0
              • G
                garik66 @Partizan1078
                отредактировано 23 мая 2023 г., 23:22

                Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

                Если только в самой таблице вешать ещё одну кнопку на обнуление.

                как вариант.
                Странно что счетчик не сработал - я предполагал, что инструкция пробегает поочередно все 4 колеса.

                S 1 ответ Последний ответ 24 мая 2023 г., 04:39 Ответить Цитировать 0
                • S
                  StoneWeaver administrators @garik66
                  отредактировано 24 мая 2023 г., 04:39

                  @garik66 инструкция может работать параллельно в четырех потоках, как вариант.

                  @Partizan1078 тебе нужно комплексное условие. Проще всего это сделать на Lua в СЕ, но можно и на ассемблере. Суть в том, что тебе нужен не один флаг, а четыре - на каждое колесо, и хранить во флаге не только сам флаг, но и адрес колеса. По адресу сверяться, включен ли флаг, а по горячей клавише выставлять флаг для всех четырех адресов. Если непонятно, пиши, попробую подробнее объяснить

                  1 ответ Последний ответ Ответить Цитировать 0
                  • P
                    Partizan1078
                    отредактировано 24 мая 2023 г., 19:52

                    Забил и сделал проще просто повесил на обнуление ещё одну кнопку. Проще говоря одна боковая кнопка мыши включает а другая боковая кнопка выключает.

                      cmp [hot_key],01
                      jne @F
                      mov [r14+000003BC],(float)300
                    @@:
                      mulss xmm14,[r14+000003BC]
                    

                    А вот такой скрипт со счётчиком.

                    [ENABLE]
                    aobscanmodule(car_02,Mafia II Definitive Edition.exe,F3 45 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? 44 0F)
                    alloc(newmem,$1000,car_02)
                    label(return)
                    label(check)
                    label(hot_key)
                    registersymbol(hot_key)
                    registersymbol(car_02)
                    
                    newmem:
                      cmp [hot_key],01
                      jne @F
                      mov [r14+000003BC],(float)100
                      add [check],01
                      cmp [check],03
                      jne newmem
                      mov [hot_key],00
                      mov [check],00
                    @@:
                      mulss xmm14,[r14+000003BC]
                      jmp return
                    
                    hot_key:
                    dd 00
                    check:
                    dd 00
                    
                    car_02:
                      jmp newmem
                      nop 4
                    return:
                    
                    [DISABLE]
                    car_02:
                    db F3 45 0F 59 B6 BC 03 00 00
                    unregistersymbol(*)
                    dealloc(newmem)
                    

                    И он не работает.

                    G 2 ответов Последний ответ 24 мая 2023 г., 22:02 Ответить Цитировать 0
                    • G
                      garik66 @Partizan1078
                      отредактировано 24 мая 2023 г., 22:02

                      Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

                      И он не работает.

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

                      1 ответ Последний ответ Ответить Цитировать 0
                      • G
                        garik66 @Partizan1078
                        отредактировано garik66 24 мая 2023 г., 22:38

                        Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

                        И он не работает.

                        Попробуй так:

                        newmem:
                          cmp [hot_key],01
                          jne @F
                          mov [r14+000003BC],(float)100
                          add [check],01
                          cmp [check],03
                          jne @F
                          mov [hot_key],00
                          mov [check],00
                        @@:
                          mulss xmm14,[r14+000003BC]
                          jmp return
                        

                        К сожалению не знаю. как здесь юзать теги, прошу прощения.
                        Поправь скрипт, попробуй и отпишись пожалуйста - работает или нет.

                        P 1 ответ Последний ответ 25 мая 2023 г., 12:38 Ответить Цитировать 1
                        • P
                          Partizan1078 @garik66
                          отредактировано Partizan1078 25 мая 2023 г., 12:38

                          @garik66 Большое спасибо!
                          Чтот я тупанул и не обратил внимания на свою ошибку.
                          Сделал как вы посоветовали.
                          И всё заработало как надо.

                          [ENABLE]
                          aobscanmodule(car_02,Mafia II Definitive Edition.exe,F3 45 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? 44 0F)
                          alloc(newmem,$1000,car_02)
                          label(return)
                          label(check)
                          label(hot_key)
                          registersymbol(hot_key)
                          registersymbol(car_02)
                          
                          newmem:
                            cmp [hot_key],01
                            jne @F
                            mov [r14+000003BC],(float)500
                            add [check],01
                            cmp [check],64
                            jne @F
                            mov [hot_key],00
                            mov [check],00
                          @@:
                            mulss xmm14,[r14+000003BC]
                            jmp return
                          
                          hot_key:
                          dd 00
                          check:
                          dd 00
                          
                          car_02:
                            jmp newmem
                            nop 4
                          return:
                          
                          [DISABLE]
                          car_02:
                          db F3 45 0F 59 B6 BC 03 00 00
                          unregistersymbol(*)
                          dealloc(newmem)
                          

                          https://youtu.be/YkAjpX1aaBI

                          Чтобы скрипт обернуть в тег есть кнопочка "код"

                          G 1 ответ Последний ответ 25 мая 2023 г., 13:47 Ответить Цитировать 2
                          • G
                            garik66 @Partizan1078
                            отредактировано 25 мая 2023 г., 13:47

                            Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

                            И всё заработало как надо.

                            Рад

                            1 ответ Последний ответ Ответить Цитировать 0
                            • A
                              Antonshka
                              отредактировано 6 июн. 2023 г., 18:29

                              Предполагаю что ошибка в отсутствии pushfq и popfq.
                              Инструкция cmp меняет флаги. По правильному нужно всегда сохранять/восстанавливать регистр EFLAGS.

                              newmem:
                              pushfq 
                                cmp [hot_key],01
                                jne short @F
                                mov [r14+000003BC],(float)1000
                                mov [hot_key],00
                              @@:
                              popfq
                                mulss xmm14,[r14+000003BC]
                                jmp return
                              
                              G 1 ответ Последний ответ 6 июн. 2023 г., 19:12 Ответить Цитировать 0
                              • G
                                garik66 @Antonshka
                                отредактировано 6 июн. 2023 г., 19:12

                                Пользователь @Antonshka написал в Mafia II-DE v.1.0.1 вращение колёс:

                                Предполагаю что ошибка в отсутствии pushfq и popfq.

                                вопрос же решили с партизаном.
                                по твоему скрипту тоже только одно колесо сработает. один раз.

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