首页
社区
课程
招聘
未解决 [求助]R0如何传出字符串到R3
发表于: 2024-5-13 17:25 2208

未解决 [求助]R0如何传出字符串到R3

2024-5-13 17:25
2208

R0传出字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct DriverName
{
    char* name;
};
DriverName* data = (DriverName*)req->data;
 
char* temp;
ANSI_STRING AnsiString;
RtlUnicodeStringToAnsiString(&AnsiString, &((PKLDR_DATA_TABLE_ENTRY)DynamicData->DriverObject->DriverSection)->BaseDllName, TRUE);
temp = AnsiString.Buffer;
RtlFreeAnsiString(&AnsiString);
 
data->name = temp;
DbgPrint("name %s\n", data->name);
break;

R3接收的时候出问题了

1
2
3
auto name = drv.GetDriverBaseName();
printf("pName: %p\n", name);
printf("name: %s\n", name);

图片描述

所以问题来了,我在R0创建的字符串的地址是内核地址,R3无法读出这个字符串,
有办法可以解决吗?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
解决方案一: strcpy
2024-5-13 17:41
1
雪    币: 70
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
把字符串内存转成无符号整数传过去
6天前
0
雪    币: 4715
活跃值: (4177)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
如果你仔细观察微软的api文档,你可以发现微软的api文档凡是有字符串的out参数,都需要ring3提供一个输出缓冲区,然后内核把字符串拷贝给这个输出缓冲区。
6天前
0
游客
登录 | 注册 方可回帖
返回
//