模块
Module对象的属性
- name
模块的名称,字符串 - base
模块的基址,类型为NativePointer - size
模块的大小,单位是字节 - path
模块在文件系统中的完整路径,类型为字符串
Module对象的方法
-
enumerateImports()
枚举模块导入表,返回一个包含以下属性的对象数组:- type
字符串,指定类型为 function 或 variable - name
导入项的名称,类型为字符串 - module
模块名称,类型为字符串 - address
绝对地址,类型为 NativePointer - slot
存储导入项的内存位置,类型为 NativePointer
- type
-
enumerateExports()
枚举模块导出表,返回一个包含以下属性的对象数组:- type:
- 字符串,指定类型为 function 或 variable
- name:
- 导出项的名称,类型为字符串
- address:
- 绝对地址,类型为 NativePointer
-
enumerateSymbols()
枚举模块符号表,返回一个包含以下属性的对象数组:- isGlobal:
布尔值,指定符号是否是全局可见的 - type:
字符串,指定类型 - section:
如果存在,则是一个对象,包含以下属性- id
- protection
- name:
符号名称,类型为字符串 - address:
绝对地址,类型为 NativePointer - size:
如果存在,为一个数字,指定符号的大小,以字节为单位
- isGlobal:
-
enumerateSections()
枚举模块的各个节,返回一个包含以下属性的对象数组:- id:
- 包含节索引、段名称(如果适用)和节名称的字符串
- name:
节名称,类型为字符串。 - address:
绝对地址,作为 NativePointer。 - size:
大小,以字节为单位。
-
findExportByName(exportName), getExportByName(exportName)
返回名为 exportName 的导出项的绝对地址。如果找不到这样的导出项,以 find 开头的函数将返回 null,而以 get 开头的函数将抛出一个异常。 -
Module.findBaseAddress(name), Module.getBaseAddress(name)
返回名为 name 的模块的基址。如果找不到这样的模块,以 find 开头的函数将返回 null,而以 get 开头的函数将抛出一个异常。 -
Module.findExportByName(moduleName|null, exportName), Module.getExportByName(moduleName|null, exportName)
返回名为 exportName 的导出项在 moduleName 模块中的绝对地址。如果模块未知,你可以传入 null 代替其名称,但这样的搜索可能会很耗时,应该避免这样做。如果在找不到这样的模块或导出项的情况下,以 find 开头的函数将返回 null,而以 get 开头的函数将抛出一个异常。