I'm hacking a game and I'm using Java JNA to write memory to the game, I can only write byte arrays but I need to write booleans as well (if that makes sense). So this is my write methods
VKernel32.java
public abstract boolean WriteProcessMemory(Pointer paramPointer1, long paramLong, Pointer paramPointer2, int paramInt, IntByReference paramIntByReference);
Actual Memory Writing:
public void writeMemory(int address, byte[] data) {
int size = data.length;
Memory toWrite = new Memory(size);
for (int i = 0; i < size; i++) {
toWrite.setByte(i, data[i]);
}
kernel32.WriteProcessMemory(process, address, toWrite, size, null);
}
In C++ I can use a template for-say to do something like this
template
void Write(DWORD addr, T val) {
WriteProcessMemory(_process, (LPVOID)addr, &val, sizeof(T), NULL);
}
解决方案
Memory consists of bytes. If you want to write something more "high-level" (such as a boolean) you need to think about how you want to represent that as bytes and encode it that way. If you are hacking a game, your design choices here are limited to what the game thinks a boolean should look like in memory.