Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

C++ Jni minecraft

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

C++:
Expand Collapse Copy
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, хотя должен не 0
1665299533525.png
 
Маппинги то хоть правильные? Декомпильни клиент и сверь.
И раз уж инициализировал переменную, будь добр использовать ее, а не гетать опять в: gasper::jni->get_env( )->GetObjectClass.
 
Маппинги то хоть правильные? Декомпильни клиент и сверь.
И раз уж инициализировал переменную, будь добр использовать ее, а не гетать опять в: gasper::jni->get_env( )->GetObjectClass.
1665303618834.png
 
Маппинги то хоть правильные? Декомпильни клиент и сверь.
конечно же правильные, скрин чекни

И раз уж инициализировал переменную, будь добр использовать ее, а не гетать опять в: gasper::jni->get_env( )->GetObjectClass
по фасту делал, не заметил
 
В душе не ебу что за таблица, похожа на cvs от mcpbot, там в каждом патче вроде маппинги могут пойти по пизде, допустим в 1.12 были одни, в 1.12.2 были другие, логичнее все же проверить руками.
Под какую версию игры пишешь вообще?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пиши чит на джаве и будет тебе счастье
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
кек.
1.7.10/1.6.4(там идентичные маппинги)
ну да братан, только загвоздка в том что на хачкаэсе кастомный ремап(еще и динамичный) и зачем ты тут всем мозги ебал не проверив джарку майнкрафта до сих пор не ясно
ответом на твой вопрос будет :
1) камон хкс давно dead
2) ремап динамичный(с шафлом филдов и методов), придется по патернам инструкций искать все методы/филды их сиги и классы а потом всю эту ебень тащить в свой чит
 
кек.

ну да братан, только загвоздка в том что на хачкаэсе кастомный ремап(еще и динамичный) и зачем ты тут всем мозги ебал не проверив джарку майнкрафта до сих пор не ясно
ответом на твой вопрос будет :
1) камон хкс давно dead
2) ремап динамичный(с шафлом филдов и методов), придется по патернам инструкций искать все методы/филды их сиги и классы а потом всю эту ебень тащить в свой чит
так даже в обычном майнкрафте не работает получение имени
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
так даже в обычном майнкрафте не работает получение имени
дампи классы и проверяй маппинги(форджи и прочая ебень еще на этапе загрузки классов применяет миллион трансформеров).
еще проблема может быть в кастомном класслоадере форджа.
FindClass из jni ищет классы лишь в нулевом класслоадере.если классы загружены в кастомный класслоадер, то тебе нужно получать инстанс этого класслоадера и использовать экспорт из jvm.dll - FindClassFromClassLoader
 
дампи классы и проверяй маппинги(форджи и прочая ебень еще на этапе загрузки классов применяет миллион трансформеров).
еще проблема может быть в кастомном класслоадере форджа.
FindClass из jni ищет классы лишь в нулевом класслоадере.если классы загружены в кастомный класслоадер, то тебе нужно получать инстанс этого класслоадера и использовать экспорт из jvm.dll - FindClassFromClassLoader
как можно дампить эти классы(как я понял джава классы или что)?

и что нужно передавать в FindClassFromClassLoader?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как можно дампить эти классы(как я понял джава классы или что)?

и что нужно передавать в FindClassFromClassLoader?
ну если речь про обычную джаву то юзай ClassFileLoadHook, если про пересобранную(там скорее всего его вырежут), то юзай хук любого говна который начинается с нативного дефайнкласса.примеров в инете куча.
C++:
Expand Collapse Copy
    JVM_FindClassFromClassLoader (JNIEnv *env, const char *name, jboolean init, jobject loader, jboolean throwError)
 
ну если речь про обычную джаву то юзай ClassFileLoadHook, если про пересобранную(там скорее всего его вырежут), то юзай хук любого говна который начинается с нативного дефайнкласса.примеров в инете куча.
C++:
Expand Collapse Copy
    JVM_FindClassFromClassLoader (JNIEnv *env, const char *name, jboolean init, jobject loader, jboolean throwError)
а как можно этот филд находить как-то кодом, а не вручную?
1665367510957.png

я ещё нашёл просто в памяти, попытался сделать паттерн, но крашнуло при поиске паттерна(в дебаггере)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а как можно этот филд находить как-то кодом, а не вручную?
Посмотреть вложение 224102
я ещё нашёл просто в памяти, попытался сделать паттерн, но крашнуло при поиске паттерна(в дебаггере)
ты не понял.паттерн в данном случае - последовательность джава инструкций по которым ты можешь найти какой нибудь GET/PUT FIELD а в них как раз таки и будет лежать вся нужная информация для твоей реализации с плюсов используя jni.
для такого парсера юзай
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
ты не понял.паттерн в данном случае - последовательность джава инструкций по которым ты можешь найти какой нибудь GET/PUT FIELD а в них как раз таки и будет лежать вся нужная информация для твоей реализации с плюсов используя jni.
для такого парсера юзай
Пожалуйста, авторизуйтесь для просмотра ссылки.
можно пример? это программа даже не запускается
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
можно пример? это программа даже не запускается
ну, ты бы ещё дллку пытался запустить.
это библиотека.
на счет примеров, их нет.
я бы может быть бы и написал, но не вижу смысла после "эта программа даже не запускается".
 
Назад
Сверху Снизу