我们可以使用def file.But导出序号,系统dll不使用def files.Still doesn 32.dll有569个序数导出,而user32.dll有181个序数导出。
在没有def文件的情况下,有没有导出序号的方法?
发布于 2016-07-18 06:43:00
每个导出的函数都有一个序号。链接器会自动对它们进行编号,从1开始。但是如果您想要控制精确的值(就像Microsoft与这些DLL有关),那么您必须使用.def文件。
只有当客户端代码以前使用序号时,才需要这样做,并且您需要与未重新生成的旧代码进行二进制兼容性,并且添加或删除导出的函数。为了在99.99%的准确性内,客户端代码从不使用序号链接导出的函数。他们总是用这个名字代替。只有当您在.def文件中导出带有NONAME属性的函数时,才会依赖序号值,从而迫使客户端代码使用序号。在实践中,只有当您想隐藏出口时才会这样做。
微软绝不能对此做出任何假设,并被迫在过去23年中保持这些DLL二进制兼容。不是我们的负担。
https://stackoverflow.com/questions/38429312
复制相似问题