将函数及其大小传递给WriteFile

时间:2015-09-24 07:07:40

标签: c function writefile

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

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

  

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

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

static int test(void)
{
    return 10;
}

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

这可能很明显,但我不明白我哪里出错了。

1 个答案:

答案 0 :(得分:4)

很明显,答案可能不是你想要的。这是不可能做到的,至少不是便携式的。

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

简而言之,你在C级的那个级别是不可能的,你不能直接对函数进行I / O.