jni
  • 2024-09-243. 初窥全貌 - main方法执行全流程
    0.前言一个类被编译为classfile之后,使用java命令去执行,暂时抛开OS层面的syscall 及glibc的入口函数,java中的main方法执行,经历了什么样的过程?要执行main方法,必须要有vm支持,那vm又是如何去构建的?本章我们把握整体流程,建立一个初步认识。1.整体流程1.main()  ma
  • 2024-09-23jni安全利用的简单学习
    首先定义一个最简单的类publicclassEvilClass{publicstaticnativeStringexecCmd(Stringcmd);}因为我是MacOs端,在当前目录执行javacEvilClass.javajavac-h.EvilClass.java生成EvilClass.h文件/*DONOTEDITTHISFILE-itismachinegenerated*/#i
  • 2024-09-19Java JNA、JNI、ProcessBuilder、Runtime.getRuntime.exec()详解
     Java提供了几种方式与非Java代码进行交互(比如调用本地库或执行外部程序),其中包括JNA、JNI、ProcessBuilder和Runtime.getRuntime().exec()。下面是对每种方式的详细解释。1.JNA(JavaNativeAccess)简介JNA是Java与本地代码进行交互的一种高层次API,它允许Java程序调
  • 2024-09-18Java JNA、JNI、ProcessBuilder、Runtime.getRuntime.exec()详解
    Java提供了几种方式与非Java代码进行交互(比如调用本地库或执行外部程序),其中包括JNA、JNI、ProcessBuilder和Runtime.getRuntime().exec()。下面是对每种方式的详细解释。1.JNA(JavaNativeAccess)简介JNA是Java与本地代码进行交互的一种高层次API,它允许Java
  • 2024-09-16java读取寄存器数据
    在Java中直接读取硬件寄存器(如CPU寄存器、I/O端口等)通常不是一个直接的任务,因为Java设计之初就是为了跨平台的安全性和易用性,它并不直接提供访问底层硬件的API。不过,在嵌入式系统、工业控制或需要直接与硬件交互的特定场景中,可能会使用JNI(JavaNativeInterface)或JNA(JavaNativeAc
  • 2024-09-13NDK开发
    NDKNDK在Android开发中,NDK是一组用于开发C和C++代码的工具集合。它允许开发者使用C/C++编写底层代码,并与Java代码相结合。NDK的文件配置如需为您的应用编译和调试原生代码,您需要以下组件:Android原生开发套件(NDK):这是一套可让您在Android应用中使用C和C++代码的工具
  • 2024-09-06android利用jni读取assets文件夹下的文件
    一、概述在jni的开发中,有时候会在c/c++层读取assets文件夹下的图片。有两种方式可以选择:方式一:在java/kotlin层把文件读取出来,然后以字符串的形式传递给jni层。方式二:java/kotlin层传递一个文件名,jni利用AAssetManager读取文件内容目前介绍的是第二种方
  • 2024-09-06android从java/kotlin层传递bitmap给jni并使用其像素
    一、概述在做jni开发的时候,有些情况下会直接通过java/kotlin层传递bitmap给jni,并取出其数据进行利用。例如:OpenGLES绘制纹理、保存像素图片等。二、代码示例1.在cmake中引入可以操作jni层BitmapInfo的libjnigraphics-landroid2.导入头文件#in
  • 2024-09-05Android之JNI开发
    JNIJNI是JavaNativeInterface的缩写,俗称Java本地接口,是Java语言提供的用于Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以通过JNI调用Java代码。那什么场景下可能会用到JNI呢?1、需要提升性能时,比如说做一些底层的开发,例如音视频处理之类
  • 2024-09-03JNI -cmake sample
    CMakeLists.txtcmake_minimum_required(VERSION3.16)set(CMAKE_CXX_STANDARD11)project(test)set(SRCsrc/HelloWorld.cpp)#配置cpp源文件到SRC变量中set(EXECUTABLE_OUTPUT_PATH./build)#配置输出目录set(JAVA_HOME$ENV{JAVA_HOME})#获取系统环境变量中的
  • 2024-08-31【大数据】Java与Python的无缝对接:探讨Java调用Python的方法与原理
    文章目录一、引言二、Java调用Python的原理1.JNI(JavaNativeInterface)2.Jython3.进程间通信三、Java调用Python的实现方法及示例1.使用JNI调用Python2.使用Jython调用Python3.使用进程间通信调用Python4.性能和安全性考虑5.实际应用场景6.最佳实践四、总结一、
  • 2024-08-27JNI DEMO
       make.shjavac-h.HelloJNI.javag++-I"$JAVA_HOME/include"-I"$JAVA_HOME/include/dawin"-shared-olibhelloJNI.dylibHelloJNI.cppjavacHelloJNI.javajavaHelloJNI HelloJNI.javapublicclassHelloJNI{privatenative
  • 2024-08-02让C++通过JNI来callback回调kotlin侧代码
    kotlin一次通过jni调用C++侧,然后C++侧多次回传数据让C++通过JNI来callback回调kotlin侧代码1.定义Kotlin接口在Kotlin中定义一个用于接收C++回调的接口:interfaceDataCallback{funonDataReceived(data:String)}2.定义C++侧的JNI方法在C++侧,实现接收指令和
  • 2024-07-28jin版本
    VersionInformationGetVersionjintGetVersion(JNIEnv*env);Returnstheversionofthenativemethodinterface.ForJavaSEPlatform21andlater,itreturnsJNI_VERSION_21.ThefollowingtablegivestheversionofJNIincludedineachreleaseoftheJav
  • 2024-07-26创建 Java 虚拟机JVM中的参数说明
    1、上一篇创建虚拟机的代码加参数备注varOptions:array[0..4]ofJavaVMOption;VM_args:JavaVMInitArgs;ErrCode:Integer;begin{创建Java虚拟机}FJavaVM:=TJavaVM.Create(JNI_VERSION_1_8);//这个选项设置Java类路径,指定JVM应该在哪里
  • 2024-07-26delphi android发送与接收广播
    在Delphi中,可以使用TLocalBroadcastManager类来发送和接收广播。以下是一个示例:发送广播:```delphiuses Androidapi.JNI.GraphicsContentViewText,Androidapi.Helpers,Androidapi.JNI.JavaTypes,Androidapi.JNI.LocalBroadcastManager;procedureSendBroadcast(constAAction:
  • 2024-07-17JNI和HAL 的区别
    JNI(JavaNativeInterface)和HAL(HardwareAbstractionLayer)在Android系统中都扮演着与本地代码交互的重要角色,但它们的功能和应用场景有所不同。以下是它们之间的关系和区别:JNI(JavaNativeInterface)用途:JNI是一种框架,允许Java代码调用本地(Native)C/C++代
  • 2024-07-15Java JNI 学习笔记
    JavaJNI学习笔记JNI(JavaNativeInterface)是Java提供的一种接口,使得java代码可以与其他语言(如C和C++)编写的代码进行交互。具体来说,JNI允许你在Java中调用本地(Native)代码,或者从本地代码调用Java方法。基本概念jni.h:这是JNI的头文件,使用javac生成,定义了JNI
  • 2024-06-08vscode编译c/c++找不到jni.h文件
    解决办法:一、下载JDK访问Oracle官网的Java下载页面:JavaDownloads|Oracle选择适合您操作系统的JDK版本:对于Windows,选择“Windowsx64”或“Windowsx86”(取决于您的系统是64位还是32位)。对于Linux,选择适合您Linux发行版的压缩包。对于Mac,选择“.dmg”或“.pkg”安装
  • 2024-05-28Android NDK使用指南(基础篇)
    引言在Android开发中,大多数应用程序都是用Java或Kotlin编写的。然而,有时候我们需要使用C或C++代码来提高性能,或者为了与现有的C/C++库集成。AndroidNDK就是为此目的而设计的工具包。本文将介绍AndroidNDK的相关基本概念和基础使用方法,帮助读者初步理解NDK。
  • 2024-05-23Android JNI/NDK环境的配置与Demo编译
    一、背景​JNI(JavaNativeInterface)和NDK(NativeDevelopmentKit)在Android开发中扮演着重要的角色。JNI,即Java本地接口,是Java平台的一部分,它允许Java代码与其他语言写的代码进行交互。通过JNI,Java代码可以调用本地应用程序或库中的代码,也可以被本地代码调用。这主要使得
  • 2024-03-22JNI 基础教学
    /*常用引用数据类型对比*Allobjectjobject*java.lang.Classjclass*java.lang.Stringstring*int[]jintArray*Object[]jobjectArray**JNI函数签名信息*java支持函数重载,因此仅仅根据
  • 2024-03-20Android JNI学习-使用第三方SO库
    https://david1840.github.io/2018/12/03/Android-JNI学习-使用第三方SO库/CMakeList.txt在CMake中将LibTest.so导入工程cmake_minimum_required(VERSION3.4.1)add_library(#Setsthenameofthelibrary.UseSo#Setsthelibraryasasha
  • 2024-02-05【APP逆向14】JNI开发简介之二
    简介:上一篇我们讲到了java调用C,今天继续聊C调用java1.C调用java的静态方法1.1:入口,java调用C的代码packagecom.nb.s4;classEncryptUtils{static{System.loadLibrary("enc");}publicstaticnativeStringv8();}1.2:C语言实现,调
  • 2024-02-05【APP逆向13】JNI开发简介之一
    简介:在一些不一般的APP中,核心算法不是直接写在java代码中,如果直接写在java中,逆向人员只需要简单的反编译就能找到;如是就出现了JNI:javanativeinterface,Java本地开发接口,实现JAVA和C语言之间的相互调用。将核心算法写在C语言中。1.正向开发流程1.1:新建一个java类,实现核心