当前位置: 首页 > article >正文

FRIDA-JSAPI:Java使用

Frida

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

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.kler.cn/a/311835.html

相关文章:

  • Spring框架之适配器模式 (Adapter Pattern)
  • 【智谱开放平台-注册/登录安全分析报告】
  • EDUCODER头哥 基于MVC模式的用户登录
  • Lodash的常用方法整理
  • Leetcode 找出字符串中第一个匹配项的下标
  • 深入理解Java虚拟机:你真的了解JVM吗?
  • leetcode:字符串中的第一个唯一字符
  • YOLOv10轻量化快速涨点之改进AKConv
  • Linux:vim编辑技巧
  • 【STL】priority_queue 基础,应用与操作
  • C++ 头文件 .h和.hpp的介绍与区别
  • 深度学习常见面试题及答案(11~15)
  • [Linux]自定义shell详解
  • HTML/CSS/JS学习笔记 Day4(CSS--C1 选择器声明)
  • .dav视频文件及格式转换
  • HashMap高频面试知识点
  • 【Ubuntu】ubuntu如何使用ufw(Uncomplicated Firewall)管理防火墙?一文带你学会!
  • Ubuntu-24.04中Docker-Desktop无法启动
  • 怎么操作使http变成https访问?
  • 力扣 中等 2300.咒语和药水的成功对数
  • OpenAI最新发布的o1-preview模型,和GPT-4o到底哪个更强?
  • 驱动---动态模块编译
  • win11开始按钮点不开(已解答)
  • sql中拼接操作
  • 从“治理”到“智理”,看大模型如何赋能智慧政务
  • Linux 信号的产生