1

如果我将所有控件都放在 EXE 中,是否可以从外部访问它,就像将它放在 DLL 中一样?

4

2 回答 2

0

因此,您所追求的是通常导出符号的概念,除非您明确执行某些操作,否则在 Windows 中编译 exe 时不会导出符号。现在,如果您谈论的是 .NET,那么问题就有些不同了。但是,我注意到您将此标记为安全;出于安全目的,我不会依赖这个事实。代码注入等攻击比这要复杂一些。

于 2009-10-18T02:44:34.197 回答
0

正如 BobbyShaftoe 所提到的,这取决于您使用的是托管代码还是非托管代码,但我在这里假设您使用的是非托管 C 或 C++。

基本上,一个已编译的可执行文件(在 Windows 的情况下为 EXE 或 DLL)由一堆函数和全局变量组成,每个变量在可执行文件的逻辑地址空间中都有一个特定的位置(当可执行文件被映射到物理内存地址时)已加载)。

如果有人知道其可执行文件中特定函数或变量的地址,那么您无法阻止他们使用它 - 但在 DLL 中,该信息实际上是可用的,因此人们实际上可以查找您的函数(嗯,您选择导出的那些)按名称。

通常你会在你的 DLL 中提供一个头文件,它会处理这个名称查找,所以他们只需调用这些函数,就好像它们是他们自己程序的一部分一样。

于 2009-10-18T02:52:17.597 回答