【问题标题】:C# Memory Editing BooleansC# 内存编辑布尔值
【发布时间】:2023-03-17 13:39:01
【问题描述】:

我目前在玩的一些游戏中搞乱内存,看看我能做什么,我有一个修改过的内存编辑类来满足我的需要,但是我无法编辑或读取导致的布尔值我的问题。该类帮助我通过钩子修改外部进程的值。

写入 bool 值是我最想做的,这是我尝试过的,但 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 是一个用于序列化的辅助类,而不是一种能够为您提供目标所需字节的神奇方法。 “Bool”不是一个定义明确的类型,你需要知道真假值在特定游戏中是如何表示的(这取决于编译器、平台、“低级”黑客......)。 BitConverter.GetBytes(bool) 为您提供一个零或一字节,这几乎永远是您想要的。

标签: c# memory process editing


【解决方案1】:

BitConverter.GetBytes(bool) 返回一个大小为 1 的字节数组,而看起来 WriteProcessMemory 和 ReadProcessMemory 期望大小为 2 的字节数组(每个的第四个参数)。将它们更改为 1 应该可以解决该问题。此外,BitConverter 也有一个 ToBoolean 方法,所以为了阅读,你可以这样做:

public bool ReadBool(int Address)
{
    IntPtr intPtr = IntPtr.Zero;
    byte[] bArray = new byte[1];
    Process_MemoryReaderWriter.ReadProcessMemory((IntPtr)this.Handle, (IntPtr)Address, bArray, 1, out intPtr);
    return BitConverter.ToBoolean(bArray, 0);
}

您知道,其他系统如何处理布尔值并没有明确定义,但至少假设 0 == false 应该是安全的。字节大小可能是您的主要问题 - 某些语言和系统使用 4 字节/浮点数,其他 1 因此您可能需要适当调整代码(例如,如果其他进程使用 4 字节布尔值,则您的 ReadBool 方法有效)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2013-08-09
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多