Process
进程的属性
Process.id
包含进程 PID 的属性,类型为数字。Process.arch
包含架构信息的属性,类型为字符串,可能的值为 ia32、x64、arm 或 arm64。Process.platform
包含平台信息的属性,类型为字符串,可能的值为 windows、darwin、linux 或 qnx。Process.pageSize
包含虚拟内存页大小的属性(以字节为单位),类型为数字。这个属性用于使你的脚本更具可移植性。- Process.pointerSize
包含指针大小的属性(以字节为单位),类型为数字。这个属性用于使你的脚本更具可移植性。 Process.codeSigningPolicy
包含代码签名策略的属性,类型为字符串,可能的值为 optional 或 required。required 意味着 Frida 将避免修改内存中的现有代码,并且不会尝试运行未签名的代码。
目前,除非使用 Gadget 并配置为假设需要代码签名,否则此属性将始终设置为 optional。此属性允许你确定是否可以使用 Interceptor API,以及是否可以安全地修改代码或运行未签名的代码。Process.mainModule
包含表示进程主可执行文件的模块的属性。
进程的方法
Process.getCurrentDir()
返回一个字符串,指定当前工作目录的文件系统路径。Process.getHomeDir()
返回一个字符串,指定当前用户主目录的文件系统路径。Process.getTmpDir()
返回一个字符串,指定用于临时文件的目录的文件系统路径。Process.isDebuggerAttached()
返回一个布尔值,指示当前是否有调试器附加。Process.getCurrentThreadId()
获取该线程的操作系统特定 ID,类型为数字。Process.enumerateThreads()
枚举所有线程,返回一个包含以下属性的对象数组:
- id: 操作系统特定的 ID。
- state: 字符串,指定线程状态,可能的值为 running(运行中)、stopped(已停止)、waiting(等待中)、uninterruptible(不可中断)或 halted(已终止)。
- context: 包含 pc 和 sp 键的对象,这些键是 NativePointer 对象,分别指定 EIP/RIP/PC 和 ESP/RSP/SP(用于 ia32/x64/arm)。也可以使用其他处理器特定的键,例如 eax、rax、r0、x0 等。
Process.findModuleByAddress(address), Process.getModuleByAddress(address), Process.findModuleByName(name), Process.getModuleByName(name)
返回一个与指定地址或名称匹配的模块(Module)。如果找不到这样的模块,以 find 开头的函数返回 null,而以 get 开头的函数则抛出异常。Process.enumerateModules()
枚举当前加载的模块,返回一个模块(Module)对象的数组。Process.findRangeByAddress(address), getRangeByAddress(address)
返回一个对象,包含指定地址所在内存范围的详细信息。如果找不到这样的范围,findRangeByAddress() 返回 null,而 getRangeByAddress() 则抛出异常。