前言 Android应用中JNI代码,是作为本地方法运行的.而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数.例如,你需要用虚拟机实例来创建jstring和其他的Java对象.查找类或成员变量等.大部分情况下,在你用JNI接口从Java层调用Native层中的代码时,你并不需要在native代码中自己初始化一个Dalvik虚拟机实例.但是,如果你在搞逆向或者写exp,你总是需要钻研各种非常规的情况. 最近,我在逆向时需要在native代码中手动创建虚拟机实例用于在JN…
 *本文系作者工作学习总结,尚有不完善及理解不恰当之处,欢迎批评指正* 一.前言 在NuPlayer中,可以发现许多类似于下面的代码: //=======================================// NuPlayerDriver::NuPlayerDriver(pid_t pid) : ...... mLooper(new ALooper) ......{ mLooper->setName("NuPlayerDriver Looper"); mLooper…
1.简单介绍 本文解说在Android native层.root权限下.注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式. 文中的源代码所有来源于网络.我仅仅是略微加以整理. 环境:Android4.2 源代码下编译,模拟器中执行. 2.代码构成 包括三个模块的代码: 1.inject程序:把动态库libhookhelper注射到目标进程 2.libhookhelper:动态库代码.此部分代码用于改动目标进程中目标函数所在的got表的信息.从而替换掉目标函数. 理解这部分须要一…
Android内核sysfs中switch类使用实例 最终在这个周末,能够干点自己想要干的事了. 由我这个二流的内核驱动开发人员来解析一下sysfs中的switch类.先猜測一下来历,在普通的嵌入式Linux平台上.通常是各自为战,全然不须要遵循什么规则.在Android中Google定义了一些潜移默化的规范,你能够全然不遵守. 可是依照规则总归是好的. 先从直观的来看一下/sys/class/switch类中都有些什么吧. watermark/2/text/aHR0cDovL2Jsb2cuY3…
Android源码中很多关键代码都是C++实现的,java通过jni来调用,经常会看到java中这样的代码: static native Thread currentThread(); 如何根据方法名找到其对应的C++实现,有两个方法. 先来个java代码的示例VMThread.java: package java.lang; class VMThread { Thread thread; int vmData; VMThread(Thread t) { thread = t; } native…
作者:唐老师,华清远见嵌入式学院讲师. 创建Java域的对象就是创建Java类的实例,再调用Java类的构造方法. 以Bitmap的构建为例,Bitmap中并没有Java对象创建的代码及外部能访问的构造方法,所以它的实例化必然是在JNI的c中实现的. BitmapFactory.java中提供了得到Bitmap的方法,时序简化为: BitmapFactory.java ->BitmapFactory.cpp -> GraphicsJNI::createBitmap() [graphics.cp…
方法一.正常下载所需sdk包 启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口: 在『Android SDK Manager - Settings』窗口中,在「HTTP Proxy Server」和「HTTP Proxy Port」输入框内填入 mirrors.neusoft.edu.cn 和 80,并且选中「Force https://... sources t…
首先来看一下C/C++中怎么创建Java对象:在JNIEnv中有两种方法是用来创建Java对象的: 第一种方法: jobject  NewObject(jclass clazz  , jmethodID methodID, ....): 参数解释: clazz:这个很简单,就是需要创建的Java对象的Class对象 methodID:这个是传递一个方法的ID,想一想Java对象在创建的时候,需要执行什么方法呢?对,没错那就是构造方法 第三个参数:是构造函数需要传入的参数值(默认的构造方法是不需要…
Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许多第一和第三方映像,也可以根据需要创建自己的自定义映像. 本文详细介绍如何使用开源工具 Packer 在 Azure 中定义和生成自定义映像. 创建 Azure 资源组 生成过程中,Packer 将在生成源 VM 时创建临时 Azure 资源. 要捕获该源 VM 用作映像,必须定义资源组. Pack…
最近看书的过程中整理了一些面试题,面试题以及答案都在我的文章中有所提到,希望你能在以问题为导向的过程中掌握虚拟机的核心知识.面试毕竟是面试,核心知识我们还是要掌握的,加油~~~ 下面是按jvm虚拟机知识点分章节总结的一些jvm学习与面试相关的一些东西.一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域.虚拟机垃圾算法.虚拟垃圾收集器.JVM内存管理这些问题了.这些内容参考周的<深入理解Java虚拟机>中第二章和第三章就足够了对应下面的深入理解虚拟机之Java内存区域:和深入理…
Win10虚拟机创建方法方法 1 开始菜单->所有应用->Windows系统->控制面板,程序->启用或关闭Windows功能,勾选Hyper-V下所有选项 如果Hyper-V虚拟机监控程序是灰色的无法勾选,则需要先进入BIOS中,将Data Execution Prevention设置为Enabied 开始菜单->所有应用->Windows管理工具->Hyper-V管理器,菜单操作->新建->虚拟机,使用镜像文件即可创建一个虚拟机 如果启动过程出现以…
一.前言 在创建克隆虚拟机的时候,如果样板虚拟机没有事先配置好,则会导致网卡设备无法启动的问题(报错如下). Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization 二.解决方法 1.修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 •删除UUID这一行,因为每张网卡的mac地址是不一样的,所以UUID也是不一样的.…
紧接上篇,在Linux服务器已经完成对Oracle数据库软件的安装后,接下来要创建Oracle实例,看图说话: [su – oracle echo $DISPLAY export DISPLAY=10.122.109.78:0.0 dbca] 1.0.打开DBCA,选择创建数据库(默认即可). 2.0.选择高级模式 3.0.选择一般用途或事务处理(默认即可) 4.0.输入“全局数据库名”和“SID” SID是数据库实例的唯一标识符,创建系统服务和操作数据库时都需要用到.SID在同一数据库服务器中…
1.创建普通的android工程 2.创建一个module 3.module类型选择java library 4.填写libary和class的名字 5.生成的工程如图所示 6.然后点击Run --- Edit Configurations... 选择Application选项 设置所需要的参数 选中myjavalib后点击OK.然后打开刚创建的lib的gradle 编辑gradle文件 点击运行按钮 控制台输出结果: 参考资料:http://www.cnblogs.com/halfmanhua…
在android4.0中  画图的时候使用: canvas.clipPath(path, Region.Op.XOR); 报错 java.lang.UnsupportedOperationException 出现原因是4.0硬件加速出的问题,我们在配置文件里面加上 android:hardwareAccelerated="false"(sdk3.0以上,才能用) 在相应的activity里面加或者 application里面 <application android:hardwa…
1. HAL层 头文件:#include <utils/Log.h> 对应的级别 打印方法 VERBOSE LOGV()DEBUG LOGD()INFO LOGI()WARN LOGW()ERROR LOGE() 方法:LOGD("%d, %s", int, char* ) 2. JNI层 头文件:#include <utils/Log.h> 对应的级别 打印方法 VERBOSE LOGV()DEBUG LOGD()INFO LOGI()WARN LOGW()E…
本分步指南将通过 Azure Web 应用帮助您启动并运行示例 Java 应用程序.除 Java 外,Azure Web 应用还支持其他语言,如 PHP..NET.Node.JS.Python.Ruby 等,本教程重点介绍了 Java(其他语言将遵循同样的流程).在本教程中完成的所有操作均符合 1元试用条件. 开始之前 运行本示例之前,请在本地安装以下必备组件: 下载并安装 git Azure CLI 2.0 如果没有 Azure 订阅,可在开始前创建一个试用帐户. 步骤1:下载示例 1. 首先…
这个异常一般是由于JNI的链接器不能正常识别C++的函数名造成的.处理的方法是用exern "C" {},来包裹需要export的C++的native方法. 如果native的方法比较多,可以在头文件中定义宏: #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_com_sample_native_method1 (JNIEnv *, jobject, jobject); JNIEXP…
学习maven时参考的一些的博客地址:http://www.cnblogs.com/fnng/archive/2011/12/16/2290587.htmlhttp://sarin.iteye.com/blog/784275http://xiaoboss.iteye.com/blog/1560542http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html 配置jetty pluginhttp://www.…
如果你想在客户端添加一个web应用程序或者仅仅一个web页面,你可以通过使用WebView,WebView是基于android中View的扩展,能够在Activity的layout中实现显示网页,它不包含任何功能的充分开发的网页浏览器,比如导航控件或一个地址栏,所有的WebView,默认情况下,是显示一个Web页…