-
Автор темы
- #1
Хай. Запустил майн с параметром -verbose, все классы на месте.
Аттачусь к JVM так:
Всё верно, пытаюсь получить класс bib (env->FindClass("bib")) (посмотрев в Recaf джарку взял рандомный класс, пекеджа у него нету), а он его не видит. res равен JNI_OK.
Немного почесав свою головку получил класс с помощью loadClass из SystemClassLoader, но всё равно не понимаю почему JNI его в упор не видит.
Аттачусь к JVM так:
C++:
typedef jint(*pJNI_GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
void init() {
JavaVM* jvm;
HINSTANCE hJvm = GetModuleHandleA("jvm.dll");
if (hJvm == nullptr) {
std::cout << "блять";
return;
}
pJNI_GetCreatedJavaVMs JNI_GetCreatedJavaVMs = reinterpret_cast<pJNI_GetCreatedJavaVMs>(GetProcAddress(hJvm, "JNI_GetCreatedJavaVMs"));
JNI_GetCreatedJavaVMs(&jvm, 1, nullptr);
jvm->AttachCurrentThread(reinterpret_cast<void**>(&env), NULL);
std::cout << "hooked into JVM " << (res == JNI_OK ? "ok" : "pizdec") << std::endl;
}
BOOL WINAPI DllMain(HMODULE hModule, DWORD fdwReason, LPVOID) {
if (fdwReason == DLL_PROCESS_ATTACH) {
{
AllocConsole();
freopen("CONOUT$", "w", stdout);
init();
}
}
return TRUE;
}
Немного почесав свою головку получил класс с помощью loadClass из SystemClassLoader, но всё равно не понимаю почему JNI его в упор не видит.