Winapi 如何实现rundll2可调用函数?

Winapi 如何实现rundll2可调用函数?,winapi,crash,dllexport,rundll32,Winapi,Crash,Dllexport,Rundll32,我正在尝试编写一个exe,该exe还导出可以使用RundL32调用的函数。这可能吗?如果可能的话,为什么不这样工作 我紧随其后 但是当你打电话给我的时候 rundll32 myprog.exe,_MyFunc@16 rundll32崩溃/DEP启动。rundll32.exe使用LoadLibrary()加载可执行映像。对于EXE来说,这不太可能奏效,它不希望加载到不是默认地址的地址上。rundll32.exe已占用该默认地址,这是肯定会发生的。不确定是否可以修改链接器,使其不会忽略重新定位记录

我正在尝试编写一个exe,该exe还导出可以使用RundL32调用的函数。这可能吗?如果可能的话,为什么不这样工作

我紧随其后

但是当你打电话给我的时候

rundll32 myprog.exe,_MyFunc@16

rundll32崩溃/DEP启动。

rundll32.exe使用LoadLibrary()加载可执行映像。对于EXE来说,这不太可能奏效,它不希望加载到不是默认地址的地址上。rundll32.exe已占用该默认地址,这是肯定会发生的。不确定是否可以修改链接器,使其不会忽略重新定位记录


但是不用担心这种方法,只需创建一个DLL而不是EXE。并将实际参数传递给MessageBox()。并且,可以使用.def文件重命名导出的函数。

为什么要使用该函数的损坏名称?MyFunc
rundll32 myprog.exe不起作用吗?那是因为函数是以该名称导出的。我可以创建一个.def文件并以不同的名称导出它,但我不在乎它是否看起来有点奇怪(rundll32找到了它,这不是问题),而且我真的不知道如何告诉它使用.def文件。
rundll32 myprog.exe,_MyFunc@16