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

x64 Проектный Minecraft, скрипт поиска адреса игрока


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

Minercraft 1.7.10, java x64

Проектный

Скрытый текст

Здесь рассказано как сделать скрипт ищущий адрес игрока (простой переход по указателям) из структуры хранящей основные адреса связанные с игроком, эта структура в свою очередь будет искаться с помощью aobscan. Проектный Minercraft это вид minercraft с лаунчером проекта, то есть лаунчером отличным от обычного лаунчера этой игры, то есть он имеет тематический лаунчер проекта (не знаю как лучше объяснить). Как мне удалось заметить, он отличается от обычного, но все проектные схожи друг с другом, потому созданный в этой теме скрипт скорее всего будет работать на любом проектном minecraft на любых серверах.

 

Для начала необходимо найти сам адрес игрока, сделать это на сервере проще всего по векторному ускорению игрока. Оно имеет тип doble.
Делать мы это будем следующим образом:
Встаём на земле, ищем неизвестное значение, залезаем в воду - ищем увеличилось, и так далее. Вместо залезания в воду можно прыгнуть или еще как либо изменить ускорение игрока по вертикальной оси.

Скрытый текст

Значение в 4х байтах: 3214179041 в воде, 3216249349 на суше.

 

Предположим нам удалось найти адрес структуры игрока таким образом. У нас есть адрес игрока, делаем все так же как и при простом поиске указателя, ищем полученный адрес с помощью поиска в hex 4 байта, у нас найдет очень много значений. Отсеиваем их пока не останется около 30

Скрытый текст

c84771bf92646a25.png?width=877&height=45


Ставим бряк на доступ к найденным адресам и находим тот в котором будет инструкция со смещением.

Скрытый текст

2.png?width=877&height=458


Мы находим адрес структуры в которой лежит адрес игрока, он то нам и нужен, делаем анализ структур

Скрытый текст

3.png?width=877&height=458


Наш адрес игрока лежит по смещению +84. Дальше указатели искать бессмысленно, лучше вывести сигнатуру из части этой структуры, которая всегда будет одинакова и уникальна, сделать это можно из первых значений в структуре.

Скрытый текст

4.png?width=877&height=458


Это - размеры отображаемого пространства, проверить можно изменив одно значение:

Скрытый текст

5.png?width=877&height=458


Исходя из этого можно понять что эти адреса всегда будут уникальны, потому можно смело сделать из этого следующую сигнатуру, у меня получилась вот такая: C0 02 00 00 10 27 00 00 56 03 00 00

Осталось лишь написать скрипт который будет записывать в метки нужные нам адреса, так как 64x процесс CE думает что указатели по 8 байт, и при простом переходе по указателям получается невесть что, потому попробуем сделать запись адресов через скрипт.
Получившийся у меня скрипт:

Скрытый текст

[ENABLE]
aobscan(FindDynamicPlayerPointer,C0 02 00 00 10 27 00 00 56 03 00 00) //Поиск куска структуры
alloc(adresspl,100)
label(playeradress)
label(strplayeradress)
registersymbol(adresspl)
registersymbol(playeradress)
registersymbol(strplayeradress)

adresspl:
mov eax,FindDynamicPlayerPointer //Адрес найденной сигнатуры
sub eax,30 //Смещает до начала структуры с адресами
mov dword [strplayeradress+4],eax //Записываем адрес структуры в метку
mov eax,[eax+84] //Добавляем смещение до адреса игрока
mov dword [playeradress+4],eax //Записываем адрес игрока в метку
//Мои дополнения:
mov eax,[strplayeradress+4] //Возвращаем в eax адрес структуры с адресами
mov eax,[eax+6C] //Записываем в eax адрес структуры с данными о выделенном блоке
mov dword [strplayeradress+C],eax //В метку его
mov eax,[strplayeradress+4] //Возвращаем адрес структуры с адресами
mov eax,[eax+A8] //По смещениям
mov eax,[eax+F8] //По смещениям
mov dword [strplayeradress+14],eax //В метку адрес с параметрами о предмете в руке
ret //Возврат

playeradress:
dd 0 0
strplayeradress:
dq 0 0 0 0 0

createthread(adresspl) //Создание потока
[DISABLE]
dealloc(adresspl)
unregistersymbol(strplayeradress)
unregistersymbol(playeradress)
unregistersymbol(adresspl)

 


Таким образом - скрипт ищет адрес структуры, потом вызывает поток который запишет адреса в метки и вернется.
Как выглядит у меня:

Скрытый текст

6.png?width=877&height=458

 

Активируем:

Скрытый текст

7.png?width=877&height=458

 

Ваши значения в структуре могут быть иными, потому сигнатура может не работать, например из за иного разрешения экрана, потому надо найти её самостоятельно.
Использовать эти адреса можно как угодно, например сделать моментальное ломание любых блоков на сервере, в том числе и коренной породы. Надо учитывать что адреса меняются после перехода в другой мир или при смерти игрока, потому надо перезапускать поиск. Я считаю что есть способы более удобные, но это пожалуй для 32 битной java, а здесь лучшего способа чем этот мне пока найти не удалось.

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

×
×
  • Создать...

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

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