<aside> 😀 持续翻译中
</aside>
Frida.version: 包含当前Frida版本的属性,以字符串形式展示。Frida.heapSize: 一个动态属性,表示Frida私有堆栈的当前大小,该堆栈为所有脚本及Frida自身运行时所共享。这对于监视你的检测代码所使用的内存量及其在宿主进程中所占的总内存量非常有用。Script.runtime: 字符串属性,包含正在使用的运行时。可以是QJS或者V8。
Script.pin(): 临时禁止当前脚本被卸载。这一操作是基于引用计数的,因此之后必须有相对应的unpin()操作。这通常用于bindWeak()的回调函数中,当你需要在其他线程调度清理工作时使用。
Script.unpin(): 撤销先前的pin()操作,使得当前脚本可以被卸载。
Script.bindWeak(value, fn): 监控value,在value被垃圾收集或脚本即将卸载时调用fn回调函数。返回一个ID,可传递给Script.unbindWeak()进行显式清理。
如果你正在开发一个语言绑定,并且当JS值不再需要时需要释放本地资源,这个API会非常有用。
Script.unbindWeak(id): 停止监控之前通过Script.bindWeak(value, fn)绑定的value,并立即执行fn回调函数。
Script.setGlobalAccessHandler(handler | null): 安装或卸载一个处理程序,用于解决访问不存在的全局变量的尝试。这在实现REPL时特别有用,在这种情况下,未知标识符可能会从数据库中懒加载。
handler 是一个包含两个属性的对象:
enumerate(): 查询哪些附加的全局变量存在。必须返回一个字符串数组。get(property): 检索给定属性的值。Process.id: 属性,含有进程标识号(PID),数字.Process.arch: 属性,表示体系结构的字符串,取值 ia32, x64, arm 或者 arm64Process.platform: 属性,表示平台的字符串,取值 windows, darwin, linux 或者 qnxProcess.pageSize: 属性,表示虚拟内存页面大小的数字(以字节为单位)。这用于使你的脚本更具可移植性。