更新:請參見問題底部的更新
。我想獲得 war3.exe 行程中的 game.dll 的基本地址。
我試圖通過JNA庫5.9.0版本來實作,但沒有成功。
我面臨的問題是。我無法從 war3.exe 行程中獲得 game.dll 模塊。 我試著用以下方法來獲得它:
int pid = getProcessId("Warcraft III"_span>) 。
openProcess(PROCESS_ALL_ACCESS, pid)。
WinDef.HMODULE hMod = Kernel32.INSTANCE.GetModuleHandle("game.dll")
但是hMod的結果是null。
此外,我還嘗試獲取war3.exe行程的所有模塊。正如你所看到的,它只包含5個模塊,而且不包含game.dll。但是當我通過行程資源管理器打開war3.exe時,我看到的絕對不止5個。
請分享您的意見和想法,為什么我從IDE只得到5個模塊。
如果您對如何通過JNA獲得game.dll模塊和它的基址有任何建議,將非常感謝。
更新。
根據Remy的回答,我又用EnumProcessModules()進行了一次嘗試。
以下是我的代碼片斷:
import com.sun.jna.Pointer。
import com.sun.jna.platform.win32.Psapi;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HMODULE;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.ptr.IntByReference;
import java.util.Arrays;
import java.util.List;
import static com.sun.jna.platform.win32.WinNT.PROCESS_ALL_ACCESS;
import static handler.memory.MemoryHandler.openProcess;
public class MemoryHandler {
static final User32 user32 = User32.INSTANCE;
static final Psapi psapi = Psapi.INSTANCE;
public static void main(String[] args) {
int pid = getProcessId("Warcraft III"/span>)。
HANDLE process = openProcess(PROCESS_ALL_ACCESS,pid)。
HMODULE[] hMods = new HMODULE[1024] 。
psapi.EnumProcessModules(process, hMods, hMods.length, new IntByReference(1024) )。
List<HMODULE> hModList = Arrays.asList(hMods)。
hModList.forEach(hMod ->
System.out.println(Pointer.nativeValue(hMod.getPointer())));
}
public static int getProcessId(String window) {
IntByReference pid = new IntByReference(0)。
user32.GetWindowThreadProcessId(user32.FindWindow(null, window), pid)。
return pid.getValue()。
}
據我所知,我已經得到了一些指標。但我應該如何理解其中哪一個與game.dll有關?我想我應該以某種方式獲得模塊串列,在那里我可以看到它們的名字和基本地址。
另外,如果我把System.out.println(Pointer.nativeValue(hMod.getPointer())));)>改為hModList.forEach(System.out::println);我看到以下指標和大量的空值(大約1000)。
這些地址是否包含game.dll的地址?
uj5u.com熱心網友回復:
GetModuleHandle()只在呼叫行程中尋找。 由于game.dll沒有在你自己的行程中加載,GetModuleHandle()無法找到它。
要尋找一個加載在另一個行程中的模塊,你需要使用以下兩種方法:
。-
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/331311.html標籤:





