通过DMA写入指定地址的数据Addr - DmaWriteDataAddr
函数简介
通过 DMA 写入指定地址的二进制数据。使用直接地址而不是 CE 格式。(高级版功能,普通版无法使用)
接口名称
DmaWriteDataAddr
DLL调用
int32_t OLA_CALL_TYPE DmaWriteDataAddr(int64_t instance, int64_t deviceId, int32_t pid, int64_t addr, OLA_STRING_INPUT data);
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。deviceId(长整型数): 设备IDpid(整型数): 进程 PIDaddr(长整型数): 直接内存地址data(字符串): 二进制数据,以字符串形式描述
示例:
// 写入二进制数据
int32_t result = DmaWriteDataAddr(instance, deviceId, 1234, 0x400000, "12 34 56 78 90 ab cd");
if (result == 1) {
printf("数据写入成功\n");
} else {
printf("数据写入失败\n");
}
// 写入 NOP 指令(x86)
int32_t result2 = DmaWriteDataAddr(instance, deviceId, 1234, 0x400100, "90 90 90 90");
if (result2 == 1) {
printf("NOP 指令写入成功\n");
}
返回值
整型数:
- 1: 成功
- 0: 失败
参数说明
data(数据):
- 十六进制格式,每个字节以空格相隔
- 例如:
12 34 56 78 90 ab cd
addr(地址):
- 直接的十六进制地址
- 例如:
0x400000
应用场景
- 修改游戏数据
- 代码注入
- 内存修改
相关接口
- DmaWriteData - CE 格式地址写入
- DmaWriteInt - 写入整数
- DmaWriteString - 写入字符串
