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

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

Frida

  • Frida.version:
    一个包含当前 Frida 版本的字符串.
  • Frida.heapSize:
    一个被所有脚本和 Frida 自己的运行时共享的包含当前 Frida 私有堆大小的动态属性.
    这对于监控宿主进程正在使用的内存量很有用.

Script

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

Process

  • Process.id:
    包含 PID 的数字.

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

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

  • Process.pageSize:
    虚拟内存页的尺寸(以 byte 为单位). 可用于使你的脚本具有更好的可移植性.

  • Process.pointerSize:
    指针的尺寸(以 byte 为单位). 可用于使你的脚本具有更好的可移植性.

  • Process.codeSigningPolicy:
    包含 optionalrequired 的字符串,后者意味着 Frida 将禁止修改内存中已有的代码, 并且不会尝试允许未签名的代码.
    当前这个属性总是被设为 optional 除非你正在使用 Gadget 并且将其配置为假设代码签名是必要的.
    此属性使您可以确定 Interceptor API是否超出限制, 以及修改代码或运行未签名的代码是否安全。

  • Process.isDebuggerAttached():
    返回一个布尔值用来表示当前是否有调试器被附加到进程上.

  • Process.getCurrentThreadId():
    获得操作系统指定给当前线程的 id.

  • Process.enumerateThreads():
    列举所有的线程, 返回一个包含以下属性的序列:

    • id: 操作系统指定的 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.
    当找不到相应的模块时, find 前缀的方法返回 nullget 前缀的方法抛出异常.

  • Process.enumerateModules():
    列举当前已加载的模块, 返回一个 Module 序列.

  • Process.findRangeByAddress(address), getRangeByAddress(address):
    返回一个对象, 其中包含有关包含 address 的范围的详细信息.
    当找不到相应的范围是, findRangeByAddress() 返回 null, 而 getRangeByAddress() 抛出异常.
    阅读 Process.enumerateRanges() 以便了解哪些字段被包含在内.

  • Process.enumerateRanges(protection|specifier):
    列举满足 rwx 格式的字符串参数 protection 的内存范围, 其中 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 类型的基础地址

    • size: 以 byte 为单位的尺寸

    • protection: 读写权限 (如上所述)

    • file: (当可用时) 文件映射详情, 包含以下属性:

      • path: 完整的文件系统路径字符串
      • offset: 对应的文件在硬盘上的偏移量, 以 byte 为单位
      • size: 对应的文件在硬盘上的尺寸, 以 byte 为单位
  • Process.enumerateMallocRanges(): just like enumerateRanges(), but for
    individual memory allocations known to the system heap.

  • Process.setExceptionHandler(callback):
    安装一个进程侧的异常处理回调, 以便在宿主进程之前获得处理原生异常的机会.
    被调用时将伴随包含以下属性的 details 对象:

    • type: 下列字符串中的一种:
      • abort
      • access-violation
      • guard-page
      • illegal-instruction
      • stack-overflow
      • arithmetic
      • breakpoint
      • single-step
      • system
    • address: NativePointer 类型的地址, 标志着异常出现的地方.
    • memory: 如果有的话, 包含以下属性:
      • operation: 触发该异常的操作类型, 仅限于 read, write, 或 execute.
      • address: NativePointer 类型的地址, 标志着异常出现的地方.
    • context: 带有键 pcspNativePointer 对象, 分别为 ia32 / x64 / arm 指定 EIP / RIP / PC 和 ESP / RSP / SP. 也可以使用其他处理器特定的键, 例如 eax, rax, r0, x0等.
      你也可以通过分配这些键来更新寄存器值.
    • nativeContext:
      操作系统以及特定架构的 CPU 的上下文结构的 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.

    现在由你的回调来决定要如何应对异常. 它可以记录这个问题, 通过 send()recv() 与你的应用进行交互, 或者它可以修改寄存器和内存以便从异常中恢复.
    如果你处理好了异常, 你应对返回 true, 这样的话 Frida 将立即恢复线程.
    如果你没有返回 true, Frida 将会把这个异常转发到宿主进程潜在的异常处理器, 或任由操作系统终止进程.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容