我目前在一些遊戲中玩弄內存,看看我能做什麼,我有一個修改後的內存編輯類來滿足我的需求,但是我無法編輯或讀取布爾值這是造成我問題的值。該類可以幫助我通過鉤子修改外部進程的值。C#內存編輯布爾值
寫一個布爾值就是我想要做的最多,這是我一直嘗試,但TBH我不知道什麼是錯的
public bool WriteBool(int Address, bool Value)
{
byte[] bArray = BitConverter.GetBytes(Value);
bool flag = Process_MemoryReaderWriter.WriteProcessMemory((IntPtr)this.Handle, (IntPtr)Address, bArray, 2, 0);
return flag;
}
我還需要讀一些布爾值這是我所嘗試的;
public bool ReadBool(int Address)
{
IntPtr intPtr = IntPtr.Zero;
byte[] bArray = new byte[4];
IntPtr intPtr1 = intPtr;
Process_MemoryReaderWriter.ReadProcessMemory((IntPtr)this.Handle, (IntPtr)Address, bArray, 2, out intPtr1);
int rBInt = BitConverter.ToInt32(bArray, 0);
int num = rBInt;
bool boolValue = num != 0;
return boolValue;
}
我已經確定,布爾是問題,因爲一切似乎很好地工作在這是程序出現失敗的最後一步。 正如你可能告訴我,我真的不知道我在做什麼(證據不起作用),但任何幫助將有所幫助,考慮到這一點,如果可能的話,請嘗試以半簡單的方式保留答案。
我相信我所提供的一切,但如果您需要任何更多信息請諮詢:)
如何在內存中構造「布爾」值取決於使用的平臺和/或編程語言。通常它們被存儲爲整數0或1,但它們的大小可能不同,可能是1,2或4個字節(甚至可以看到8)。確保你的尺寸合適。 –
'BitConverter'是一個用於序列化的輔助類,不是一種魔術方法,可以爲您提供目標需要的字節。 「布爾」不是一個明確定義的類型,你需要知道在特定遊戲中如何表示真值和假值(這取決於編譯器,平臺,「低級」攻擊......)。 'BitConverter.GetBytes(bool)'給你一個零或一個字節的單個字節,它幾乎不會成爲你想要的。 – Luaan