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

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

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

      @Iniar привет! Привет! Перед записью в метку тебе надо проверять, какой адрес записан в метку, и если не совпадает, записывать его в другое место. Скорее всего, на ассемблере тебе для этого понадобится цикл, ну и адреса нужно будет помещать в стартовую метку плюс смещение размером с размер адреса (4 байта, если игра 32 бит, и 8 байт, если игра 64 бита).

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

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

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

          @StoneWeaver На примере объясню что мне надо... Я нашёл инструкцию в героях 7 которая показывает кол-во войск в битве. Так вот эта инструкция обращается сразу и к моим и к войскам соперника. Когда я ищу адреса к которым обращается данная инструкция, то она выводит и допустим 4 вида войск с моей стороны и 5 видов войск с стороны врага. Так вот мне нужно под скриптом сделать 9 меток в каждую из которых будет выводиться кол-во соответственно по порядку сначала моих 4 видов и потом 5 видов соперника.

          1 ответ Последний ответ Ответить Цитировать 0
          • 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
                                            • Первое сообщение
                                              Последнее сообщение