FRIDA-JSAPI:Java使用

devtools/2024/9/23 1:10:52/

Frida

  • Frida.version
    包含当前Frida版本信息的属性,以字符串形式表示。
    setImmediate(function (){console.log(Frida.version)
    })
    
    在这里插入图片描述

Java_9">Java

  • Java.perform(fn)
    确保当前线程已附加到虚拟机,并调用 fn

    	setImmediate(function (){Java.perform(function (){console.log("This is Java.perform.")})})
    
  • Java.available
    一个布尔值,指定当前进程是否加载了Java虚拟机,即Dalvik或ART。

    setImmediate(function (){Java.perform(function (){console.log(Java.available)})
    })
    
  • Java.androidVersion
    一个字符串,指定我们正在使用的Android版本。

    setImmediate(function (){Java.perform(function (){console.log(Java.androidVersion)})
    })
    
  • Java.isMainThread()
    确定调用者是否在主线程上运行。

    setImmediate(function (){Java.perform(function (){console.log(Java.isMainThread())})
    })
    
  • Java.use(className)
    动态获取一个JavaScript包装器,用于className,你可以通过调用它的$new()来实例化对象,以调用构造函数。在实例上调用$dispose()可以显式清理它(或者等待JavaScript对象被垃圾回收,或者脚本被卸载)。静态和非静态方法都是可用的,你甚至可以替换一个方法的实现,并从中抛出异常。

    setImmediate(function (){Java.perform(function (){var Class = Java.use("className");})
    })
    
  • Java.cast(handle,klass)
    类型转换器,给定从 Java.use() 返回的现有实例 handle 和类 klass,创建一个 JavaScript 包装器。这样的包装器还具有一个 class 属性,用于获取其类的包装器,以及一个 $className 属性,用于获取其类名的字符串表示。

  • Java.array(type, elements)
    根据指定的类型创建一个包含 JavaScript 数组 elements 中元素的 Java 数组。生成的 Java 数组的行为类似于 JS 数组,但可以通过引用传递给 Java API,以便它们可以修改其内容。

    const values = Java.array('int', [ 1003, 1005, 1007 ]);const JString = Java.use('java.lang.String');
    const str = JString.$new(Java.array('byte', [ 0x48, 0x65, 0x69 ]));
    
  • Java.vm
    该对象有如下方法

    • perform(fn)
      确保当前线程附加到虚拟机并调用 fn。
    • getEnv()
      获取当前线程的 JNIEnv 的包装器。如果当前线程未附加到虚拟机,则抛出异常。
    • tryGetEnv()
      尝试获取当前线程的 JNIEnv 的包装器。如果当前线程未附加到虚拟机,则返回 null。
    setImmediate(function (){Java.perform(function (){console.log(JSON.stringify(Java.vm.tryGetEnv()))  console.log(JSON.stringify(Java.vm.getEnv()))})
    })
    

    在这里插入图片描述

补充

setImmediate(fn)

setImmediate(fn) 的作用是立即将指定的函数 fn 放入事件队列的前面,并尽快执行,通常在当前的 JavaScript 事件循环完成后立即执行。

	setImmediate(function (){console.log("This is setImmediate.")})

JSON.stringify()

JSON.stringify() 是 JavaScript 中的一个方法,用于将 JavaScript 对象或值转换为 JSON 字符串。


http://www.ppmy.cn/devtools/115725.html

相关文章

WebLogic 靶场攻略

后台弱⼝令GetShell 步骤一:环境部署 cd vulhub-master/weblogic/weak_password docker-compose up -d docker ps 步骤二:漏洞复现 默认账号密码:weblogic/Oracle123 步骤二:进行登录 http://192.168.10.190:7001/console/…

高级I/O知识分享【5种IO模型 || select || poll】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,前文 2&a…

Java-Part 0

Advanced Java and Cutting-edge Applications Part 0: Course presentation Part 1 其实就是个括号匹配问题,Stack 经典问题,但是好久没用Java,有一点点生疏,感觉老师的版本要简洁的多 package tiei.ajp.test;import java.uti…

信安 实验1 用Wireshark分析典型TCP/IP体系中的协议

实验1 用Wireshark分析典型TCP/IP体系中的协议 实验目的 通过Wireshark软件分析典型网络协议数据包,理解典型协议格式和存在的问题,为后续学习和相关实验打下基础。 实验内容 (1)安装Wireshark,熟悉功能菜单。 &…

高速服务区生活废水处理设备产地货源

诸城市鑫淼环保小编带大家了解一下高速服务区生活废水处理设备产地货源 高速公路服务区生活污水处理设备是专门针对高速公路服务区产生的生活污水进行处理的设备。这些设备通常具备高效、稳定、环保等特点,以确保服务区产生的污水能够得到有效处理,达到排…

计算机网络第二章(部分)

R1. 五种非专用的因特网应用及它们所使用的应用层协议: 电子邮件 (Email) - 使用 SMTP(简单邮件传输协议)文件传输 (File Transfer) - 使用 FTP(文件传输协议)网页浏览 (Web Browsing) - 使用 HTTP/HTTPS(超文本传输协…

【Java】接口interface【主线学习笔记】

文章目录 前言接口interface接口内部结构的说明实现接口之间的关系接口的多态性 前言 Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实…

实时加密机的工作原理

实时加密机,作为数据加密领域的一种高级硬件设备,主要承担着对敏感数据进行实时加密和解密的任务,以确保数据在传输和存储过程中的安全性和完整性。以下是对实时加密机的详细阐述: 一、定义与功能 实时加密机是一种采用先进加密算…