Перейти к содержанию

Телепорт.


LIRW

Рекомендуемые сообщения

Всем привет. 

В общем щас поиграть решил в Kholat, а там постоянно ошибаешься в пути - ну я решил телепорт сделать :)  

Нашел координаты, прописал их в скрипт, ну и естественно тестировать начал.... Но при активации скрипта, игра вылетела(краш обычный с ошибками)  

Думаю надо посмотреть ещо раз координаты, ну сверить - мало ли что там ошибся. Но нет - всё там правильно. 

Подумал вот что, мол просто так то смещения не пропишешь на другие оси и мало ли там работает ещо с какими адресами инструкция.  

Ну и задумал сделать для каждой инструкции аоб сделать, что бы лишнее не лезло: так как там инструкций выпадает на адресе штук 20 и не которые видать с обьектами там какими работают. 

Стал каждое смещение проверять и вот что выпало.  :rolleyes:  как так не знай.  

Вот скрипт, в который прописывал координаты. И что не так - не пойму, может кто знает в чем дело :unsure:

3a14145f1e8ab053ab598289dc56c6fe.jpg

Вот окно краша - мало ли, может чем поможет оно. Ну понять из за чего она возникает - эта ошибка я имею введу. 

08c91e7343f0c8e9efb3538e7fb6f55f.jpg

[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) 
Ссылка на комментарий
Поделиться на другие сайты

Частая ошибка при переходе с 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 можно оставить// Ну и далее по коду, поменяй всё.

Ну и ещё если инструкция работает не только с координатами (хотя навряд ли), то фильтр.

Изменено пользователем Garik66
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Игорь про фильтр я думал, но если посмотреть на скриншет, то заметишь - что адреса то инструкций вроде как на вид то разные, а почему то срабатывает постоянно С0 на всех смещениях... и на с4 и на с8 

Щас попробую регистр сменить... Я хотел сделать фильр, но инструкций то нет... Выпадает только одна на смещение С0 по всем адресам. Я уже думал - мол аоб на каждую сделать, но не тут то оно было... 

Краш так же идет  :mellow:  И фиг его знает почему. 

Изменено пользователем LIRW
Ссылка на комментарий
Поделиться на другие сайты

Жень, попробуй использовать в скрипте регистр xmm1 из инструкции, с которой ты делал скрипт, он всё равно ею затирается.

Примерно так (но это не точно, нужно посмотреть как правильно пишутся скрипты с этими регистрами):

movss xmm1,[rcx+000000C0]movss [coordX],xmm1movss xmm1,[rcx+000000C4]movss [coordY],xmm1movss xmm1,[rcx+000000C8]movss [coordZ],xmm1

Ну и в секции Load тоже самое сделай.

Ссылка на комментарий
Поделиться на другие сайты

Изменил я регистр Игорь... Добавил 3 нупа за место одного, просмотрел просто... Теперь активируется телепорт, сохраняет позицию, а вот если её загрузить - сразу крашь... Может какой домик с собой тащу... но работает то вроде с 1 адресом инструкция... А вот по другим смещениям не могу проверить  :unsure:  не отображает их отладчик... Берет постоянно 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]

Можно закрывать - решили с Игорем данный вопрос... Таблицу по посже выложу в соответствующий раздел.

Изменено пользователем LIRW
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.