read_field_value
Reads a field's raw memory value for an instance or static field, automatically resolving its offset and address and using the field type to determine how many bytes to read.
Instructions
读取某个实例或静态字段的原始值(静态字段传 instance="static")。读几个字节由字段类型决定(bool 1 / int 4 / long·double·引用 8)。
自动完成三步:运行时查字段偏移 → 算出字段地址 → 读内存。
读几个字节由字段类型决定(_field_read_width):bool 读 1、int 读 4、
long/double/引用类型读 8。原来固定读 8 字节,4 字节字段会连带读到相邻
字段的 4 个字节 —— 既给出无意义的 as_int64(两个字段拼出来的数),
也会在字段贴近页尾时把一次本可成功的读取变成假失败。
返回里 read_width 是实际读取的字节数,解释字段也按宽度给:
1 → as_int8/as_uint8/as_bool;2 → as_int16/as_uint16;
4 → as_int32/as_uint32/as_float;8 → 再给 as_int64/as_double/as_pointer。
局限:只适合基础类型字段(int/float/bool/enum 等)。 引用类型字段读到的是指针,要读内容需再解引用(用 read_memory)。
静态字段:把 instance 传成 "static"(或空串)即可读静态字段,
不需要对象指针。这是 Mono 上拿单例指针的正路 —— Mono 的
find_instances 受官方限制常常返回 unsupported,而
GameManager.Instance 这类静态字段读出来的 as_pointer 就是实例指针
(宽度 8 的引用类型),可以直接喂给本工具的 instance 去读实例字段。
静态字段会连同基类一起查(declared_by 告诉你它声明在哪个类上)。
Args:
instance: 对象指针(十六进制)。可从 Hook 事件的 args[0] 里拿到。
传 "static" 表示读静态字段(不需要对象指针)。
name: 类名。
field: 字段名。
namespace: 命名空间。
image: 程序集名。
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| field | Yes | ||
| image | No | ||
| instance | Yes | ||
| namespace | No |