Итак, я хочу получить базовый адрес программы.
Я пытался использовать идентификатор процесса и указатели (jna), чтобы получить его, но он всегда возвращает мне 0.
Вот как это выглядит
public static void main(String[] args) {
enableDebugPrivilege();
int pID = getProcessId(gameWindowName);
System.out.println("Pid = " + pID);
int base = findBaseAddress(pID);
System.out.println("Base Address: " + Integer.toHexString((int) base));
HANDLE game = openProcess(WinNT.PROCESS_QUERY_INFORMATION | WinNT.PROCESS_VM_READ, pID);
}
private static int findBaseAddress(int pID) {
try {
HANDLE game = openProcess(WinNT.PROCESS_QUERY_INFORMATION | WinNT.PROCESS_VM_READ, pID);
List<Module> modules = PsapiTools.getInstance().EnumProcessModulesEx(game, 0x01);
for (Module module : modules) {
if (module.getBaseName().equals(gameExe)) {
if (module.getLpBaseOfDll() != null) {
int baseAddress = ((Long) Pointer.nativeValue(module.getLpBaseOfDll().getPointer())).intValue();
return baseAddress;
}
}
}
} catch (Exception e) {
System.out.println("Error finding base address");
return -1;
}
return 0;
}