Frida JavaScript-api 中文手册
  • JavaScript API 手册
  • 目录
  • 1. 运行时信息
    • 1.1 Frida
    • 1.2 Script
  • 2. 进程,线程,模块和内存
    • 2.1 线程 (Thread)
    • 2.2 进程 (Process)
    • 2.3 模块 (Module)
    • 2.4 模块映射 (ModuleMap)
    • 2.5 内存 (Memory)
    • 2.6 内存读写监视器 (MemoryAccessMonitor)
    • 2.7 C模块 (CModule)
    • 2.8 Api解析器 (ApiResolver)
    • 2.9 调试符号 (DebugSymbol)
    • 2.10 内核 (Kernel)
  • 3. 数据类型,函数和回调
    • 3.1 64位整型 (Int64)
    • 3.2 无符号64位整型 (UInt64)
    • 3.3 Native指针 (NativePointer)
    • 3.4 数组 (ArrayBuffer)
    • 3.5 Native函数 (NativeFunction)
    • 3.6 Native回调 (NativeCallback)
    • 3.7 系统函数 (SystemFunction)
  • 4. 网络
    • 4.1 套接字 (Socket)
    • 4.2 套接字监听器 (SocketListener)
    • 4.3 套接字连接 (SocketConnection)
  • 5. 文件和数据流
    • 5.1 文件 (File)
    • 5.2 读写流 (IOStream)
    • 5.3 输入流 (InputStream)
    • 5.4 输出流 (OutputStream)
    • 5.5 Unix输入流 (UnixInputStream)
    • 5.6 Unix输出流 (UnixOutputStream)
    • 5.7 Win32输入流 (Win32InputStream)
    • 5.7 Win32输出流 (Win32OutputStream)
  • 6. 数据库
    • 6.1 Sqlite数据库
    • 6.2 Sqlite语句
  • 7. 注入
    • 7.1 Interceptor
    • 7.2 Stalker
    • 7.3 ObjC
    • 7.4 Java
  • 8. CPU指令
    • 8.1 指令集
    • 8.2 X86写入
    • 8.3 X86重定位
    • 8.4 x86枚举类型
    • 8.5 Arm写入
    • 8.6 Arm重定位
    • 8.7 Thumb写入
    • 8.8 Thumb重定位
    • 8.9 ARM 枚举类型
    • 8.10 ARM64 写入
    • 8.11 ARM64 重定位
    • 8.12 AARCH64 枚举类型
    • 8.13 Mips写入
    • 8.14 Mips重定位
    • 8.15 Mips枚举类型
  • 9. 其他
    • 9.1 终端
    • 9.2 转储
    • 9.3 缩写
    • 9.4 宿主与被注入程序之间的通信
    • 9.5 时间相关
    • 9.6 垃圾回收
Powered by GitBook
On this page
  1. 2. 进程,线程,模块和内存

2.3 模块 (Module)

由Module.load()和Process.enumerateModules()返回的对象。

  • name: 字符串,模块的标准名

  • base: NativePointer,基地址

  • size: 数字,大小,单位字节

  • path: 字符串,完整的系统路径

  • enumerateImports(): 枚举导入模块,返回一个对象数组,其中每个对象包含以下属性: * type: 字符串,function 或 variable * name: 字符串,导入名称 * module: 字符串,模块名 * address: NativePointer,模块的绝对地址 * slot: NativePointer,导入模块的内存位置 对于所有的导入,只有name属性是保证一定存在的。其他的属性会尽可能的解析,但不保证一定成功。

  • enumerateExports(): 枚举导出模块,返回一个对象数组,其中每个对象包含以下属性: * type: 字符串,function 或 variable * name: 字符串,导出名 * address: NativePointer,绝对地址

  • enumerateSymbols(): 枚举模块中的所有符号,返回一个对象数组,其中每个对象包含以下属性: * isGloable: 布尔值,指明该符号是否全局可见 * type: 字符串: unknown, section, undefined(Mach-O), absolute(Mach-O), prebound-undefined(Mach-O), indirect(Mach-O), object(ELF), function(ELF), file(ELF), common(ELF), tls(ELF) * section: 如果存在,则包含: * id: 字符串,包含节索引,段名,节名 * protection: 保护策略,和Process.enumerateRanges()里类似 * name: 字符串,符号名 * address: NativePointer,绝对地址 * size: 数字,符号的大小,单位字节

  • enumerateRanges(protection): 和Process.enuerateRanges一样,不过范围是模块

  • findExportByName(exportName), getExportByName(exportName): 返回导出的绝对地址,其中该导出的名称和exportName一致。若没有该导出,find类函数会返回null,get类函数会抛出异常

  • Module.load(path): 从文件系统中加载指定模块,并返回一个模块对象。若目标对象无法加载,则会抛出异常

  • Module.ensureInitialized(name): 确保指定模块的初始化部分被运行了。在早期注入中非常重要,这里的早期是指进程生命周期的早期。一个典型案例是与指定模块中ObjC类进行交互时使用。

  • Module.findBaseAddress(name), Module.getBaseAddress(name): 返回指定名称的模块的基地址。若没有找到指定模块,find类函数会返回null,get类函数会抛出异常

  • Module.findExportByName(moduleName|null, exportName), Module.getExportByName(moduleName|null, exportName): 返回模块ModuleName中exportName的导出的绝对地址。若你不知道具体是哪个模块,你可以传入null,不过这样搜索的开销会非常大,尽量不要这么做。若没有目标模块,find类函数会返回null,get类函数会抛出异常

Previous2.2 进程 (Process)Next2.4 模块映射 (ModuleMap)

Last updated 2 years ago