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

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

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

      Тебе нужно сделать фильтр. По типу "свой чужой"
      Это как я отфильтровывал слоты друг от друга в инвенторе героя в игрушке dysmantle.
      45a64cf9-cb26-48d8-a183-eab61ca7a989-sdfsterty54645634hdfgh.png
      Как спойлер добавить? Хотел скрипт выложить а он 188 строк.

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

        @Partizan1078 Да, почти тоже самое задумываю. Тоже скрипт, а ниже будут метки с соответствующим значением. Но я так понимаю, у тебя где сравнение r15 с 00,01,02.... идёт - это ты точно знаешь что есть слот 00, 01 и т.д... Т.е. подозреваю, что в r15 у тебя чередуется индекс слота инвентаря и ты можешь сравнивать их и записывать. Это то я бы с лёгкостью сделал по данной логике. А как быть мне с рандомными адресами? С чем мне их сравнивать?

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

          @Partizan1078 По поводу спойлера во время написания ответа есть выше над текстом раздел Код. Наверно его надо... Это конечно не спойлер, но код будет отдельно видно. Спойлер тоже не нашёл.

          123-321
          
          1 ответ Последний ответ Ответить Цитировать 0
          • 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 закрыл эту тему в
                                        • Первое сообщение
                                          Последнее сообщение