Защита minecraf.jar от изменений с помощью мода

Версия Minecraft
1.5.2
3
0
Возникла необходимость защиты от любых изменений Minecraft.jar с помощью мода. Как сделать так, чтобы при инциализации, мод чекал классы minecraft.jar и определял изменены они или нет(допустим от значений, которые внесены в самом моде). При несостыковках - происходил бы краш клиента.
В идеале бы пример кода)
 
Решение
У тебя знакомый ник._.
Пример кода не дам, но тебе нужно заранее вычеслить дигест всех классов ну или minecraft.jar в целом(менее надежно). После запуска майна все перепроверять.
2 вариант убрать возможность создания IFMLLodingPlugin(его использования)

И то и другое не спасет.
1,111
47
420
У тебя знакомый ник._.
Пример кода не дам, но тебе нужно заранее вычеслить дигест всех классов ну или minecraft.jar в целом(менее надежно). После запуска майна все перепроверять.
2 вариант убрать возможность создания IFMLLodingPlugin(его использования)

И то и другое не спасет.
 
1,111
47
420
Кстати классы подгружаються динамичски из-за чего тебе придеться сравнивать уже после их загрузки и обработки. В случае же с форджем, он ставит свой ClassLoader который работает с IFMLLoadingPlugin. Если запретить именно модам, то достаточно будет заменить поведение этого ClassLoader, но изменить это хуком не получиться по понятным причинам.
 

CumingSoon

Местный стендапер
1,634
12
269
Ко-о-о-нечно же, и эту защиту можно обойти. Но зачем считать каждый класс? Невыгодно.
Считай хэш файла в целом. Он будет разным при разных данных, коллизий не должно быть. MD5 пойдёт. И это куда быстрее, чем делать то же, но для каждого класса(а их там под тысячу, если не больше)
Линк: Контрольная сумма — Википедия
 
1,111
47
420
Ко-о-о-нечно же, и эту защиту можно обойти. Но зачем считать каждый класс? Невыгодно.
Считай хэш файла в целом. Он будет разным при разных данных, коллизий не должно быть. MD5 пойдёт. И это куда быстрее, чем делать то же, но для каждого класса(а их там под тысячу, если не больше)
Линк: Контрольная сумма — Википедия
А когда ты проверишь на сходство?
 
1,111
47
420
Я это к чему говорю. Сравнить Digest каждого класса имеет смысл т.к. они грузяться по мере надобности. И сравнивать их так же нужно по мере надобности. А дигест всего бинарника так не смогет, т.к. изменения байт кода модами не отражаються на жестком диске.
 

CumingSoon

Местный стендапер
1,634
12
269
Ну примерно такой вариант я и подразумевал. По поводу взлома можно сделать кучу проверок сертификата, обфусцировать и прочее такое. Тогда взлом будет довольно запарным занятием.
Машина Голдберга
 

CumingSoon

Местный стендапер
1,634
12
269
Нет. Только такую, на которое уходит большое количества времени и которая существенно замедляет загрузку игры, к примеру.
Если код чистый и правильный, то сложно будет сделать грязный хак. Помнится в LastDays разработчик-инвалид(прости, Наиль) накодил пакеты так, что можно было с клиента отправить пакет с числом, допустим, 64, чтобы получить 64 предмета. Бо не надо отсылать с клиента такую информацию - это дела сервера.
 
Сверху