LIRW Опубликовано 12 августа, 2015 Поделиться Опубликовано 12 августа, 2015 Всем привет. В общем щас поиграть решил в Kholat, а там постоянно ошибаешься в пути - ну я решил телепорт сделать Нашел координаты, прописал их в скрипт, ну и естественно тестировать начал.... Но при активации скрипта, игра вылетела(краш обычный с ошибками) Думаю надо посмотреть ещо раз координаты, ну сверить - мало ли что там ошибся. Но нет - всё там правильно. Подумал вот что, мол просто так то смещения не пропишешь на другие оси и мало ли там работает ещо с какими адресами инструкция. Ну и задумал сделать для каждой инструкции аоб сделать, что бы лишнее не лезло: так как там инструкций выпадает на адресе штук 20 и не которые видать с обьектами там какими работают. Стал каждое смещение проверять и вот что выпало. как так не знай. Вот скрипт, в который прописывал координаты. И что не так - не пойму, может кто знает в чем дело Вот окно краша - мало ли, может чем поможет оно. Ну понять из за чего она возникает - эта ошибка я имею введу. [ENABLE]aobscanmodule(_loadAOB,Kholat-Win64-Shipping.exe,F3xxxxxxxxxxxxxxF3xxxxxxxxxxF3xxxxxxxxxxF2xxxxxxxxxx8Bxxxxxx89xxxxxxF2xxxxxxxxxxF3xxxxxxxxxxF3xxxxxxxxxxxxxx0F28xx4Cxxxx44xxxx48xxxx48xxxxxxxx48)alloc(MyCheat,2048,"Kholat-Win64-Shipping.exe"+109248)label(_loadRet)label(_loadOrg)label(coordX)label(coordY)label(coordZ)label(_save)label(_load)label(_saveCoords)label(_loadCoords)registersymbol(_saveCoords)registersymbol(_loadCoords)registersymbol(_loadAOB)MyCheat:_save:cmp [_saveCoords],1jne short _loadpush raxmov rax,[rcx+000000C0]mov [coordX],raxmov rax,[rcx+000000C4]mov [coordY],raxmov rax,[rcx+000000C8]mov [coordZ],raxpop raxmov [_saveCoords],0jmp _loadOrg_load:cmp [coordX],0je short _loadOrgcmp [_loadCoords],1jne short _loadOrgpush raxmov rax,[coordX]mov [rcx+000000C0],raxmov rax,[coordY]mov [rcx+000000C4],raxmov rax,[coordZ]mov [rcx+000000C8],raxpop raxmov [_loadCoords],0_loadOrg:movss xmm1,[rcx+000000C8]jmp _loadRetcoordX:dd 0coordY:dd 0coordZ:dd 0_saveCoords:dd 0_loadCoords:dd 0_loadAOB:jmp _savedb 90_loadRet:[DISABLE]_loadAOB:movss xmm1,[rcx+000000C8]unregistersymbol(_saveCoords)unregistersymbol(_loadCoords)unregistersymbol(_loadAOB)dealloc(MyCheat) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2015 Поделиться Опубликовано 12 августа, 2015 (изменено) Частая ошибка при переходе с 32-битных игрушек на 64. Координаты - 4 байта. При копировании в полный регистр ( у тебя rax - 8 байт) копируется не всё нужное, поэтому и вылет. Поменяй регистр rax на eax: push rax // эти rax можно оставитьmov eax,dword ptr [rcx+000000C0] // а эти поменять на eaxmov [coordX],eaxmov eax,dword ptr [rcx+000000C4]mov [coordY],eaxmov eax,dword ptr [rcx+000000C8]mov [coordZ],eaxpop rax // эти rax можно оставить// Ну и далее по коду, поменяй всё.Ну и ещё если инструкция работает не только с координатами (хотя навряд ли), то фильтр. Изменено 12 августа, 2015 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 12 августа, 2015 Автор Поделиться Опубликовано 12 августа, 2015 (изменено) Игорь про фильтр я думал, но если посмотреть на скриншет, то заметишь - что адреса то инструкций вроде как на вид то разные, а почему то срабатывает постоянно С0 на всех смещениях... и на с4 и на с8 Щас попробую регистр сменить... Я хотел сделать фильр, но инструкций то нет... Выпадает только одна на смещение С0 по всем адресам. Я уже думал - мол аоб на каждую сделать, но не тут то оно было... Краш так же идет И фиг его знает почему. Изменено 12 августа, 2015 пользователем LIRW Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2015 Поделиться Опубликовано 12 августа, 2015 Жень, попробуй использовать в скрипте регистр xmm1 из инструкции, с которой ты делал скрипт, он всё равно ею затирается.Примерно так (но это не точно, нужно посмотреть как правильно пишутся скрипты с этими регистрами):movss xmm1,[rcx+000000C0]movss [coordX],xmm1movss xmm1,[rcx+000000C4]movss [coordY],xmm1movss xmm1,[rcx+000000C8]movss [coordZ],xmm1Ну и в секции Load тоже самое сделай. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 12 августа, 2015 Автор Поделиться Опубликовано 12 августа, 2015 (изменено) Изменил я регистр Игорь... Добавил 3 нупа за место одного, просмотрел просто... Теперь активируется телепорт, сохраняет позицию, а вот если её загрузить - сразу крашь... Может какой домик с собой тащу... но работает то вроде с 1 адресом инструкция... А вот по другим смещениям не могу проверить не отображает их отладчик... Берет постоянно 0С смещение (на любом из адресе координат) хотя в структуре они через 4 идут Почему то пропускает смешение везде C4 а без неё то не сделаю... И её явно надо отбирать тоже от лишних обьектов. Но если её не показывает - не сверить не как Kholat-Win64-Shipping.opus_repacketizer_out_range+D59AC - FF 90 D0030000 - call qword ptr [rax+000003D0]Kholat-Win64-Shipping.opus_repacketizer_out_range+D59B2 - EB 28 - jmp Kholat-Win64-Shipping.opus_repacketizer_out_range+D59DCKholat-Win64-Shipping.opus_repacketizer_out_range+D59B4 - 0F28 89 C0000000 - movaps xmm1,[rcx+000000C0]Kholat-Win64-Shipping.opus_repacketizer_out_range+D59BB - 0F28 C1 - movaps xmm0,xmm1Kholat-Win64-Shipping.opus_repacketizer_out_range+D59BE - F3 0F11 4C 24 20 - movss [rsp+20],xmm1Kholat-Win64-Shipping.opus_repacketizer_out_range+D59C4 - 0FC6 C1 55 - shufps xmm0,xmm1,55Kholat-Win64-Shipping.opus_repacketizer_out_range+D59C8 - F3 0F10 89 C8000000 - movss xmm1,[rcx+000000C8]Можно закрывать - решили с Игорем данный вопрос... Таблицу по посже выложу в соответствующий раздел. Изменено 12 августа, 2015 пользователем LIRW Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения