`
frenchleaf
  • 浏览: 39749 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

被隐藏了的jni

阅读更多
public class HelloWorld {
   static {

       System.loadLibrary("Hello");
   }
   public     native void DisplayHello();
   public static void main(String[] args) {
       new HelloWorld().DisplayHello();
   }

}


javac HelloWorld.java
javah -jni HelloWorld
生成helloworld.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    DisplayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_DisplayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

根据.h生成的方法名写个cpp文件
HelloWorld.cpp
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_DisplayHello
(JNIEnv *env, jobject obj)
{
    printf("From jni_helloworldImpl.cpp :");
    printf("Hello world ! \n");
    return;
}

g++ -shared -I /usr/local/jdk/include/ -I /usr/local/jdk/include/linux/ -Wall -fPIC HelloWorld.cpp  -o libHello.so
java -Djava.library.path=. HelloWorld

注意一下要引入/usr/local/jdk/include/ 和/usr/local/jdk/include/linux/
还要加-Wall -fPIC
分享到:
评论

相关推荐

    ndk --- jni

    4. **安全增强**:本地代码可帮助隐藏敏感实现细节,增加逆向工程的难度。 **JNI的基本结构:** 1. **Java层**:定义了native方法,通过`JNIEXPORT`和` JNICALL`修饰的函数声明,以及`JNIEXPORT void JNICALL Java...

    Android_JNI_HIDL

    在Android的架构中,HAL是硬件抽象层,它的主要职责是为上层的system服务和应用程序提供标准化接口,隐藏底层硬件的复杂性。HAL通常由C/C++编写,以动态链接库的形式存在。HIDL则是定义HAL接口的语言,它是一种强...

    java运用jni调用dll实现屏蔽系统热键和任务栏

    Java使用JNI调用DLL来实现系统热键屏蔽与任务栏隐藏是一种跨平台编程技术的应用,主要涉及Java的本地接口(JNI)和Windows API。本文将深入解析这一技术的关键点,并提供相关的知识背景。 首先,JNI(Java Native ...

    JNI&FNDK; 开发指南 - v1.0

    2. 降低复杂性:FNDK隐藏了原生代码的细节,减少了维护和更新工作。 3. 支持多平台:由于FNDK是基于原生代码的,所以可以在iOS和Android上共享部分代码,降低跨平台开发的难度。 在这个“JNI&FNDK; 开发指南 - v1.0...

    jni获取Android设备MAC Address最完美解决方案

    需要注意的是,随着Android系统版本的更新,获取MAC地址的途径可能会受到更多限制,比如在某些设备上,`/sys/class/net/...`路径可能被隐藏或不可读。因此,实际应用中可能需要考虑使用其他方式,如Wi-Fi扫描结果的...

    android中AsyncTask和jni技术简单应用--附案例附代码

    它通过在后台线程执行任务,然后在UI线程更新结果,避免了主线程被阻塞,提高了用户体验。AsyncTask有三个泛型参数,分别是Params、Progress和Result,分别对应于执行任务的输入参数类型、进度类型和返回结果类型。...

    使用jnative隐藏显示windows的任务栏

    标题“使用jnative隐藏显示windows的任务栏”涉及的是在Java程序中通过JNI(Java Native Interface)技术调用本地操作系统API,以实现对Windows任务栏的控制。这篇博文可能讲解了如何利用jnative库来实现这一功能。...

    Android上层与驱动交互完整篇(APK->JNI->HAL->DRV)

    HAL是Android系统中一个关键的组件,它的主要任务是为上层框架提供统一的硬件访问接口,隐藏硬件的细节,实现硬件的标准化和模块化。HAL通常由C/C++编写,其接口被设计成供Java服务调用的形式,这样上层框架可以透明...

    JNI技术实践小结.doc

    ### JNI技术实践小结 #### 一、背景与概述 JNI (Java Native Interface) 是一种标准的机制,允许Java程序直接调用本地方法(Native Methods),这些本地方法通常是由C或C++编写的。JNI技术在Java环境中非常有用,...

    imgui-java:亲爱的ImGui的基于JNI的绑定

    基于JNI的绑定,没有依赖关系。 阅读官方和 ,了解如何与Dear ImGui一起使用。 C ++中的几乎所有内容都可以以相同的方式在Java中完成。 绑定使用库具有OpenGL渲染器和GLFW后端实现。 可以在模块中找到。 建议使用...

    调用第三方so库文件

    在Android开发中,有时我们需要利用C或C++编写的库来实现特定功能,这些库通常以.so文件的形式存在,被称为动态链接库。标题中的“调用第三方so库文件”涉及到了Android应用程序与本地代码(Native Code)的交互,...

    Base64编解码Android和ios的例子,补充JNI中的例子

    另外,Base64编码虽然能隐藏原始数据的一些特征,但并不是一种安全的加密方式,对于敏感数据,应当配合其他加密算法使用。 文件名“Base4Test”可能是指包含Base64编码测试用例的代码文件,可能包括Android和iOS的...

    Windows的代理DLL,可在JNI级别上转储JVM类-C/C++开发

    简介一些Java程序使用反射通过动态加载和执行类来隐藏其代码。 您可以从内存中转储它们,但是如果它们在执行后立即被卸载怎么办? 您可以编辑rt.jar并将钩子放在各种反射方法上。 但是,如果程序直接使用本机类加载...

    Android处理输入法隐藏后不再显示问题

    在Android开发过程中,有时会遇到一个常见的问题:输入法在被隐藏后无法再次显示。这个问题主要出现在用户与应用交互时,比如点击一个EditText输入框触发输入法弹出,然后通过程序逻辑或者用户操作隐藏了输入法,但...

    fork android 防清理(ndk 源码)

    6. **自定义JNI方法**:通过JNI方法,可以在本地代码中监控服务状态,一旦服务被停止,就立即触发重启逻辑。 7. **广播接收器**:设置一个监听系统广播的接收器,比如`ACTION_BOOT_COMPLETED`,在设备启动时自动...

    android隐藏api

    隐藏API则通常以系统内部类、方法和字段的形式存在,没有公开的Java接口,可能需要通过反射、JNI(Java Native Interface)或者其他非标准方式来调用。 1. **反射机制**:由于隐藏API不包含在公开的SDK中,开发者...

    隐藏代码(JarObfuscate)原理1

    壳程序通过反射找到并修改`ActivityThread`类的成员变量,如`mInitialApplication`和`mAllApplications`,以及`ContextImpl`和`LoadedApk`中的相关引用,使得隐藏代码的`Application`能够在适当的时间被创建和执行。...

    B172控制键盘的显示与隐藏通用函数

    总之,“B172控制键盘的显示与隐藏通用函数”是Delphi Android开发中一个实用的工具,它通过JNI调用Android系统服务,实现了对软键盘的灵活控制。开发者可以借助这个函数,提高代码的可读性和可维护性,同时减少重复...

    JniKeyCode

    在JniKeyCode中,JNI被用来处理对密钥的加密和解密操作,这些操作通常需要高性能和低级别的系统访问权限。 二、Java层工具源码 在Java层,源码通常包含接口定义,这些接口将被JNI层实现。这些接口可能包括生成密钥...

Global site tag (gtag.js) - Google Analytics