原文链接: 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])
:
将当前对象转换成数字字符串, 可指定进制, 默认十进制.
网友评论