原文鏈接: https://frida.re/docs/javascript-api/#thread
歡迎加入 Frida 交流群: 1049977261
Thread
-
Thread.backtrace([context, backtracer])
:
為當前線程生成一個回溯, 返回一個NativePointer
數(shù)組.如果您在
Interceptor
的onEnter
或onLeave
回調中調用這個方法, 您應當把this.context
提供給可選參數(shù)context
, 因為這將給您一個更 精準的回溯.
省略context
意味著回溯將從當前棧的位置生成, 但由于 V8 的棧堆幀機制, 您可能得不到一個很好的回溯.
可選的backtracer
參數(shù)用于指定使用哪個回溯器, 僅限于Backtracer.FUZZY
或Backtracer.ACCURATE
, 后者是默認選項.
精準的回溯器 (Backtracer.ACCURATE
) 依賴于對調試器友好的二進制文件或者存在適用的調試信息, 而模糊回溯器 (Backtracer.FUZZY
) 在堆棧上執(zhí)行取證, 以便猜測返回地址, 這意味著您可能得到誤報, 但它對任意二進制文件都奏效.
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
創(chuàng)建一個新的Int64
對象,v
可以是一個數(shù)字也可以是一個包含十進制或以 "0x" 開頭的十六進制的數(shù)字字符串. 您可以使用int64(v)
作為這個方法的簡寫.
add(rhs)
,sub(rhs)
,
and(rhs)
,or(rhs)
,
xor(rhs)
:
通過將當前Int64
對象與另一個數(shù)字或Int64
對象進行加, 減, 與, 或, 異或來創(chuàng)建一個新的Int64
對象.shr(n)
,shl(n)
:
通過將當前對象向右或向左移n
位來創(chuàng)建一個新的Int64
對象.compare(rhs)
:
類似于String#localeComare()
一樣返回一個數(shù)字類型的比較結果.toNumber()
: 將當前對象轉換成數(shù)字.toString([radix = 10])
:
將當前對象轉換成數(shù)字字符串, 可指定進制, 默認十進制.
UInt64
-
new UInt64(v)
:
通過v
創(chuàng)建一個新的UInt64
對象,v
可以是一個數(shù)字也可以是一個包含十進制或以 "0x" 開頭的十六進制的數(shù)字字符串. 您可以使用uint64(v)
作為這個方法的簡寫.
add(rhs)
,sub(rhs)
,
and(rhs)
,or(rhs)
,
xor(rhs)
:
通過將當前UInt64
對象與另一個數(shù)字或UInt64
對象進行加, 減, 與, 或, 異或來創(chuàng)建一個新的UInt64
對象.shr(n)
,shl(n)
:
通過將當前對象向右或向左移n
位來創(chuàng)建一個新的UInt64
對象.compare(rhs)
:
類似于String#localeComare()
一樣返回一個數(shù)字類型的比較結果.toNumber()
: 將當前對象轉換成數(shù)字.toString([radix = 10])
:
將當前對象轉換成數(shù)字字符串, 可指定進制, 默認十進制.