使用 Java Kernel32 获取 JVM 和加载后的类

问题描述

伙计们,我想为 minecraft 制作一个 dll。目前我需要它使用 Java。我从一个叫 TheQMaks 的人那里找到了它,但它是用 C++ (https://github.com/TheQmaks/SurvivalMC/blob/master/src/c%2B%2B/dllmain.cpp) 编写的。我的问题是:无论如何都可以获取 JVM 并在其中获取所有加载的类,就像在这个项目中使用 Java 中的 Kernel32 库一样。我已经在我的项目中实现了 Kernel32。

public class InjectorController {
    static final Kernel32 kernel32 = (Kernel32) Native.loadLibrary("kernel32.dll",Kernel32.class,W32APIOptions.ASCII_OPTIONS);
    static final PsapiExt psapi = (PsapiExt) Native.loadLibrary("psapi",PsapiExt.class,W32APIOptions.UNICODE_OPTIONS);

    public void inject()
    {
        try {

        } catch (Exception ex) {
            ex.printstacktrace();
        }
    }
    
    public interface Kernel32 extends StdCallLibrary 
    {

        public HANDLE OpenProcess(DWORD_PTR dwDesiredAccess,BOOL bInheritHandle,DWORD_PTR dwProcessId);
        public DWORD_PTR GetProcAddress(HANDLE hModule,String  lpProcName);
        public LPVOID VirtualAllocEx(HANDLE hProcess,LPVOID lpAddress,int dwSize,DWORD_PTR flAllocationType,DWORD_PTR flProtect);
        public BOOL WriteProcessMemory(HANDLE hProcess,LPVOID lpBaseAddress,Pointer lpBuffer,int nSize,Pointer lpNumberOfBytesWritten);
        public DWORD_PTR CreateRemoteThread(HANDLE hProcess,int lpThreadAttributes,int dwStackSize,DWORD_PTR loadLibraryAddress,LPVOID lpParameter,int dwCreationFlags,int lpThreadId);
        public BOOL CloseHandle(HANDLE hObject);
        public int GetLastError();
        public HANDLE GetModuleHandle(String string);
        public int GetProcessId(HANDLE handle);

    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)