Frida Javascript api #Frida #Script 與 #Process (中文版)

原文鏈接: https://frida.re/docs/javascript-api/#frida
歡迎加入 Frida 交流群: 1049977261

Frida

  • Frida.version:
    一個包含當前 Frida 版本的字符串.
  • Frida.heapSize:
    一個被所有腳本和 Frida 自己的運行時共享的包含當前 Frida 私有堆大小的動態(tài)屬性.
    這對于監(jiān)控宿主進程正在使用的內(nèi)存量很有用.

Script

  • Script.runtime:
    一個包含正在被使用的運行時的字符串. 要么是 DUK , 要么是 V8.

Process

  • Process.id:
    包含 PID 的數(shù)字.

  • Process.arch:
    包含 ia32, x64, armarm64 的字符串.

  • Process.platform:
    包含 windows, darwin, linuxqnx 的字符串.

  • Process.pageSize:
    虛擬內(nèi)存頁的尺寸(以 byte 為單位). 可用于使你的腳本具有更好的可移植性.

  • Process.pointerSize:
    指針的尺寸(以 byte 為單位). 可用于使你的腳本具有更好的可移植性.

  • Process.codeSigningPolicy:
    包含 optionalrequired 的字符串,后者意味著 Frida 將禁止修改內(nèi)存中已有的代碼, 并且不會嘗試允許未簽名的代碼.
    當前這個屬性總是被設(shè)為 optional 除非你正在使用 Gadget 并且將其配置為假設(shè)代碼簽名是必要的.
    此屬性使您可以確定 Interceptor API是否超出限制, 以及修改代碼或運行未簽名的代碼是否安全。

  • Process.isDebuggerAttached():
    返回一個布爾值用來表示當前是否有調(diào)試器被附加到進程上.

  • Process.getCurrentThreadId():
    獲得操作系統(tǒng)指定給當前線程的 id.

  • Process.enumerateThreads():
    列舉所有的線程, 返回一個包含以下屬性的序列:

    • id: 操作系統(tǒng)指定的 id
    • state: running, stopped, waiting,uninterruptiblehalted 的字符串
    • context: 帶有鍵 pcspNativePointer 對象, 分別為 ia32 / x64 / arm 指定 EIP / RIP / PC 和 ESP / RSP / SP. 也可以使用其他處理器特定的鍵, 例如 eax, rax, r0, x0等.
  • Process.findModuleByAddress(address), Process.getModuleByAddress(address), Process.findModuleByName(name), Process.getModuleByName(name):
    返回一個 addressname 滿足要求的 Module.
    當找不到相應(yīng)的模塊時, find 前綴的方法返回 nullget 前綴的方法拋出異常.

  • Process.enumerateModules():
    列舉當前已加載的模塊, 返回一個 Module 序列.

  • Process.findRangeByAddress(address), getRangeByAddress(address):
    返回一個對象, 其中包含有關(guān)包含 address 的范圍的詳細信息.
    當找不到相應(yīng)的范圍是, findRangeByAddress() 返回 null, 而 getRangeByAddress() 拋出異常.
    閱讀 Process.enumerateRanges() 以便了解哪些字段被包含在內(nèi).

  • Process.enumerateRanges(protection|specifier):
    列舉滿足 rwx 格式的字符串參數(shù) protection 的內(nèi)存范圍, 其中 rw- 意為 "必須至少是可讀可寫".
    Alternatively you may provide a specifier object with a protection key whose value is as
    aforementioned, and a coalesce key set to true if you'd like neighboring
    ranges with the same protection to be coalesced (the default is false;
    i.e. keeping the ranges separate).
    返回一個包含以下屬性的序列:

    • base: 一個 NativePointer 類型的基礎(chǔ)地址

    • size: 以 byte 為單位的尺寸

    • protection: 讀寫權(quán)限 (如上所述)

    • file: (當可用時) 文件映射詳情, 包含以下屬性:

      • path: 完整的文件系統(tǒng)路徑字符串
      • offset: 對應(yīng)的文件在硬盤上的偏移量, 以 byte 為單位
      • size: 對應(yīng)的文件在硬盤上的尺寸, 以 byte 為單位
  • Process.enumerateMallocRanges(): just like enumerateRanges(), but for
    individual memory allocations known to the system heap.

  • Process.setExceptionHandler(callback):
    安裝一個進程側(cè)的異常處理回調(diào), 以便在宿主進程之前獲得處理原生異常的機會.
    被調(diào)用時將伴隨包含以下屬性的 details 對象:

    • type: 下列字符串中的一種:
      • abort
      • access-violation
      • guard-page
      • illegal-instruction
      • stack-overflow
      • arithmetic
      • breakpoint
      • single-step
      • system
    • address: NativePointer 類型的地址, 標志著異常出現(xiàn)的地方.
    • memory: 如果有的話, 包含以下屬性:
      • operation: 觸發(fā)該異常的操作類型, 僅限于 read, write, 或 execute.
      • address: NativePointer 類型的地址, 標志著異常出現(xiàn)的地方.
    • context: 帶有鍵 pcspNativePointer 對象, 分別為 ia32 / x64 / arm 指定 EIP / RIP / PC 和 ESP / RSP / SP. 也可以使用其他處理器特定的鍵, 例如 eax, rax, r0, x0等.
      你也可以通過分配這些鍵來更新寄存器值.
    • nativeContext:
      操作系統(tǒng)以及特定架構(gòu)的 CPU 的上下文結(jié)構(gòu)的 NativePointer 類型的地址.
      This is only exposed as a last resort for edge-cases where context isn't providing enough details. We would however discourage using this and rather submit a pull-request to add the missing bits needed for your use-case.

    現(xiàn)在由你的回調(diào)來決定要如何應(yīng)對異常. 它可以記錄這個問題, 通過 send()recv() 與你的應(yīng)用進行交互, 或者它可以修改寄存器和內(nèi)存以便從異常中恢復(fù).
    如果你處理好了異常, 你應(yīng)對返回 true, 這樣的話 Frida 將立即恢復(fù)線程.
    如果你沒有返回 true, Frida 將會把這個異常轉(zhuǎn)發(fā)到宿主進程潛在的異常處理器, 或任由操作系統(tǒng)終止進程.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垢袱,一起剝皮案震驚了整個濱河市计维,隨后出現(xiàn)的幾起案子竖共,更是在濱河造成了極大的恐慌纤虽,老刑警劉巖乳绕,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逼纸,居然都是意外死亡洋措,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門杰刽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菠发,“玉大人,你說我怎么就攤上這事贺嫂∽茵” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵第喳,是天一觀的道長糜俗。 經(jīng)常有香客問我,道長曲饱,這世上最難降的妖魔是什么悠抹? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮扩淀,結(jié)果婚禮上楔敌,老公的妹妹穿的比我還像新娘。我一直安慰自己驻谆,他們只是感情好卵凑,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胜臊,像睡著了一般勺卢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上象对,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天值漫,我揣著相機與錄音,去河邊找鬼织盼。 笑死,一個胖子當著我的面吹牛酱塔,可吹牛的內(nèi)容都是我干的沥邻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼羊娃,長吁一口氣:“原來是場噩夢啊……” “哼唐全!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邮利,失蹤者是張志新(化名)和其女友劉穎弥雹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體延届,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡剪勿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了方庭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厕吉。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖械念,靈堂內(nèi)的尸體忽然破棺而出头朱,到底是詐尸還是另有隱情,我是刑警寧澤龄减,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布项钮,位于F島的核電站,受9級特大地震影響希停,放射性物質(zhì)發(fā)生泄漏烁巫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一脖苏、第九天 我趴在偏房一處隱蔽的房頂上張望程拭。 院中可真熱鬧,春花似錦棍潘、人聲如沸恃鞋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恤浪。三九已至,卻和暖如春肴楷,著一層夾襖步出監(jiān)牢的瞬間水由,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工赛蔫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砂客,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓呵恢,卻偏偏與公主長得像鞠值,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子渗钉,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容