C++ Вопрос Jni minecraft

Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
как можно получить имя игрока через jni?(в forge api это делается через getDisplayName) я попытался сделать вот так:

C++:
std::string c_player::get_username( ) {
    const auto env = gasper::jni->get_env( );
    const auto name_func = env->GetMethodID( gasper::jni->get_env( )->GetObjectClass( player_obj ), "func_82833_r", "()Ljava/lang/String;" );
    const auto ret = (jstring)env->CallObjectMethod( player_obj, name_func );

    const char* jstr = env->GetStringUTFChars( ret, NULL );
    const std::string cs( jstr );
    env->ReleaseStringUTFChars( ret, jstr );
    return cs;
}
(юзаю вот это сдк
Пожалуйста, авторизуйтесь для просмотра ссылки.
)

но почему-то GetMethodID возвращает 0, хотя должен не 01665299533525.png
 
Girl
Пользователь
Статус
Оффлайн
Регистрация
11 Ноя 2019
Сообщения
248
Реакции[?]
46
Поинты[?]
3K
Маппинги то хоть правильные? Декомпильни клиент и сверь.
И раз уж инициализировал переменную, будь добр использовать ее, а не гетать опять в: gasper::jni->get_env( )->GetObjectClass.
 
Начинающий
Статус
Оффлайн
Регистрация
5 Янв 2022
Сообщения
112
Реакции[?]
19
Поинты[?]
0
Маппинги то хоть правильные? Декомпильни клиент и сверь.
И раз уж инициализировал переменную, будь добр использовать ее, а не гетать опять в: gasper::jni->get_env( )->GetObjectClass.
1665303618834.png
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
Маппинги то хоть правильные? Декомпильни клиент и сверь.
конечно же правильные, скрин чекни

И раз уж инициализировал переменную, будь добр использовать ее, а не гетать опять в: gasper::jni->get_env( )->GetObjectClass
по фасту делал, не заметил
 
Girl
Пользователь
Статус
Оффлайн
Регистрация
11 Ноя 2019
Сообщения
248
Реакции[?]
46
Поинты[?]
3K
В душе не ебу что за таблица, похожа на cvs от mcpbot, там в каждом патче вроде маппинги могут пойти по пизде, допустим в 1.12 были одни, в 1.12.2 были другие, логичнее все же проверить руками.
Под какую версию игры пишешь вообще?
 
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пиши чит на джаве и будет тебе счастье
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
кек.
1.7.10/1.6.4(там идентичные маппинги)
ну да братан, только загвоздка в том что на хачкаэсе кастомный ремап(еще и динамичный) и зачем ты тут всем мозги ебал не проверив джарку майнкрафта до сих пор не ясно
ответом на твой вопрос будет :
1) камон хкс давно dead
2) ремап динамичный(с шафлом филдов и методов), придется по патернам инструкций искать все методы/филды их сиги и классы а потом всю эту ебень тащить в свой чит
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
кек.

ну да братан, только загвоздка в том что на хачкаэсе кастомный ремап(еще и динамичный) и зачем ты тут всем мозги ебал не проверив джарку майнкрафта до сих пор не ясно
ответом на твой вопрос будет :
1) камон хкс давно dead
2) ремап динамичный(с шафлом филдов и методов), придется по патернам инструкций искать все методы/филды их сиги и классы а потом всю эту ебень тащить в свой чит
так даже в обычном майнкрафте не работает получение имени
 
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
так даже в обычном майнкрафте не работает получение имени
дампи классы и проверяй маппинги(форджи и прочая ебень еще на этапе загрузки классов применяет миллион трансформеров).
еще проблема может быть в кастомном класслоадере форджа.
FindClass из jni ищет классы лишь в нулевом класслоадере.если классы загружены в кастомный класслоадер, то тебе нужно получать инстанс этого класслоадера и использовать экспорт из jvm.dll - FindClassFromClassLoader
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
дампи классы и проверяй маппинги(форджи и прочая ебень еще на этапе загрузки классов применяет миллион трансформеров).
еще проблема может быть в кастомном класслоадере форджа.
FindClass из jni ищет классы лишь в нулевом класслоадере.если классы загружены в кастомный класслоадер, то тебе нужно получать инстанс этого класслоадера и использовать экспорт из jvm.dll - FindClassFromClassLoader
как можно дампить эти классы(как я понял джава классы или что)?

и что нужно передавать в FindClassFromClassLoader?
 
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как можно дампить эти классы(как я понял джава классы или что)?

и что нужно передавать в FindClassFromClassLoader?
ну если речь про обычную джаву то юзай ClassFileLoadHook, если про пересобранную(там скорее всего его вырежут), то юзай хук любого говна который начинается с нативного дефайнкласса.примеров в инете куча.
C++:
    JVM_FindClassFromClassLoader (JNIEnv *env, const char *name, jboolean init, jobject loader, jboolean throwError)
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
ну если речь про обычную джаву то юзай ClassFileLoadHook, если про пересобранную(там скорее всего его вырежут), то юзай хук любого говна который начинается с нативного дефайнкласса.примеров в инете куча.
C++:
    JVM_FindClassFromClassLoader (JNIEnv *env, const char *name, jboolean init, jobject loader, jboolean throwError)
а как можно этот филд находить как-то кодом, а не вручную?
1665367510957.png
я ещё нашёл просто в памяти, попытался сделать паттерн, но крашнуло при поиске паттерна(в дебаггере)
 
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а как можно этот филд находить как-то кодом, а не вручную?
Посмотреть вложение 224102
я ещё нашёл просто в памяти, попытался сделать паттерн, но крашнуло при поиске паттерна(в дебаггере)
ты не понял.паттерн в данном случае - последовательность джава инструкций по которым ты можешь найти какой нибудь GET/PUT FIELD а в них как раз таки и будет лежать вся нужная информация для твоей реализации с плюсов используя jni.
для такого парсера юзай
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
ты не понял.паттерн в данном случае - последовательность джава инструкций по которым ты можешь найти какой нибудь GET/PUT FIELD а в них как раз таки и будет лежать вся нужная информация для твоей реализации с плюсов используя jni.
для такого парсера юзай
Пожалуйста, авторизуйтесь для просмотра ссылки.
можно пример? это программа даже не запускается
 
Забаненный
Статус
Оффлайн
Регистрация
26 Июн 2022
Сообщения
90
Реакции[?]
10
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
можно пример? это программа даже не запускается
ну, ты бы ещё дллку пытался запустить.
это библиотека.
на счет примеров, их нет.
я бы может быть бы и написал, но не вижу смысла после "эта программа даже не запускается".
 
Сверху Снизу