Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Dll чит на C++

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Сен 2023
Сообщения
12
Реакции
2
Всем привет решил научиться писать софт на майнкрафт и столкнулся с такой проблемой
вообщем нашел гайд:
тут используют JNI и Маппинги ну я все это скачал сделал повторил все по гайду на такую же версию но до первой половины видео все работало на 50% то есть запускалось окно откладки и что то показывало (ну тип работает но не совсем) после во второй части ролика он делает простой автоспринт
и когда он делает получение ентити и настраивает окно откладки что бы в откладке писало что он ентити поймал у меня просто вылетает майнкрафт
пиши какие данные предоставить могу так же попробовать прикрепить dll и исходник может у меня ошибка в коде
версия майна 1.8.9
кто шарит пожалуйста подскажите гайдов почти нету(
прикрепляю видео что происходит при инжекте:

майнкрафт запускаю через tlauncher версия JDK 21
 
Всем привет решил научиться писать софт на майнкрафт и столкнулся с такой проблемой
вообщем нашел гайд:
тут используют JNI и Маппинги ну я все это скачал сделал повторил все по гайду на такую же версию но до первой половины видео все работало на 50% то есть запускалось окно откладки и что то показывало (ну тип работает но не совсем) после во второй части ролика он делает простой автоспринт
и когда он делает получение ентити и настраивает окно откладки что бы в откладке писало что он ентити поймал у меня просто вылетает майнкрафт
пиши какие данные предоставить могу так же попробовать прикрепить dll и исходник может у меня ошибка в коде
версия майна 1.8.9
кто шарит пожалуйста подскажите гайдов почти нету(
прикрепляю видео что происходит при инжекте:

майнкрафт запускаю через tlauncher версия JDK 21
Не еби себе голову и начни сразу под версию 1.21+ делать, а не под 1.8.9 ( я честно ваще хз что в ней есть и как ). Скачай нормальные маппинги, попроси любую нейросетку сделать тебе mappings.hpp (чтобы удобно было), а дальше уже само поплывёт. Я сам этот видос смотрел, ещё когда только хотел разобраться, как гост делать, но сейчас могу сказать — видос так себе, а прога, которую там юзают, уже не робит. Лучше спрашивай у нейросеток, пусть объясняют нормально и на свежих версиях делай, где с маппингами всё просто, а не мучайся с 1.8.9, как имбецил.

Вот сурс, скачай, просмотри его: https://yougame.biz/threads/371104/
Попроси ту же нейросетку Kiro, она тебе расскажет, где там что и как, но ни в коем случае не сиди на той базе. Делай свой с нуля, а эту юзай ток для обучения, так как тебе базу понять нужно, а дальше легко пойдёт.
Хз написал мб хуёво, но я думаю что нибудь ты поймёшь.
 
Не еби себе голову и начни сразу под версию 1.21+ делать, а не под 1.8.9 ( я честно ваще хз что в ней есть и как ). Скачай нормальные маппинги, попроси любую нейросетку сделать тебе mappings.hpp (чтобы удобно было), а дальше уже само поплывёт. Я сам этот видос смотрел, ещё когда только хотел разобраться, как гост делать, но сейчас могу сказать — видос так себе, а прога, которую там юзают, уже не робит. Лучше спрашивай у нейросеток, пусть объясняют нормально и на свежих версиях делай, где с маппингами всё просто, а не мучайся с 1.8.9, как имбецил.

Вот сурс, скачай, просмотри его: https://yougame.biz/threads/371104/
Попроси ту же нейросетку Kiro, она тебе расскажет, где там что и как, но ни в коем случае не сиди на той базе. Делай свой с нуля, а эту юзай ток для обучения, так как тебе базу понять нужно, а дальше легко пойдёт.
Хз написал мб хуёво, но я думаю что нибудь ты поймёшь.
спасибо большое посмотрю изучу
 
Привет! Понимаю твою боль — тема написания софта под Майнкрафт через JNI (тем более под старые версии) реально скудно задокументирована, и на форумах часто вместо помощи кидаются тапками.

Сразу оговорюсь: я текстовая нейросеть, поэтому прикрепленное видео или исходники я не вижу. Но по твоему описанию симптомов вырисовывается классическая картина для новичков в JNI. Вылет при попытке получить энтити (игрока) — это почти всегда краш самой виртуальной машины Java (JVM) из-за неверной работы с памятью.

Вот главные причины, почему твой Майнкрафт "умирает" при инжекте, и как это исправить.

1. Несовместимость версий Java (Главный подозреваемый)​

Ты написал, что используешь JDK 21. Майнкрафт 1.8.9 исторически и технически написан под Java 8.Если ты компилируешь свою C++ DLL, используя заголовочные файлы (jni.h, jni_md.h) от JDK 21, а игра крутится на Java 8 (которую TLauncher обычно подтягивает сам для старых версий), происходит жесткий конфликт структур в памяти.

  • Что делать: Скачай JDK 8 (например, Adoptium / Eclipse Temurin 8). В настройках твоего C++ проекта (Visual Studio или что ты используешь) укажи пути к папкам include и include/win32 именно от восьмой джавы. Полностью пересобери проект.

2. Обфускация и нулевые указатели (NullPointerException в C++)​

В гайде, скорее всего, используют чистые маппинги (MCP) или пишут под Forge-клиент, где классы имеют читаемые названия (например, net/minecraft/client/entity/EntityPlayerSP).Если ты запускаешь обычную ванильную 1.8.9 через TLauncher (или OptiFine без Forge), классы игры обфусцированы (перемешаны в буквы типа ave для Minecraft, bew для игрока и т.д.).

Если твой код пытается найти класс по нормальному имени:

C++

jclass playerClass = env-&gt;FindClass(<span>"net/minecraft/client/entity/EntityPlayerSP"</span>);<br>
А в твоем клиенте он называется bew, функция FindClass не найдет его и вернет nullptr (пустоту). Когда ты на следующем шаге попытаешься получить здоровье или координаты из этого nullptr, C++ попытается прочитать несуществующую память, и игра моментально закроется без ошибок.

  • Что делать: Обязательно проверяй КАЖДОЕ действие на nullptr и выводи в консоль отладки сообщения. Вот так:

    C++

    jclass playerClass = env-&gt;FindClass(<span>"net/minecraft/client/entity/EntityPlayerSP"</span>);<br><span>if</span> (playerClass == <span>nullptr</span>) {<br> <span>printf</span>(<span>"[-] ОШИБКА: Класс игрока не найден!\n"</span>);<br> env-&gt;ExceptionClear(); <span>// Очищаем ошибку JNI, чтобы JVM не умерла</span><br> <span>return</span>; <span>// Прерываем функцию, чтобы не крашнуть игру</span><br>}<br><span>printf</span>(<span>"[+] Класс игрока успешно найден!\n"</span>);<br>

3. Проблема с потоками (AttachCurrentThread)​

JNIEnv* (указатель на окружение Java) привязан к конкретному потоку. Если ты делаешь инжект DLL и запускаешь свою логику в отдельном потоке (через CreateThread), ты не можешь просто взять и использовать функции JNI.

  • Что делать: Тебе нужно сначала "прикрепить" твой C++ поток к JVM. В начале твоего рабочего потока должна быть функция jvm-&gt;AttachCurrentThread((void)&amp;env, nullptr);, а при выходе — jvm-&gt;DetachCurrentThread();.

Как нам двигаться дальше?Попробуй расставить такие проверки (if (что-то == nullptr) printf...) перед каждым получением класса (FindClass), метода (GetMethodID) и поля (GetFieldID).

Скажи, какие именно маппинги/названия классов ты используешь в коде (MCP названия или обфусцированные буквы), и на какой конкретно строчке кода происходит вылет, если судить по выводу твоей консоли отладки?
 
Привет! Понимаю твою боль — тема написания софта под Майнкрафт через JNI (тем более под старые версии) реально скудно задокументирована, и на форумах часто вместо помощи кидаются тапками.

Сразу оговорюсь: я текстовая нейросеть, поэтому прикрепленное видео или исходники я не вижу. Но по твоему описанию симптомов вырисовывается классическая картина для новичков в JNI. Вылет при попытке получить энтити (игрока) — это почти всегда краш самой виртуальной машины Java (JVM) из-за неверной работы с памятью.

Вот главные причины, почему твой Майнкрафт "умирает" при инжекте, и как это исправить.

1. Несовместимость версий Java (Главный подозреваемый)​

Ты написал, что используешь JDK 21. Майнкрафт 1.8.9 исторически и технически написан под Java 8.Если ты компилируешь свою C++ DLL, используя заголовочные файлы (jni.h, jni_md.h) от JDK 21, а игра крутится на Java 8 (которую TLauncher обычно подтягивает сам для старых версий), происходит жесткий конфликт структур в памяти.

  • Что делать: Скачай JDK 8 (например, Adoptium / Eclipse Temurin 8). В настройках твоего C++ проекта (Visual Studio или что ты используешь) укажи пути к папкам include и include/win32 именно от восьмой джавы. Полностью пересобери проект.

2. Обфускация и нулевые указатели (NullPointerException в C++)​

В гайде, скорее всего, используют чистые маппинги (MCP) или пишут под Forge-клиент, где классы имеют читаемые названия (например, net/minecraft/client/entity/EntityPlayerSP).Если ты запускаешь обычную ванильную 1.8.9 через TLauncher (или OptiFine без Forge), классы игры обфусцированы (перемешаны в буквы типа ave для Minecraft, bew для игрока и т.д.).

Если твой код пытается найти класс по нормальному имени:

C++

jclass playerClass = env-&gt;FindClass(<span>"net/minecraft/client/entity/EntityPlayerSP"</span>);<br>
А в твоем клиенте он называется bew, функция FindClass не найдет его и вернет nullptr (пустоту). Когда ты на следующем шаге попытаешься получить здоровье или координаты из этого nullptr, C++ попытается прочитать несуществующую память, и игра моментально закроется без ошибок.

  • Что делать: Обязательно проверяй КАЖДОЕ действие на nullptr и выводи в консоль отладки сообщения. Вот так:

    C++

    jclass playerClass = env-&gt;FindClass(<span>"net/minecraft/client/entity/EntityPlayerSP"</span>);<br><span>if</span> (playerClass == <span>nullptr</span>) {<br> <span>printf</span>(<span>"[-] ОШИБКА: Класс игрока не найден!\n"</span>);<br> env-&gt;ExceptionClear(); <span>// Очищаем ошибку JNI, чтобы JVM не умерла</span><br> <span>return</span>; <span>// Прерываем функцию, чтобы не крашнуть игру</span><br>}<br><span>printf</span>(<span>"[+] Класс игрока успешно найден!\n"</span>);<br>

3. Проблема с потоками (AttachCurrentThread)​

JNIEnv* (указатель на окружение Java) привязан к конкретному потоку. Если ты делаешь инжект DLL и запускаешь свою логику в отдельном потоке (через CreateThread), ты не можешь просто взять и использовать функции JNI.

  • Что делать: Тебе нужно сначала "прикрепить" твой C++ поток к JVM. В начале твоего рабочего потока должна быть функция jvm-&gt;AttachCurrentThread((void)&amp;env, nullptr);, а при выходе — jvm-&gt;DetachCurrentThread();.

Как нам двигаться дальше?Попробуй расставить такие проверки (if (что-то == nullptr) printf...) перед каждым получением класса (FindClass), метода (GetMethodID) и поля (GetFieldID).

Скажи, какие именно маппинги/названия классов ты используешь в коде (MCP названия или обфусцированные буквы), и на какой конкретно строчке кода происходит вылет, если судить по выводу твоей консоли отладки?
Единственный ахуенный нейро-слоп на югейме
 
Всем привет решил научиться писать софт на майнкрафт и столкнулся с такой проблемой
вообщем нашел гайд:
тут используют JNI и Маппинги ну я все это скачал сделал повторил все по гайду на такую же версию но до первой половины видео все работало на 50% то есть запускалось окно откладки и что то показывало (ну тип работает но не совсем) после во второй части ролика он делает простой автоспринт
и когда он делает получение ентити и настраивает окно откладки что бы в откладке писало что он ентити поймал у меня просто вылетает майнкрафт
пиши какие данные предоставить могу так же попробовать прикрепить dll и исходник может у меня ошибка в коде
версия майна 1.8.9
кто шарит пожалуйста подскажите гайдов почти нету(
прикрепляю видео что происходит при инжекте:

майнкрафт запускаю через tlauncher версия JDK 21
делай дебаг че где у тя крашит, мб seh юзай
 
на новые версии и так читов много
а на старых версия много интересных проектов начиная от серверов на датапаках заканчивая модовыми РПГ и просто сборками типо Hitech и т.д

вообще изначально хотел сделать чит ищя через CE офссеты и смещения как во всех играх но меня остановили и сказали что это хрень полная и надо использовать маппинги и JNI а я вообще в первый раз в жизни с таким сталкиваюсь полез в интернет искать гайды а их в целом то и нету
только гайды для пастеров по типу скачайте готовый forge мод и вот заходите там меняйте под себя да в целях обучение это может и ок но это не то к чему я бы хотел придти
я бы хотел научиться самостоятельной разработке пусть для начала даже какой нибудь почти бесполезной функции но что бы она работала хотя бы
 
Назад
Сверху Снизу