Вопрос Dll выгружается с модулей

Начинающий
Статус
Оффлайн
Регистрация
11 Июл 2023
Сообщения
7
Реакции[?]
1
Поинты[?]
1K
Всем привет.
Я решил сделать dll которая включает glowesp на 1.16.5, но при внедрении dll, она у меня загружается в unloaded modules. И похоже это ошибка с маппингами (предположительно). Возможно я неправильно их беру т.к. только недавно начал изучать JNI.

Вот мой код:

C++:
Info.h
#pragma once
#include <iostream>
#include <Windows.h>
#include "jni/jni.h"


JNIEnv* env = nullptr;
JavaVM* jVM = nullptr;

void Func();

C++:
Soft.cpp 

#include "Info.h"

jclass MineClass = env->FindClass("net/minecraft/client/Minecraft");


jobject getInstance()
{
jmethodID getInstance = env->GetStaticMethodID(MineClass, "func_71410_x", "()Lnet/minecraft/client/Minecraft;");
return env->CallStaticObjectMethod(MineClass, getInstance);
}


jobject getPlayer()
{
jfieldID playerField = env->GetFieldID(MineClass, "field_71439_g", "Lnet/minecraft/client/entity/player/ClientPlayerEntity;");
return env->GetObjectField(getInstance(), playerField);
}


void setGlow()
{
jclass Entity = env->FindClass("net/minecraft/entity/Entity");
jmethodID Glow = env->GetMethodID(Entity, "func_184195_f", "(Z)V");
env->CallVoidMethod(getPlayer(), Glow, true);
}


void Func()
{
if (!getInstance())
return;
if (!getPlayer())
return;

if (GetAsyncKeyState(VK_RSHIFT))
{
setGlow();
}
}

C++:
dllmain.cpp
#include "Info.h"

typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD reason, LPVOID lpReserved)
{
if (reason == DLL_PROCESS_ATTACH)
{
HMODULE jvmHandle = GetModuleHandleA("jvm.dll");

GetCreatedJavaVMs JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(jvmHandle, "JNI_GetCreatedJavaVMs");
JNI_GetCreatedJavaVMs(&jVM, 1, NULL);
jVM->AttachCurrentThread((void**)&env, NULL);

Func();

return true;
}
return false;
}

Вот мой код. Я не могу понять в чем причина. Помогите пожалуйста.
 
Эксперт
Статус
Оффлайн
Регистрация
17 Янв 2020
Сообщения
2,197
Реакции[?]
718
Поинты[?]
79K
Товары в продаже
1
Всем привет.
Я решил сделать dll которая включает glowesp на 1.16.5, но при внедрении dll, она у меня загружается в unloaded modules. И похоже это ошибка с маппингами (предположительно). Возможно я неправильно их беру т.к. только недавно начал изучать JNI.

Вот мой код:

C++:
Info.h
#pragma once
#include <iostream>
#include <Windows.h>
#include "jni/jni.h"


JNIEnv* env = nullptr;
JavaVM* jVM = nullptr;

void Func();

C++:
Soft.cpp

#include "Info.h"

jclass MineClass = env->FindClass("net/minecraft/client/Minecraft");


jobject getInstance()
{
jmethodID getInstance = env->GetStaticMethodID(MineClass, "func_71410_x", "()Lnet/minecraft/client/Minecraft;");
return env->CallStaticObjectMethod(MineClass, getInstance);
}


jobject getPlayer()
{
jfieldID playerField = env->GetFieldID(MineClass, "field_71439_g", "Lnet/minecraft/client/entity/player/ClientPlayerEntity;");
return env->GetObjectField(getInstance(), playerField);
}


void setGlow()
{
jclass Entity = env->FindClass("net/minecraft/entity/Entity");
jmethodID Glow = env->GetMethodID(Entity, "func_184195_f", "(Z)V");
env->CallVoidMethod(getPlayer(), Glow, true);
}


void Func()
{
if (!getInstance())
return;
if (!getPlayer())
return;

if (GetAsyncKeyState(VK_RSHIFT))
{
setGlow();
}
}

C++:
dllmain.cpp
#include "Info.h"

typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD reason, LPVOID lpReserved)
{
if (reason == DLL_PROCESS_ATTACH)
{
HMODULE jvmHandle = GetModuleHandleA("jvm.dll");

GetCreatedJavaVMs JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(jvmHandle, "JNI_GetCreatedJavaVMs");
JNI_GetCreatedJavaVMs(&jVM, 1, NULL);
jVM->AttachCurrentThread((void**)&env, NULL);

Func();

return true;
}
return false;
}

Вот мой код. Я не могу понять в чем причина. Помогите пожалуйста.
БJl9Tb, создай поток для работы Чита. То что Func(); выполняется 1 раз и дллмейн закрывается тебя не e6eT?
И что за издевательство делать читы на майнкрафт на C++
 
Эксперт
Статус
Оффлайн
Регистрация
10 Фев 2021
Сообщения
1,739
Реакции[?]
559
Поинты[?]
2K
Начинающий
Статус
Оффлайн
Регистрация
11 Июл 2023
Сообщения
7
Реакции[?]
1
Поинты[?]
1K
БJl9Tb, создай поток для работы Чита. То что Func(); выполняется 1 раз и дллмейн закрывается тебя не e6eT?
И что за издевательство делать читы на майнкрафт на C++
Я это делаю чтобы понять, как работает JNI в целом
 
read only ambassador
Пользователь
Статус
Оффлайн
Регистрация
28 Июн 2022
Сообщения
626
Реакции[?]
110
Поинты[?]
14K
Всем привет.
Я решил сделать dll которая включает glowesp на 1.16.5, но при внедрении dll, она у меня загружается в unloaded modules. И похоже это ошибка с маппингами (предположительно). Возможно я неправильно их беру т.к. только недавно начал изучать JNI.

Вот мой код:

C++:
Info.h
#pragma once
#include <iostream>
#include <Windows.h>
#include "jni/jni.h"


JNIEnv* env = nullptr;
JavaVM* jVM = nullptr;

void Func();

C++:
Soft.cpp

#include "Info.h"

jclass MineClass = env->FindClass("net/minecraft/client/Minecraft");


jobject getInstance()
{
jmethodID getInstance = env->GetStaticMethodID(MineClass, "func_71410_x", "()Lnet/minecraft/client/Minecraft;");
return env->CallStaticObjectMethod(MineClass, getInstance);
}


jobject getPlayer()
{
jfieldID playerField = env->GetFieldID(MineClass, "field_71439_g", "Lnet/minecraft/client/entity/player/ClientPlayerEntity;");
return env->GetObjectField(getInstance(), playerField);
}


void setGlow()
{
jclass Entity = env->FindClass("net/minecraft/entity/Entity");
jmethodID Glow = env->GetMethodID(Entity, "func_184195_f", "(Z)V");
env->CallVoidMethod(getPlayer(), Glow, true);
}


void Func()
{
if (!getInstance())
return;
if (!getPlayer())
return;

if (GetAsyncKeyState(VK_RSHIFT))
{
setGlow();
}
}

C++:
dllmain.cpp
#include "Info.h"

typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD reason, LPVOID lpReserved)
{
if (reason == DLL_PROCESS_ATTACH)
{
HMODULE jvmHandle = GetModuleHandleA("jvm.dll");

GetCreatedJavaVMs JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(jvmHandle, "JNI_GetCreatedJavaVMs");
JNI_GetCreatedJavaVMs(&jVM, 1, NULL);
jVM->AttachCurrentThread((void**)&env, NULL);

Func();

return true;
}
return false;
}

Вот мой код. Я не могу понять в чем причина. Помогите пожалуйста.
учи MINECRAFT API C+, пастер.
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет.
Я решил сделать dll которая включает glowesp на 1.16.5, но при внедрении dll, она у меня загружается в unloaded modules. И похоже это ошибка с маппингами (предположительно). Возможно я неправильно их беру т.к. только недавно начал изучать JNI.

Вот мой код:

C++:
Info.h
#pragma once
#include <iostream>
#include <Windows.h>
#include "jni/jni.h"


JNIEnv* env = nullptr;
JavaVM* jVM = nullptr;

void Func();

C++:
Soft.cpp

#include "Info.h"

jclass MineClass = env->FindClass("net/minecraft/client/Minecraft");


jobject getInstance()
{
jmethodID getInstance = env->GetStaticMethodID(MineClass, "func_71410_x", "()Lnet/minecraft/client/Minecraft;");
return env->CallStaticObjectMethod(MineClass, getInstance);
}


jobject getPlayer()
{
jfieldID playerField = env->GetFieldID(MineClass, "field_71439_g", "Lnet/minecraft/client/entity/player/ClientPlayerEntity;");
return env->GetObjectField(getInstance(), playerField);
}


void setGlow()
{
jclass Entity = env->FindClass("net/minecraft/entity/Entity");
jmethodID Glow = env->GetMethodID(Entity, "func_184195_f", "(Z)V");
env->CallVoidMethod(getPlayer(), Glow, true);
}


void Func()
{
if (!getInstance())
return;
if (!getPlayer())
return;

if (GetAsyncKeyState(VK_RSHIFT))
{
setGlow();
}
}

C++:
dllmain.cpp
#include "Info.h"

typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD reason, LPVOID lpReserved)
{
if (reason == DLL_PROCESS_ATTACH)
{
HMODULE jvmHandle = GetModuleHandleA("jvm.dll");

GetCreatedJavaVMs JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(jvmHandle, "JNI_GetCreatedJavaVMs");
JNI_GetCreatedJavaVMs(&jVM, 1, NULL);
jVM->AttachCurrentThread((void**)&env, NULL);

Func();

return true;
}
return false;
}

Вот мой код. Я не могу понять в чем причина. Помогите пожалуйста.
Вместо "Func();" сделай так: CreateThread(nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(Func), 0, nullptr); (я ща не дома и сижу в метро, поэтому код может быть с ошибкой , но сам пофиксишь)
 
Начинающий
Статус
Оффлайн
Регистрация
11 Июл 2023
Сообщения
7
Реакции[?]
1
Поинты[?]
1K
Вместо "Func();" сделай так: CreateThread(nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(Func), 0, nullptr); (я ща не дома и сижу в метро, поэтому код может быть с ошибкой , но сам пофиксишь)
возможно. мне кажется. что проблема еще в вызовах методов и полей. но я перепроверял и переделывал много раз. но получаю один результат. может ты что-то видишь?
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
возможно. мне кажется. что проблема еще в вызовах методов и полей. но я перепроверял и переделывал много раз. но получаю один результат. может ты что-то видишь?
Ты не создал поток на функции, ты просто ее вызвал 1 раз в дллмейне и все. Всегда , абсолютно всегда надо создавать поток через функцию CreateThread (в некоторых случаях люди юзают CreateRemoteThread / SetNextWindow....)
возможно. мне кажется. что проблема еще в вызовах методов и полей. но я перепроверял и переделывал много раз. но получаю один результат. может ты что-то видишь?
Просто вместо вызова функции впасть строчку которую я тебе написал выше, в том сообщении

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
453
Реакции[?]
82
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
info.hpp:
#include <iostream>
#include <windows.h>

#include "jni/jni.h"

namespace jni_main
{
    inline JNIEnv* env = nullptr;
    inline JavaVM* jVM = nullptr;

    auto initialize() -> bool;
}
info.cpp:
#include "info.hpp"

typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);

namespace jni_main
{
    auto initialize() -> bool
    {
        auto jvm = GetModuleHandleW(L"jvm.dll");
        if(!jvm)
            return false;

        auto JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(jvm, "JNI_GetCreatedJavaVMs");
        if(!JNI_GetCreatedJavaVMs)
            return false;
            
        JNI_GetCreatedJavaVMs(&jVM, 1, NULL);
        jVM->AttachCurrentThread((void**)&env, NULL);
        
        return true;
    }
}
software.hpp:
#include <iostream>
#include <windows.h>

#include <jni/jni.h>

using namespace std;

namespace software
{   
    inline jclass minecraft_class = nullptr;
    
    auto get_instance() -> jobject;
    auto get_player() -> jobject;
    
    auto set_glow(bool value = true) -> void;
    auto initialize() -> void;
}
software.cpp:
#include "software.hpp"
#include "info.hpp"

namespace software
{
    auto get_instance() -> jobject
    {
        jmethodID instance = jni_main::env->GetStaticMethodID(minecraft_class, "func_71410_x", "()Lnet/minecraft/client/Minecraft;");
        return jni_main::env->CallStaticObjectMethod(minecraft_class, instance);
    }

    auto get_player() -> jobject
    {
        jfieldID player = jni_main::env->GetFieldID(minecraft_class, "field_71439_g", "Lnet/minecraft/client/entity/player/ClientPlayerEntity;");
        return jni_main::env->GetObjectField(get_instance(), player);
    }
    
    auto set_glow(bool value) -> void
    {
        jclass entity = jni_main::env->FindClass("net/minecraft/entity/Entity");
        jmethodID set_glowing = jni_main::env->GetMethodID(entity, "func_184195_f", "(Z)V");
        jni_main::env->CallVoidMethod(get_player(), set_glowing, value);
    }

    auto initialize() -> void
    {
        if(!jni_main::initialize())
            return;
            
        if(!get_instance())
            return;
        
        if(!get_player())
            return;
           
        while(1)
        {
            if (GetAsyncKeyState(VK_RSHIFT) & 1)
                set_glow();
        }
    }
}
dllmain.cpp:
#include "info.hpp"
#include "software.hpp"

auto DllMain(void*, unsigned __int32 call_reason, void*) -> bool
{
    if(call_reason != 1)
        return false;
        
    CreateThread(0, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(software::initialize), 0, 0, 0);
    return true;
}
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
info.hpp:
#include <iostream>
#include <windows.h>

#include "jni/jni.h"

namespace jni_main
{
    inline JNIEnv* env = nullptr;
    inline JavaVM* jVM = nullptr;

    auto initialize() -> bool;
}
info.cpp:
#include "info.hpp"

typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);

namespace jni_main
{
    auto initialize() -> bool
    {
        auto jvm = GetModuleHandleW(L"jvm.dll");
        if(!jvm)
            return false;

        auto JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(jvm, "JNI_GetCreatedJavaVMs");
        if(!JNI_GetCreatedJavaVMs)
            return false;
           
        JNI_GetCreatedJavaVMs(&jVM, 1, NULL);
        jVM->AttachCurrentThread((void**)&env, NULL);
       
        return true;
    }
}
software.hpp:
#include <iostream>
#include <windows.h>

#include <jni/jni.h>

using namespace std;

namespace software
{  
    inline jclass minecraft_class = nullptr;
   
    auto get_instance() -> jobject;
    auto get_player() -> jobject;
   
    auto set_glow(bool value = true) -> void;
    auto initialize() -> void;
}
software.cpp:
#include "software.hpp"
#include "info.hpp"

namespace software
{
    auto get_instance() -> jobject
    {
        jmethodID instance = jni_main::env->GetStaticMethodID(minecraft_class, "func_71410_x", "()Lnet/minecraft/client/Minecraft;");
        return jni_main::env->CallStaticObjectMethod(minecraft_class, instance);
    }

    auto get_player() -> jobject
    {
        jfieldID player = jni_main::env->GetFieldID(minecraft_class, "field_71439_g", "Lnet/minecraft/client/entity/player/ClientPlayerEntity;");
        return jni_main::env->GetObjectField(get_instance(), player);
    }
   
    auto set_glow(bool value) -> void
    {
        jclass entity = jni_main::env->FindClass("net/minecraft/entity/Entity");
        jmethodID set_glowing = jni_main::env->GetMethodID(entity, "func_184195_f", "(Z)V");
        jni_main::env->CallVoidMethod(get_player(), set_glowing, value);
    }

    auto initialize() -> void
    {
        if(!jni_main::initialize())
            return;
           
        if(!get_instance())
            return;
       
        if(!get_player())
            return;
          
        while(1)
        {
            if (GetAsyncKeyState(VK_RSHIFT) & 1)
                set_glow();
        }
    }
}
dllmain.cpp:
#include "info.hpp"
#include "software.hpp"

auto DllMain(void*, unsigned __int32 call_reason, void*) -> bool
{
    if(call_reason != 1)
        return false;
       
    CreateThread(0, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(software::initialize), 0, 0, 0);
    return true;
}
Многоуважаемый сударь, вы бы могли не утруждаться ради этой хуйни и не проводить рефакторинг всего проекта....................
 
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
453
Реакции[?]
82
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Многоуважаемый сударь, вы бы могли не утруждаться ради этой хуйни и не проводить рефакторинг всего проекта....................
Сударь, вы не вежливы, я предоставил, рабочее и понятное ( как по мне ) решение
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
453
Реакции[?]
82
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сударь, мне похуй, сосите хуйца
Сударь, вальните ебало и я жду видео демонстрацию на которой отчётливо слышно звук выхлопа машины "Volvo-57" на видео-пленку и звуковую дорожку, далее отправьте мне в прекрасный месанджер "Telegram", который был создан человеком -> "Павел Дуров"
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2021
Сообщения
425
Реакции[?]
121
Поинты[?]
162K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
11 Июл 2023
Сообщения
7
Реакции[?]
1
Поинты[?]
1K
потому что он помогает пастеру, а ты не помогаешь
вот в чем разница....
Я это не делаю ради игры с этим софтом. я хочу научиться понять как работает JNI. поэтому приходится пастить. но когда придет время буду делать стараться все больше и больше от себя. и еще. они оба помогли мне и я им очень благодарен за ответы.
 
Последнее редактирование:
Сверху Снизу