Вопрос по трюку в скрипте автоассеблера
-
Пользователь @Partizan1078 написал в Вопрос по трюку в скрипте автоассеблера:
Хотел скрипт выложить а он 188 строк
Выкладывай, обернув тегом "Код", система сама его ограничит в небольшом окне, в котором будет отдельная возможность листать код.
-
Пользователь @Iniar написал в Вопрос по трюку в скрипте автоассеблера:
@StoneWeaver Я думаю, что это немного не то решение. Потому как я не знаю какие будут адрес. Они всегда разные. Я забыл об этом упомянуть в начальном топике. А то о чём ты говоришь, подходит для того если я знаю адреса. В частности для того чтоб их сверять, надо знать с чем сверять.
А я разве говорил, что заранее будет известно? Я сказал, что ты сверяешь значение, которое записываешь. Хотя сейчас подумал, и это годится только для одного прохода цикла, для многократного прохода так не сработает.
-
@StoneWeaver Хм. Я пока не совсем понял твою идею. Пока не понял с чем сравнивать имеешь в виду. Если у тебя та же идея, что и у Partizan1078, то мне для этого надо найти сначала по какому триггеру можно фильтровать.
-
@Iniar Нет, у меня была идея при первом проходе в пустую ячейку записывать адрес, а потом сравнивать, есть ли он уже в массиве, но это непростой алгоритм, для многократного прохода цикла нужно внимательно думать, чтобы не перетереть адреса
-
@StoneWeaver Ну да, в такой реализации получится не малый код на создание массива, заполнение его и сравнивание потом с регистром инструкции. Ну и наверно да, чтоб в каждом следующем бою данные актуализировались - нужно будет выключать и включать скрипт каждый раз наверно. Я так понял.
-
@Partizan1078 если есть герои меча и магии 7, посмотри инструкцию - 1401E4F72 - MMH7Game-Win64-Shipping.PIBGetInterface+2D2 - cmp [rcx+000006EC],eax. Посмотри адреса к которым она обращается именно в бою когда поле боя на экране.
-
Дело такое.
Игра сделана на Unreal engine.
Это говорит о том что проще всего выходить на игровой мир и уже от него строить указатели. Как то так.
Версия игры 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 }
Пользовался инструментом для СЕ
Тык -
@Partizan1078 оу, сколько инфы... Расскажи по подробней что за приспособа и как её пользовать? На моей СЕ 6.8.3 приспособа не работает. Когда запускаю скрипт Unreal Engine, то он не активируется. А Tools просто везде по вопросам выдаёт.
Ну и скрипт World тоже не отрабатывает. По оффсетам с скрина твоего у меня пусто. Видимо версия игры не та. К тому же ты говоришь - выходить на мир. Но на скрине я у тебя не увидел кол-во войск в бою которые мне нужны. А только касаемо перса информация выводится. -
@Partizan1078 И можешь поподробней объяснить как мне к примеру попасть в анализе структур в такой же массив как у тебя на скрине с описанием смещения? Как отловить начало структуры мира? Моя версия игры - 1.6 34396
-
@Iniar ce 7.5. Я и не искал того что тебе нужно. Я по быстрому просто глянул. Что к чему.
-
@Partizan1078 Ну я пока ничего не понял, как с твоей приспособой взаимодействовать. Поставил 7.5, но просто тыкаю по пунктам скриптов и не понимаю связей пока. Что-то срабатывает, где-то просто вопросы. Так что вопрос по поводу моего начального топика всё ещё актуален. Как по очереди записать в метки значение нескольких адресов. По твоему примеру сделал скрипт которые сверяет по смещению 4C от начала структуры войск в бою значения 121,122,123... о которых писал выше, но в переменных w1,w2 и т.д. помещается один и тот же адрес и значения скачут.
-
-
@Partizan1078 Спасибо за ссылку на видео уроки. Тема уже старая, но я посмотрел. Многие навыки уже получил самостоятельно, но несколько заметок из уроков вынес. Но хочу сказать, что я не совсем начинающий в CE, просто сам знаешь, всё знать невозможно и для этого и есть форумы, чтоб делиться опытом.
-