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

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

2024-5-13 17:25
2299

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无法读出这个字符串,
有办法可以解决吗?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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