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

    Вопрос по трюку в скрипте автоассеблера

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

      @Iniar Тебе надо найти фильт. Это может быть как у меня в скрипте регистр или он (фильтр) может быть в структуре, стеке. Что конкретно ломаешь ща сам хочу глянуть.

      I 2 ответов Последний ответ Ответить Цитировать 0
      • I
        Iniar @Partizan1078
        отредактировано

        @Partizan1078 Ломаю героев 7. Там весьма много новых для меня решений от разрабов. Пока что интересный процесс. Там они замутили одну инструкцию на сразу много разных значений. К примеру инструкция обращающаяся к войскам вне боя обращается ещё к куче разных параметров. Т.е. когда ищу адреса к которым обращается инструкция, то там и кол-во войск и где-то там же какие-то параметры войск... Но я отрыл инструкцию которая конкретно уже в бою обращается исключительно к кол-ву войск. И их можно прям в бою редактировать под себя как у врагов поставить по 1 воину, так и у себя сделать 999 состава войска. И нужно отцидить их как-то. По анализу структуры для каждого моего и каждого вражеского войска по началу структуры вижу, что есть некоторые различители для видимо очерёдности... На данный момент у меня в бою 3 моих войска и 3 вражеских. И по смещению некоему от начала структуры идёт 121, 122, 123,124,125,126. Из них первые 3 моих, потом 3 врага. Но пока не понял, постоянные ли это значения или меняются из боя в бой.

        1 ответ Последний ответ Ответить Цитировать 0
        • StoneWeaverS
          StoneWeaver administrators @Partizan1078
          отредактировано StoneWeaver

          Пользователь @Partizan1078 написал в Вопрос по трюку в скрипте автоассеблера:

          Хотел скрипт выложить а он 188 строк

          Выкладывай, обернув тегом "Код", система сама его ограничит в небольшом окне, в котором будет отдельная возможность листать код.

          1 ответ Последний ответ Ответить Цитировать 0
          • StoneWeaverS
            StoneWeaver administrators @Iniar
            отредактировано

            Пользователь @Iniar написал в Вопрос по трюку в скрипте автоассеблера:

            @StoneWeaver Я думаю, что это немного не то решение. Потому как я не знаю какие будут адрес. Они всегда разные. Я забыл об этом упомянуть в начальном топике. А то о чём ты говоришь, подходит для того если я знаю адреса. В частности для того чтоб их сверять, надо знать с чем сверять.

            А я разве говорил, что заранее будет известно? Я сказал, что ты сверяешь значение, которое записываешь. Хотя сейчас подумал, и это годится только для одного прохода цикла, для многократного прохода так не сработает.

            I 1 ответ Последний ответ Ответить Цитировать 0
            • I
              Iniar @StoneWeaver
              отредактировано

              @StoneWeaver Хм. Я пока не совсем понял твою идею. Пока не понял с чем сравнивать имеешь в виду. Если у тебя та же идея, что и у Partizan1078, то мне для этого надо найти сначала по какому триггеру можно фильтровать.

              StoneWeaverS 1 ответ Последний ответ Ответить Цитировать 0
              • StoneWeaverS
                StoneWeaver administrators @Iniar
                отредактировано

                @Iniar Нет, у меня была идея при первом проходе в пустую ячейку записывать адрес, а потом сравнивать, есть ли он уже в массиве, но это непростой алгоритм, для многократного прохода цикла нужно внимательно думать, чтобы не перетереть адреса

                I 1 ответ Последний ответ Ответить Цитировать 0
                • I
                  Iniar @StoneWeaver
                  отредактировано

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

                  1 ответ Последний ответ Ответить Цитировать 0
                  • I
                    Iniar @Partizan1078
                    отредактировано

                    @Partizan1078 если есть герои меча и магии 7, посмотри инструкцию - 1401E4F72 - MMH7Game-Win64-Shipping.PIBGetInterface+2D2 - cmp [rcx+000006EC],eax. Посмотри адреса к которым она обращается именно в бою когда поле боя на экране.

                    1 ответ Последний ответ Ответить Цитировать 0
                    • Partizan1078P
                      Partizan1078
                      отредактировано Partizan1078

                      Дело такое.
                      Игра сделана на Unreal engine.
                      Это говорит о том что проще всего выходить на игровой мир и уже от него строить указатели. Как то так.
                      69972710-de6e-487d-a4b0-bccd2f343ba4-cvbcvbre464fghb.png
                      Версия игры 1.8 37786

                      Сделал скрит на World.

                      [ENABLE]
                      aobscanmodule(pWorld,MMH7Game-Win64-Shipping.exe,48 8B ? ? ? ? ? 8B ? 8B ? ? 85 ? 7F ? 74)
                      alloc(newmem,$1000,pWorld)
                      label(return)
                      label(World)
                      registersymbol(World)
                      registersymbol(pWorld)
                      
                      newmem:
                        mov [World],rcx
                        mov rbx,[rcx+00000080]
                        jmp return
                      
                      World:
                      dq 00
                      
                      pWorld:
                        jmp newmem
                        nop 2
                      return:
                      
                      [DISABLE]
                      pWorld:
                      db 48 8B 99 80 00 00 00
                      unregistersymbol(*)
                      dealloc(newmem)
                      {
                      // ORIGINAL CODE - INJECTION POINT: MMH7Game-Win64-Shipping.exe+78BDEA
                      MMH7Game-Win64-Shipping.exe+78BDD8: 5F                    - pop rdi
                      MMH7Game-Win64-Shipping.exe+78BDD9: 5E                    - pop rsi
                      MMH7Game-Win64-Shipping.exe+78BDDA: F3 C3                 - repe ret 
                      MMH7Game-Win64-Shipping.exe+78BDDC: CC                    - int 3 
                      MMH7Game-Win64-Shipping.exe+78BDDD: CC                    - int 3 
                      MMH7Game-Win64-Shipping.exe+78BDDE: CC                    - int 3 
                      MMH7Game-Win64-Shipping.exe+78BDDF: CC                    - int 3 
                      MMH7Game-Win64-Shipping.exe+78BDE0: 48 89 5C 24 08        - mov [rsp+08],rbx
                      MMH7Game-Win64-Shipping.exe+78BDE5: 57                    - push rdi
                      MMH7Game-Win64-Shipping.exe+78BDE6: 48 83 EC 20           - sub rsp,20
                      // ---------- INJECTING HERE ----------
                      MMH7Game-Win64-Shipping.exe+78BDEA: 48 8B 99 80 00 00 00  - mov rbx,[rcx+00000080]
                      // ---------- DONE INJECTING  ----------
                      MMH7Game-Win64-Shipping.exe+78BDF1: 8B FA                 - mov edi,edx
                      MMH7Game-Win64-Shipping.exe+78BDF3: 8B 43 68              - mov eax,[rbx+68]
                      MMH7Game-Win64-Shipping.exe+78BDF6: 85 C0                 - test eax,eax
                      MMH7Game-Win64-Shipping.exe+78BDF8: 7F 22                 - jg MMH7Game-Win64-Shipping.exe+78BE1C
                      MMH7Game-Win64-Shipping.exe+78BDFA: 74 20                 - je MMH7Game-Win64-Shipping.exe+78BE1C
                      MMH7Game-Win64-Shipping.exe+78BDFC: 4C 8D 0D 9D D1 10 01  - lea r9,[MMH7Game-Win64-Shipping.exe+1898FA0]
                      MMH7Game-Win64-Shipping.exe+78BE03: 48 8D 15 56 D5 10 01  - lea rdx,[MMH7Game-Win64-Shipping.exe+1899360]
                      MMH7Game-Win64-Shipping.exe+78BE0A: 48 8D 0D 17 D5 10 01  - lea rcx,[MMH7Game-Win64-Shipping.exe+1899328]
                      MMH7Game-Win64-Shipping.exe+78BE11: 41 B8 3F 02 00 00     - mov r8d,0000023F
                      MMH7Game-Win64-Shipping.exe+78BE17: E8 24 D5 91 FF        - call MMH7Game-Win64-Shipping.exe+A9340
                      }
                      

                      Пользовался инструментом для СЕ
                      Тык

                      I 2 ответов Последний ответ Ответить Цитировать 2
                      • I
                        Iniar @Partizan1078
                        отредактировано

                        @Partizan1078 оу, сколько инфы... Расскажи по подробней что за приспособа и как её пользовать? На моей СЕ 6.8.3 приспособа не работает. Когда запускаю скрипт Unreal Engine, то он не активируется. А Tools просто везде по вопросам выдаёт.
                        Ну и скрипт World тоже не отрабатывает. По оффсетам с скрина твоего у меня пусто. Видимо версия игры не та. К тому же ты говоришь - выходить на мир. Но на скрине я у тебя не увидел кол-во войск в бою которые мне нужны. А только касаемо перса информация выводится.

                        Partizan1078P 1 ответ Последний ответ Ответить Цитировать 0
                        • I
                          Iniar @Partizan1078
                          отредактировано Iniar

                          @Partizan1078 И можешь поподробней объяснить как мне к примеру попасть в анализе структур в такой же массив как у тебя на скрине с описанием смещения? Как отловить начало структуры мира? Моя версия игры - 1.6 34396

                          1 ответ Последний ответ Ответить Цитировать 0
                          • Partizan1078P
                            Partizan1078 @Iniar
                            отредактировано Partizan1078

                            @Iniar ce 7.5. Я и не искал того что тебе нужно. Я по быстрому просто глянул. Что к чему.

                            I 1 ответ Последний ответ Ответить Цитировать 0
                            • I
                              Iniar @Partizan1078
                              отредактировано

                              @Partizan1078 Ну я пока ничего не понял, как с твоей приспособой взаимодействовать. Поставил 7.5, но просто тыкаю по пунктам скриптов и не понимаю связей пока. Что-то срабатывает, где-то просто вопросы. Так что вопрос по поводу моего начального топика всё ещё актуален. Как по очереди записать в метки значение нескольких адресов. По твоему примеру сделал скрипт которые сверяет по смещению 4C от начала структуры войск в бою значения 121,122,123... о которых писал выше, но в переменных w1,w2 и т.д. помещается один и тот же адрес и значения скачут.

                              Partizan1078P 1 ответ Последний ответ Ответить Цитировать 0
                              • Partizan1078P
                                Partizan1078 @Iniar
                                отредактировано

                                @Iniar https://youtube.com/playlist?list=PL1rFTirh2a0OiFJerJUT3a7UXEL5M7xxD

                                I 1 ответ Последний ответ Ответить Цитировать 0
                                • I
                                  Iniar @Partizan1078
                                  отредактировано

                                  @Partizan1078 Спасибо за ссылку на видео уроки. Тема уже старая, но я посмотрел. Многие навыки уже получил самостоятельно, но несколько заметок из уроков вынес. Но хочу сказать, что я не совсем начинающий в CE, просто сам знаешь, всё знать невозможно и для этого и есть форумы, чтоб делиться опытом.

                                  1 ответ Последний ответ Ответить Цитировать 0
                                  • StoneWeaverS StoneWeaver закрыл эту тему в
                                  • Первое сообщение
                                    Последнее сообщение