原文链接: https://frida.re/docs/javascript-api/#thread
欢迎加入 Frida 交流群: 1049977261
Thread
-
Thread.backtrace([context, backtracer]):
为当前线程生成一个回溯, 返回一个NativePointer数组.如果您在
Interceptor的onEnter或onLeave回调中调用这个方法, 您应当把this.context提供给可选参数context, 因为这将给您一个更 精准的回溯.
省略context意味着回溯将从当前栈的位置生成, 但由于 V8 的栈堆帧机制, 您可能得不到一个很好的回溯.
可选的backtracer参数用于指定使用哪个回溯器, 仅限于Backtracer.FUZZY或Backtracer.ACCURATE, 后者是默认选项.
精准的回溯器 (Backtracer.ACCURATE) 依赖于对调试器友好的二进制文件或者存在适用的调试信息, 而模糊回溯器 (Backtracer.FUZZY) 在堆栈上执行取证, 以便猜测返回地址, 这意味着您可能得到误报, 但它对任意二进制文件都奏效.
var f = Module.getExportByName('libcommonCrypto.dylib',
'CCCryptorCreate');
Interceptor.attach(f, {
onEnter: function (args) {
console.log('CCCryptorCreate called from:\n' +
Thread.backtrace(this.context, Backtracer.ACCURATE)
.map(DebugSymbol.fromAddress).join('\n') + '\n');
}
});
-
Thread.sleep(delay):
暂停当前线程delay秒, 例如 0.05 意味着暂停 50 毫秒.
Int64
-
new Int64(v):
通过v创建一个新的Int64对象,v可以是一个数字也可以是一个包含十进制或以 "0x" 开头的十六进制的数字字符串. 您可以使用int64(v)作为这个方法的简写.
add(rhs),sub(rhs),
and(rhs),or(rhs),
xor(rhs):
通过将当前Int64对象与另一个数字或Int64对象进行加, 减, 与, 或, 异或来创建一个新的Int64对象.shr(n),shl(n):
通过将当前对象向右或向左移n位来创建一个新的Int64对象.compare(rhs):
类似于String#localeComare()一样返回一个数字类型的比较结果.toNumber(): 将当前对象转换成数字.toString([radix = 10]):
将当前对象转换成数字字符串, 可指定进制, 默认十进制.
UInt64
-
new UInt64(v):
通过v创建一个新的UInt64对象,v可以是一个数字也可以是一个包含十进制或以 "0x" 开头的十六进制的数字字符串. 您可以使用uint64(v)作为这个方法的简写.
add(rhs),sub(rhs),
and(rhs),or(rhs),
xor(rhs):
通过将当前UInt64对象与另一个数字或UInt64对象进行加, 减, 与, 或, 异或来创建一个新的UInt64对象.shr(n),shl(n):
通过将当前对象向右或向左移n位来创建一个新的UInt64对象.compare(rhs):
类似于String#localeComare()一样返回一个数字类型的比较结果.toNumber(): 将当前对象转换成数字.toString([radix = 10]):
将当前对象转换成数字字符串, 可指定进制, 默认十进制.