gpt4 book ai didi

c - 将函数及其大小传递给 WriteFile

转载 作者:行者123 更新时间:2023-11-30 18:30:10 27 4
gpt4 key购买 nike

作为学习练习,我正在编写一个在运行时输出 DLL 的程序。

我已经编写了 PE header ,并使用 WriteFile 成功将 DOS header 、NT header 、可选节 header 和 .text 节 header 写入文件,例如:

WriteFile(hFile, &nt_header, sizeof(nt_header), &written, NULL);

我现在想向 .text 部分添加一些代码,但我不知道如何将函数及其大小传递给 WriteFile,例如:

static int test(void)
{
return 10;
}

WriteFile 的第二个参数的类型为 LPCVOID。我尝试传入 test,但只写入了 1 个字节。正如预期的那样,将指针传递给 test 写入了 4 个字节。

这可能是显而易见的,但我不明白我哪里出了问题。

最佳答案

这很明显,但答案可能不是您想要的。这是不可能做到的,至少不能移植。

C 中的函数没有大小。您也不能假设“函数地址”概念意味着“函数编译代码中第一个机器指令的地址”。

简而言之,你所做的事情在 C 语言中是不可能的,你不能直接对函数进行 I/O。

关于c - 将函数及其大小传递给 WriteFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32755371/

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