gpt4 book ai didi

winapi - 如何实现rundll2-callable函数?

转载 作者:行者123 更新时间:2023-12-02 07:18:33 25 4
gpt4 key购买 nike

我正在尝试编写一个exe文件,该文件还导出可以用rundll32调用的函数。这是可能的,如果可以,为什么它不能这样工作?

我密切关注Microsoft's advice on this

#define RUNDLL32(func) extern "C" __declspec(dllexport) void CALLBACK func(HWND hWnd, HINSTANCE hInst, LPSTR lpszCmdLine, int nCmdShow)

RUNDLL32(MyFunc)
{
MessageBox(0, 0, 0, 0);
}

但是当与
rundll32 myprog.exe,_MyFunc@16

rundll32崩溃/ DEP启动。

最佳答案

Rundll32.exe使用LoadLibrary()加载可执行镜像。这对于EXE来说不太可能很好解决,它不希望加载到不是默认地址的地址上。保证会发生这种情况,rundll32.exe已经占用了该默认地址。不知道是否可以修改链接器,以便它不会忽略重定位记录。

但是,不要为这种方法而烦恼,只需创建一个DLL而不是EXE。并将真实参数传递给MessageBox()。而且,是的,请使用.def文件重命名导出的函数。

关于winapi - 如何实现rundll2-callable函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096013/

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