gpt4 book ai didi

java - 加载后是否有可能获取 native 库信息

转载 作者:行者123 更新时间:2023-11-30 09:32:29 25 4
gpt4 key购买 nike

是否有可能获取有关 native 库的信息,一旦从 java 加载了库(32 位或 64 位)的示例架构。

目的:在运行时向用户显示库版本和库的体系结构。

最佳答案

所有 native 库(Windows EXE、DLL、OCX、SYS 等)都是 PE 格式。PE文件的意义在于,磁盘上的数据结构与内存中使用的数据结构相同。

将可执行文件加载到内存中(例如,通过调用 LoadLibrary)主要是将 PE 文件的某些范围映射到地址空间。

描述 PE 格式(以及 COFF 文件)的中心位置是 WINNT.H。在此头文件中,您会发现几乎所有结构定义、枚举和 #define 都需要使用 PE 文件或内存中的等效结构。

在偏移量 0x0FE 处有一个名为 CHARACTERESTICS 的 PE 字段,其中有许多特征,例如 IMAGE_FILE_32BIT_MACHINE、IMAGE_FILE_EXECUTABLE_IMAGE。 IMAGE_FILE_32BIT_MACHINE (0x100) 用于 32 位 DLL/EXE。

您可以使用 Java 的反射 API 来解决这个问题。示例可以帮助您 -

http://www.devdaily.com/java/jwarehouse/scala/src/msil/ch/epfl/lamp/compiler/msil/PEType.java.shtml

关于java - 加载后是否有可能获取 native 库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517434/

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