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

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

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