当你拿到Android手机的卡刷包/线刷包,你有没有想过解开它?当你眼前摆着一个APK/jar/so,你有没有想过反编译/反汇编/动态调试然后分析研究它?…… 刷机包 sparse img -> …
(原创)在JNI(Native)层调用Android的Log系统
最近在用Android Studio写JNI程序,发现在写Native层C++代码时貌似没有特别好的打印Log的方法,所以就有了这一篇,这一篇主要是通过查找、记录Android层面的Log方法,然…
(译文) JNI编程指南与规范 第十一章 JNI设计概述
第十一章 JNI设计概述 本章给出了JNI设计的概述,必要时,我们也提供底层技术的动机。设计概述作为关键JNI概念(如JNIEnv接口指针,本地和全局引用以及字段和方法ID)的规范。技术动机旨在帮助读者了解各种设计的权衡…
(译文) JNI编程指南与规范 第十章 陷阱与缺陷
第十章 陷阱与缺陷 为了突显前面几章中介绍的重要技术,本章涵盖了JNI程序员长犯的一些错误。这里描述的每个错误都发生在现实世界的项目中。 10.1 错误检查 编写本地方法最常见的错误是忘记检查是否发生了错误情况。与Jav…
(译文) JNI编程指南与规范 第九章 利用现有的本地库
第九章 利用现有的本地库 JNI的一个应用就是利用已存在的本地库中现有的代码来编写本地方法。本章介绍的一个典型方法是生成一个封装了一系列本地方法的类库。 本章首先介绍编写包装类最直接的方法R…
(译文) JNI编程指南与规范 第八章 附加的JNI特性
第八章 附加的JNI特性 我们已经讨论过用于编写本地代码的和在本地程序中嵌入一个Java虚拟机实现的JNI特性。这一章我们将介绍剩余的JNI特性。 8.1 JNI和线程 Java虚拟机支持在同一地址空间中同时执行的多个控…
(原创) JNI编程指南与规范 第七章 刻意练习
第七章之刻意练习 练习1: 学会在C代码中创建虚拟机,复习类、方法ID的查找 在native侧,使用random函数生成一个包含1000个整型的数组,然后在native侧调用Java编程语言中的Arrays.sort(i…
(译文) JNI编程指南与规范 第七章 调用接口
第七章:调用接口 这一章用于说明在你的本地代码中如何嵌入一个Java虚拟机。Java虚拟机实现通过作为一个本地库来传输,本地应用程序可以连接此库并使用调用接口来加载Java虚拟机。的确,在JDK或Java 2 SDK版本…
(原创) JNI编程指南与规范 第六章 刻意练习
第六章之刻意练习 经过第六章的学习,基本了解JNI的异常处理了,现在我们来刻意练习一下 practice 1, 在native层获取Java异常并将异常抛出给Java层 我们需要在native方法…
(译文) JNI编程指南与规范 第六章 异常
第六章 异常 我们已经遇到大量在本地代码中需要检查执行JNI方法后可能产生的错误。这一章将介绍本地代码如何从这些错误状况中检测和修复。 我们将会重点关注作为JNI函数调用的…