
Android / JNI
文章平均质量分 95
Omni-Space
专注Android, Mobile Security and AI
展开
-
Android JNI原理分析
引言:分析Android源码6.0的过程,一定离不开Java与C/C++代码直接的来回跳转,那么就很有必要掌握JNI,这是链接Java层和Native层的桥梁,本文涉及相关源码:frameworks/base/core/jni/AndroidRuntime.cpplibcore/luni/src/main/java/java/lang/System.javalibcore/lun转载 2016-06-28 09:02:41 · 1274 阅读 · 0 评论 -
Calling JNI Functions with Java Object Arguments from the Command Line
When analyzing malware or penetration testing an app which uses a native library, it’s helpful to isolate and execute the library’s functions. This opens the door for debugging and using the malware转载 2017-09-22 13:41:52 · 598 阅读 · 0 评论 -
Creating a Java VM from Android Native Code
If you’re writing native / JNI code for Android, it’s probably as native method of an Android app. These methods are always passed the Dalvik VM instance of the app as the first parameter. You need th转载 2017-09-22 13:39:46 · 791 阅读 · 0 评论 -
JNI实现源码分析【四 函数调用】
有了前面的铺垫,终于可以说说虚拟机是如何调用JNI方法的了。JNI方法,对应Java中的native方法,所以我们跟踪对Native方法的处理即可。在彻底弄懂dalvik字节码【一】中,我们跟踪过非Native方法的调用,现在我们来跟踪Native方法的调用,从dvmCallMethodV入手吧:0x01:dvmCallMethodVvoid dvmCallMethodV(Thread转载 2017-08-24 14:31:53 · 680 阅读 · 0 评论 -
JNI实现源码分析【三 间接引用表】
在JNI实现源码分析【二 数据结构】的参数传递一节中,我们提到,JNI为了安全性的考虑使用了形如jobject的结构来传递参数。而jobject被表述为指针,但又不是直接指向Object的指针那么jobject是如何和真正的Object建立联系呢?在JNI的API中,有一组API Global and Local References,这里的References又是什么?为啥会有这一组AP转载 2017-08-24 14:30:14 · 832 阅读 · 1 评论 -
JNI实现源码分析【二 数据结构】
正文在展开深入讨论之前,先说一下Dalvik中和JNI相关的数据结构,是很有必要的。在Object.h中定义了很多的数据结构:0x01: 虚拟机中的对象我们知道,Java是面向对象的,Java是运行在虚拟机里面的,即先通过编译成字节码(dalvik对应dex),虚拟机解析字节码,构造出逻辑上相同的对象。 及虚拟机中的对象。 a. struct Object 根对象,就像我转载 2017-08-24 14:27:56 · 544 阅读 · 0 评论 -
在Android Native层中创建Java虚拟机实例
前言Android应用中JNI代码,是作为本地方法运行的。而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数。例如,你需要用虚拟机实例来创建jstring和其他的Java对象、查找类或成员变量等。大部分情况下,在你用JNI接口从Java层调用Native层中的代码时,你并不需要在native代码中自己初始化一个Dalvik虚拟机实例。但是,如果你在搞逆向或者写ex转载 2017-04-24 15:57:06 · 926 阅读 · 0 评论 -
How to call a android/native service from a native/android (java) code
This blogs collects some stuff found online regarding:Native (c/c++) ---- call ----> android (java) serviceAndroid (java) ---- call ----> Native (c/c++) serviceHow to connect to a binder原创 2016-09-26 16:39:04 · 920 阅读 · 0 评论 -
Android framwork service添加(manager 远程调service,service jni调native code)
在平常android应用开发中,多数只是调framwork中的API进行application layer的coding,而在系统开发中可能会自己添加系统服务;系统服务如任何添加,服务如何调native code,以及service如何被manager调用...这里我给出一个结果验证的demo。1、实现编写native code,framwork/base/services/jni/c转载 2016-09-24 08:52:41 · 731 阅读 · 0 评论 -
android源码分析之JNI调用与回调
通过JNI,Java程序可以在加载本地库之后,调用Java类中声明的在本地库中实现的本地方法。此外,本地库中的函数也可以通过回调的方式调用Java类中的成员变量或者成员函数。 1、在Java中,本地库的加载以及本地方法的声明 public class Natvie{ //本地方法声明转载 2016-09-17 04:39:25 · 484 阅读 · 0 评论 -
Android 在 NDK 层使用 OpenSSL 进行 RSA 加密
前言需求:需要在NDK层对一个Java层的字符串进行RSA加密,然后对加密的结果进行Base64返回到Java层方案:选择使用OpenSSL来实现。编译libssl.a和libcrypto.a静态库在github上找到了一个项目,可以直接将OpenSSL编译成Android可以使用的,项目地址为openssl_for_ios_and_android但是这个项目有点小问题,部分编译脚本需要做点改动,...转载 2018-04-02 14:10:48 · 2490 阅读 · 1 评论