![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android / Native
Omni-Space
专注Android, Mobile Security and AI
展开
-
在Android Native层中创建Java虚拟机实例
前言Android应用中JNI代码,是作为本地方法运行的。而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数。例如,你需要用虚拟机实例来创建jstring和其他的Java对象、查找类或成员变量等。大部分情况下,在你用JNI接口从Java层调用Native层中的代码时,你并不需要在native代码中自己初始化一个Dalvik虚拟机实例。但是,如果你在搞逆向或者写ex转载 2017-04-24 15:57:06 · 884 阅读 · 0 评论 -
如何调试Android Native Framework
半年前写了一篇文章,介绍 如何调试Android Framework,但是只提到了Framework中Java代码的调试办法,但实际上有很多代码都是用C++实现的;无奈当时并并没有趁手的native调试工具,无法做到像Java调试那样简单直观(gdb+eclipse/ida之流虽然可以但是不完美),于是就搁置下了。Android Studio 2.2版本带来了全新的对Android Nat转载 2017-08-27 15:30:03 · 631 阅读 · 0 评论 -
Android逆向之旅---Native层的Hook神器Cydia Substrate使用详解
一、前言在之前已经介绍过了Android中一款hook神器Xposed,那个框架使用非常简单,方法也就那几个,其实最主要的是我们如何找到一个想要hook的应用的那个突破点。需要逆向分析app即可。不了解Xposed框架的同学可以查看:Android中hook神器Xposed使用详解;关于hook使用以及原理不多解释了。今天我们再来看另外一个hook神器Cydia Substrate,关于这转载 2017-08-24 14:24:37 · 986 阅读 · 0 评论 -
JNI实现源码分析【三 间接引用表】
在JNI实现源码分析【二 数据结构】的参数传递一节中,我们提到,JNI为了安全性的考虑使用了形如jobject的结构来传递参数。而jobject被表述为指针,但又不是直接指向Object的指针那么jobject是如何和真正的Object建立联系呢?在JNI的API中,有一组API Global and Local References,这里的References又是什么?为啥会有这一组AP转载 2017-08-24 14:30:14 · 788 阅读 · 1 评论 -
JNI实现源码分析【四 函数调用】
有了前面的铺垫,终于可以说说虚拟机是如何调用JNI方法的了。JNI方法,对应Java中的native方法,所以我们跟踪对Native方法的处理即可。在彻底弄懂dalvik字节码【一】中,我们跟踪过非Native方法的调用,现在我们来跟踪Native方法的调用,从dvmCallMethodV入手吧:0x01:dvmCallMethodVvoid dvmCallMethodV(Thread转载 2017-08-24 14:31:53 · 642 阅读 · 0 评论 -
Android Linker学习笔记
原文地址: http://drops.wooyun.org/tips/121220x00 知识预备Linker是Android系统动态库so的加载器/链接器,要想轻松地理解Android linker的运行机制,我们需要先熟悉ELF的文件结构,再了解ELF文件的装入/启动,最后学习Linker的加载和启动原理。鉴于ELF文件结构网上有很多资料,这里就不做累述了。转载 2017-09-28 05:05:44 · 582 阅读 · 0 评论 -
ELF文件装载链接过程及hook原理
ELF文件格式解析可执行和可链接格式(Executable and Linkable Format,缩写为ELF),常被称为ELF格式,在计算机科学中,是一种用于执行档、目的档、共享库和核心转储的标准文件格式。ELF文件主要有四种类型:可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。可执行文件(Execut转载 2017-09-28 05:09:10 · 2610 阅读 · 0 评论 -
android linker 浅析
Android 的加载/链接器linker 主要用于实现共享库的加载与链接。它支持应用程序对库函数的隐式和显式调用。对于隐式调用,应用程序的编译与静态库大致相同,只是在静态链接的时候通过--dynamic-linker /system/bin/linker 指定动态链接器,(该信息将被存放在ELF文件的.interp节中,内核执行目标映像文件前将通过该信息加载并运行相应的解释器程序linker.)转载 2017-09-28 05:10:50 · 590 阅读 · 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 · 722 阅读 · 0 评论