# libmem-java **Repository Path**: goodffff/libmem-java ## Basic Information - **Project Name**: libmem-java - **Description**: 高级游戏内存操作库 - 支持进程/内存操作、Hook/Detour、跨平台(Windows/Linux/macOS/FreeBSD)、x86/x64架构、DLL/SO注入、内部/外部操作、汇编/反汇编 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-11 - **Last Updated**: 2026-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # libmem-java libmem 库的 Java JNA 绑定。 ## 概述 libmem-java 是 [libmem](https://github.com/rdbo/libmem) C 库的 Java 绑定,提供了完整的内存操作功能: - 进程和线程枚举与管理 - 模块枚举与加载 - 符号解析与解混淆 - 内存段枚举 - 内存读写操作 - 内存保护修改 - 模式扫描(字节数组和签名字符串) - 汇编与反汇编 - 代码Hook(Detour) - VMT(虚方法表)Hook - 多级指针解析 ## 项目结构 ``` libmem-java/ ├── com.libmem.api/ # 高级API(推荐) │ ├── Memory.java # 静态入口类 │ ├── MemProcess.java # 进程封装 │ ├── MemModule.java # 模块封装 │ ├── MemThread.java # 线程封装 │ ├── MemSegment.java # 内存段封装 │ ├── MemSymbol.java # 符号封装 │ ├── MemInstruction.java # 指令封装 │ ├── MemHook.java # 代码Hook封装 │ ├── MemVmt.java # VMT Hook封装 │ ├── MemPointer.java # 多级指针封装 │ ├── MemScanner.java # 模式扫描器 │ ├── MemAssembler.java # 汇编器 │ └── MemDisassembler.java # 反汇编器 │ └── com.libmem.jna/ # 底层JNA绑定 ├── Libmem.java # JNA接口+常量 ├── LibmemApi.java # 静态工具类 ├── callback/ # 回调接口 └── structure/ # JNA结构体 ``` ## 依赖 - Java 8+ - JNA 5.14.0 - libmem 本地库 ## 使用方法 ### 1. 进程操作 ```java import com.libmem.api.*; // 获取当前进程 MemProcess process = Memory.getCurrentProcess(); System.out.println("进程: " + process.getName()); System.out.println("PID: " + process.getPid()); // 枚举所有进程 List processes = Memory.enumProcesses(); // 查找进程 MemProcess target = Memory.findProcess("notepad.exe"); ``` ### 2. 模块操作 ```java // 枚举模块 List modules = process.enumModules(); // 查找模块 MemModule kernel32 = process.findModule("kernel32.dll"); System.out.println("基址: " + kernel32.getBaseHex()); // 符号操作 long addr = kernel32.findSymbolAddress("LoadLibraryA"); ``` ### 3. 内存读写 ```java // 读取 int value = process.readInt(address); long ptr = process.readPointer(address); byte[] data = process.readMemory(address, 16); // 写入 process.writeInt(address, 100); process.writeMemory(address, new byte[]{0x90, 0x90}); process.setNop(address, 5); ``` ### 4. 模式扫描 ```java // 签名扫描 long addr = MemScanner.create(process) .inModule("game.dll") .signature("55 8B EC ?? ?? 83 C4") .findFirst(); // 查找所有 List results = MemScanner.create(process) .inModule("game.dll") .signature("55 8B EC") .findAll(); ``` ### 5. 多级指针 ```java long addr = MemPointer.from(baseAddress) .offset(0x10) .offset(0x20) .offset(0x30) .resolveIn(process); ``` ### 6. Hook ```java // 代码Hook MemHook hook = MemHook.install(targetAddr, hookAddr); long trampoline = hook.getTrampoline(); hook.uninstall(); // VMT Hook MemVmt vmt = MemVmt.create(vtableAddr); vmt.hook(0, hookAddr); vmt.unhook(0); vmt.free(); ``` ### 7. 汇编/反汇编 ```java // 汇编 byte[] code = MemAssembler.assemble("push ebp; mov ebp, esp"); // 反汇编 List insts = MemDisassembler.disassemble(code); ``` ## 常量 ```java Libmem.LM_ADDRESS_BAD // 无效地址 Libmem.LM_PROT_RW // 可读写 Libmem.LM_PROT_XRW // 可读写执行 Libmem.LM_ARCH_X86 // x86架构 Libmem.LM_ARCH_X64 // x64架构 ``` ## 平台支持 - Windows (x86/x64) - Linux (x86/x64) - FreeBSD (x86/x64) - macOS (x64/ARM64) ## 构建 ```bash mvn compile mvn package ``` ## 许可证 AGPL-3.0 License