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.1 线程 (Thread)

  • Thread.backtrace([context, backtracer]): 生成当前线程的回溯栈,返回形式为一个NativePointer数组。如果你想在Interceptor的onEnter或onLeave回调中使用该函数,你需要提供this.context给context参数(不是必须),这样该函数生成的回溯栈会更加准确。不提供context参数时,该函数会从当前栈位置自动生成一个context,不过由于JavaScript虚拟机栈帧的问题,结果不会很准确。另一个可选参数backtracer用于指明使用何种追踪器,其值只能为Backtracer.FUZZY或Backtracer.ACCURATE,后者是默认值。追踪器的准确度取决于被追踪程序对调试的友好程度以及调试信息,而fuzzy追踪器会对栈进行鉴别,并尝试猜出返回地址,也就是说你会得到一些假阳性错误,不过好处是任何二进制文件都可以使用。生成的回溯栈目前被限制在16个栈帧,如果你想调整,那你必须自己重新编译Frida。

const f = Module.getExportByName('libcommonCrypto.dylib', 'CCCryptorCreate');
Interceptor.attach(f, {
  onEnter(args) {
    console.log('CCCryptorCreate called from: \n' + 
        Thread.backtrace(this.context, Backtracer.ACCURATE)
        .map(DebugSymbol.fromAddress).join('\n') + '\n');
  }
});
  • Thread.sleep(delay): 挂起当前线程delay秒。比如delay为0.05表示休眠50毫秒。

Previous2. 进程,线程,模块和内存Next2.2 进程 (Process)

Last updated 2 years ago