private static String getPackageBaseAddr(WinNT.HANDLE processID,int packageBaseAdd){
// [[[0x13890D0]+0xC58+0x4]+1] MAIN
// [[[0x13890D4]+0xC58+4]+1] SECOND
String firstAddr=JnaProcess.readMemoryFromProcessAll(processID,packageBaseAdd,4);
int firstAddrAfterOffset=Integer.parseInt(firstAddr,16)+0xC58+4;
String secondAddr=JnaProcess.readMemoryFromProcessAll(processID,firstAddrAfterOffset,4);
int secondAddrAfterOffset=Integer.parseInt(secondAddr,16)+1;
return String.format("%08x", secondAddrAfterOffset);
}
public static String getMainFirstPackageAddr(WinNT.HANDLE processID){
return getPackageBaseAddr(processID,PLAYER_BASEADDR_MAINPACKAGE);
}
public static String getSecondFirstPackageAddr(WinNT.HANDLE processID){
return getPackageBaseAddr(processID,SUB_PLAYER_BASEADDR_SECONDPACKAGE);
}
public static String getCurrentMap(WinNT.HANDLE processID){
// [[0x13890D0]+82 FDD0]
String firstAddr=JnaProcess.readMemoryFromProcessAll(processID,PLAYER_BASEADDR_CURRENTMAP,4);
// int firstAddrAfterOffset=Integer.parseInt(firstAddr,16)+0x82FDD0;
int firstAddrAfterOffset=Integer.parseInt(firstAddr,16)+8584656;
return JnaProcess.hexStr2Str(JnaProcess.readMemoryFromProcess(processID,firstAddrAfterOffset));
}
public static String getCurrentMapAddr(WinNT.HANDLE processID){
// [[0x13890D0]+82 FDD0]
String firstAddr=JnaProcess.readMemoryFromProcessAll(processID,PLAYER_BASEADDR_CURRENTMAP,4);
int firstAddrAfterOffset=Integer.parseInt(firstAddr,16)+0x82FDD0;
System.out.println(firstAddrAfterOffset+"");
//int firstAddrAfterOffset=Integer.parseInt(firstAddr,16)+8584656;
return String.format("%08x", firstAddrAfterOffset);
}