メモリにアクセスするコードを書いたところです。CheatEngineでアドレス(コード)を確認し、で印刷しましたがSystem.out
、違います。長い値であることはわかっていますが、16進数では、値2は00000002(CheatEngineでの結果)であり、Javaで844287491178496を取得します。何故ですか?値をアドレスからに変換するにはどうすればよいint
ですか?さらに重要なのは、Javaを使用してメモリから読み取ったばかりの長い値は何ですか?これが私のコードです:
import java.lang.reflect.Field;
import sun.misc.Unsafe;
public class Memory2 {
public static void main(String args[]){
Unsafe unsafe = getUnsafe();
long address = 0x002005C;
unsafe.getAddress(address);
System.out.println(unsafe.getAddress(address));
}
public static Unsafe getUnsafe() {
try {
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
return (Unsafe)f.get(null);
} catch (Exception e) {}
return null;
}
}