gpt4 book ai didi

将 LPVOID 类型与 char * 连接

转载 作者:行者123 更新时间:2023-11-30 20:59:35 31 4
gpt4 key购买 nike

我是 C 编程语言的初学者,我得到了以下代码:

LPVOID lpvAddr;
lpvAddr = VirtualAlloc(NULL, strlen(jmp_esp), 0x3000, 0x40);
char *X = "\x41\x42\x43";
char *full2;
strcat(full2 , X);
strcat(full2 , lpvAddr); //here I'm getting error because I can't concatenate char * with ipvAddr;

lpvAddr 包含内存地址,比如说:00112233。如何使 "full2" 变量包含:"\x41\x42\x43\x00\x11\x22\x33"

最佳答案

VirtualAlloc 有非常具体的用法。请改用malloc。或者,如果尝试访问另一个进程中的内存,请使用 VirtualAllocEx。

话虽如此,首先您必须在 lpvAddr 中放入一些内容。输入零、字节或字符串。示例:

char *jmp_esp = "abc";
LPVOID lpvAddr;
lpvAddr = VirtualAlloc(NULL, strlen(jmp_esp)+1, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
strcpy(lpvAddr, jmp_esp);

请注意,您必须为末尾的空字符分配1个额外字节。

下一个问题是full2,它是未初始化的指针。首先,您必须初始化,然后使用 strcpy 写入空字符串,然后使用 strcat 将另一个字符串添加到 NUL 终止字符串.

const char *X = "xyz";
char *full2 = malloc(strlen(x) + strlen(jmp_esp) + 1);
strcpy(full2 , X);
strcat(full2 , lpvAddr);

这应该以用于 malloc 分配的 VirtualFreefree 结束。

关于将 LPVOID 类型与 char * 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46985704/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com