Я пытаюсь ввести файл DLL в Labymod 1.21.3, чтобы удалить задержку прыжка. Моя текущая проблема заключается в том, что функция getMineCraftClass () не возвращает nullptr, но getMineCraft () возвращает один. Таким образом, вывод консоли при инъекции файла DLL выглядит следующим образом: запустите модули Minecraft Encement не найден < /p>
Код начинает выполняться в функции runModules (). Вывод консоли также показывает, что getMineCraftMethod в getMineCraft () не является NullPtr, но возвращаемое значение getMineCraft () одно. Кроме того, код работал для Vanilla 1.8.9 (конечно, с другими запутанными именами). Кто -нибудь знает проблему? Может, это что -то с загрузчиком или потоком класса? < /P>
#include "Cheat.h"
#include "Java.h"
#include
#include
#include
static jclass minecraftClassGlobalRef = nullptr;
jclass getMinecraftClass() {
if (minecraftClassGlobalRef == nullptr) {
jclass localClass = ct.env->FindClass("fmg"); // Labymod fmg = Minecraft class
if (localClass != nullptr) {
minecraftClassGlobalRef = (jclass)ct.env->NewGlobalRef(localClass);
ct.env->DeleteLocalRef(localClass);
}
}
return minecraftClassGlobalRef;
}
jobject getMinecraft() {
jmethodID getMinecraftMethode = ct.env->GetStaticMethodID(getMinecraftClass(), "Q", "()Lfmg;"); // Labymod fmg = Minecraft class || Labymod get function = Q
if (getMinecraftMethode == nullptr) {
OutputDebugStringA("Get Minecraft method failed");
return nullptr;
}
return ct.env->CallStaticObjectMethod(getMinecraftClass(), getMinecraftMethode);
}
jobject getWorld() {
jfieldID getWorldField = ct.env->GetFieldID(getMinecraftClass(), "f", "Lbdb;"); // bdb -> World class
return ct.env->GetObjectField(getMinecraft(), getWorldField);
}
jobject getPlayer() {
jfieldID getPlayerField = ct.env->GetFieldID(getMinecraftClass(), "t", "Lgkh;"); // Labymod gkh = LocalPlayer class
return ct.env->GetObjectField(getMinecraft(), getPlayerField);
}
void setNoJumpDelay() {
jobject playerObject = getPlayer();
jclass gkhClass = ct.env->GetObjectClass(playerObject);
jfieldID noJumpDelayField = ct.env->GetFieldID(gkhClass, "cf", "I");// Labymod noJumpDelay variable name = cf -> Set to 0 to remove jump delay
if (noJumpDelayField != nullptr) {
ct.env->SetIntField(playerObject, noJumpDelayField, 0);
}
}
void runModules() {
OutputDebugStringA("Run modules");
if (getMinecraftClass() == nullptr) {
OutputDebugStringA("Minecraft class not found");
return;
}
if (getMinecraft() == nullptr) {
OutputDebugStringA("Minecraft instance not found");
return;
}
while (true) {
if (!getMinecraft()) continue;
OutputDebugStringA("Minecraft found");
//if (!getWorld()) continue;
if (!getPlayer()) continue;
OutputDebugStringA("Player found");
setNoJumpDelay();
std::this_thread::sleep_for(std::chrono::milliseconds(5));
}
}
< /code>
Я уже проверил различные способы доступа к экземпляру Minecraft. Я сделал глобальную ссылку Minecraft Class A, попытался получить доступ к переменной экземпляра вместо использования getter, и попытался получить доступ к ClassLoader через потоки. К сожалению, все это до сих пор не дало никаких результатов.
Подробнее здесь: https://stackoverflow.com/questions/797 ... mod-1-21-3
Minecraft DLL Labymod 1.21.3 ⇐ C++
Программы на C++. Форум разработчиков
1756556282
Anonymous
Я пытаюсь ввести файл DLL в Labymod 1.21.3, чтобы удалить задержку прыжка. Моя текущая проблема заключается в том, что функция getMineCraftClass () не возвращает nullptr, но getMineCraft () возвращает один. Таким образом, вывод консоли при инъекции файла DLL выглядит следующим образом: запустите модули Minecraft Encement не найден < /p>
Код начинает выполняться в функции runModules (). Вывод консоли также показывает, что getMineCraftMethod в getMineCraft () не является NullPtr, но возвращаемое значение getMineCraft () одно. Кроме того, код работал для Vanilla 1.8.9 (конечно, с другими запутанными именами). Кто -нибудь знает проблему? Может, это что -то с загрузчиком или потоком класса? < /P>
#include "Cheat.h"
#include "Java.h"
#include
#include
#include
static jclass minecraftClassGlobalRef = nullptr;
jclass getMinecraftClass() {
if (minecraftClassGlobalRef == nullptr) {
jclass localClass = ct.env->FindClass("fmg"); // Labymod fmg = Minecraft class
if (localClass != nullptr) {
minecraftClassGlobalRef = (jclass)ct.env->NewGlobalRef(localClass);
ct.env->DeleteLocalRef(localClass);
}
}
return minecraftClassGlobalRef;
}
jobject getMinecraft() {
jmethodID getMinecraftMethode = ct.env->GetStaticMethodID(getMinecraftClass(), "Q", "()Lfmg;"); // Labymod fmg = Minecraft class || Labymod get function = Q
if (getMinecraftMethode == nullptr) {
OutputDebugStringA("Get Minecraft method failed");
return nullptr;
}
return ct.env->CallStaticObjectMethod(getMinecraftClass(), getMinecraftMethode);
}
jobject getWorld() {
jfieldID getWorldField = ct.env->GetFieldID(getMinecraftClass(), "f", "Lbdb;"); // bdb -> World class
return ct.env->GetObjectField(getMinecraft(), getWorldField);
}
jobject getPlayer() {
jfieldID getPlayerField = ct.env->GetFieldID(getMinecraftClass(), "t", "Lgkh;"); // Labymod gkh = LocalPlayer class
return ct.env->GetObjectField(getMinecraft(), getPlayerField);
}
void setNoJumpDelay() {
jobject playerObject = getPlayer();
jclass gkhClass = ct.env->GetObjectClass(playerObject);
jfieldID noJumpDelayField = ct.env->GetFieldID(gkhClass, "cf", "I");// Labymod noJumpDelay variable name = cf -> Set to 0 to remove jump delay
if (noJumpDelayField != nullptr) {
ct.env->SetIntField(playerObject, noJumpDelayField, 0);
}
}
void runModules() {
OutputDebugStringA("Run modules");
if (getMinecraftClass() == nullptr) {
OutputDebugStringA("Minecraft class not found");
return;
}
if (getMinecraft() == nullptr) {
OutputDebugStringA("Minecraft instance not found");
return;
}
while (true) {
if (!getMinecraft()) continue;
OutputDebugStringA("Minecraft found");
//if (!getWorld()) continue;
if (!getPlayer()) continue;
OutputDebugStringA("Player found");
setNoJumpDelay();
std::this_thread::sleep_for(std::chrono::milliseconds(5));
}
}
< /code>
Я уже проверил различные способы доступа к экземпляру Minecraft. Я сделал глобальную ссылку Minecraft Class A, попытался получить доступ к переменной экземпляра вместо использования getter, и попытался получить доступ к ClassLoader через потоки. К сожалению, все это до сих пор не дало никаких результатов.
Подробнее здесь: [url]https://stackoverflow.com/questions/79751142/minecraft-dll-injection-labymod-1-21-3[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия