dex

Chapter 8 The Simplest Plug-in Solution

ε祈祈猫儿з 提交于 2021-02-17 04:04:56
This chapter introduces the simplest plug-in solution that are applicable to the four major components. This solution involves the following aspects: 1) Combine the dex of all plugins to solve the problem of loading plug-in's class. 2) Declare the four major components of the plugin in the host app’s AndroidManifest file. It’s a nuisance for hundreds of activities in the plug-in. 3) Merge all the resources in the plug-in into the host's resources in one time. Of course, this may result in conflict of resource ids. 8.1 Declaring Components in a Plug-in in Android Manifest As we mentioned

Chapter 7 Resources in Plug-In(1)

耗尽温柔 提交于 2021-02-17 03:47:22
Activity and resource are like twin brothers. And so if the activity need to be solve in Plug-In completely, you will have to face how to use the resource in it. In this chapter, we start with loading mechanism of the resource, and further discusses the Plug-In of resources through the addAssetPath method of AssetManager. Finally, we implement a skinning technique based on this solution. 7.1 How to load resources in Android 7.1.1 Kinds of resources The resource files in Android fall into two categories. One is under ‘res’ folder which can be compiled. During the compile process, ‘R.java’ file

android -------- java虚拟机和Dalvik虚拟机

牧云@^-^@ 提交于 2021-02-15 06:28:19
java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。 Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且 每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。 DVM虚拟机Dalvik Virtual Machine,是安卓中使用的虚拟机。全部安卓程序都运行在安卓系统进程里

作为Android开发,你必须要掌握的Android冷启动优化知识

。_饼干妹妹 提交于 2021-02-05 20:38:12
我们搞Android开发这一行,很多时候都在追求新技术,但是实际上,要想在Android领域有长远的发展,还有很多东西要去了解,虽然不是最前沿的,但却是最基础的最需要的。 今天要和大家分享的就是作为Android开发必须掌握的Android冷启动优化。 原文地址: https://www.jianshu.com/p/0d2a093a6d48 前言 事件发生在发包上线的前两天,在某某云进行移动测试时,提示冷启动速度低于平均值的问题,之前自己也曾尝试过优化,但是发现效果并不是很明显,作为一个有追求的开发者,趁着有点空闲时间,要好好研究一下冷启动优化问题。 App的启动流程 我们可以了解一下官方文档 《App startup time》 对App启动的描述。应用启动分为冷启动、热启动、温启动。而冷启动是应用程序从零开始,里面涉及到更复杂的知识。我们这次主要是对应用的冷启动进行分析和优化。 应用在冷启动的时候,需要执行下面三个任务: 加载和启动应用程序; App启动之后立即展示出一个空白的启动窗口; 创建App程序的进程; 在这三个任务执行后,系统创建了应用进程,那么应用进程会执行下一步: 创建App对象; 启动Main Thread; 创建启动页的Activity; 加载View; 布置屏幕; 进行初始绘制; 当应用进程完成初始绘制之后

Gradle进阶计划(二)Gradle Plugin原理分析

安稳与你 提交于 2021-02-02 10:39:37
通过 Gradle进阶计划(一)Gradle初探 的介绍,我们已经对Gradle有了初步的了解。这篇文章我们更深入研究一下 Gradle Plugin 的原理。 一、Gradle 和 Gradle Plugin 首先,我们需要先明确一个概念,就是 Gradle 和 Gradle Plugin 是不同的。 (一)Gradle 结合上一篇文章,官方已经对Gradle已经有了很详细的定义,这里在重点解释一下。 Gradle 是一个 构建 项目的工具,将它用来编译Android App , 能够简化你的编译、打包、测试过程。 它其实不仅仅是用在Android Studio上。如何去理解构建工具呢? 构建工具 就是对你的项目进行 编译、运行、签名、打包、依赖管理 等一系列功能的合集。例如 Eclipse 最初是用来做 Java 开发的,Google 为了能在 Eclipse 上进行Android 开发,开发了ADT 插件(Android Developer Tools),正是因为有了 ADT ,我们才可以在 Eclipse 上进行编译、运行、签名、打包等一系列流程。而这背后的工作都是 ADT 的功劳,ADT 就是我们的构建工具。一般来说,构建工具除了以上提到的编译、运行、签名、打包等,还具备依赖管理的功能。什么是依赖管理呢?例如我们以前在 Eclipse 上开发 Android 引用第三方库

Android逆向 | 基础知识篇

ぃ、小莉子 提交于 2021-01-21 03:54:19
想要学习逆向必须先熟悉APP编译的流程。 安卓加载流程 java 代码 -- > 加载布局文件 --> 资源文件 资料参考链接: https://juejin.im/entry/58b78d1b61ff4b006cd47e5b 新版官网示意图 编译器将您的源代码转换成 DEX(Dalvik Executable) 文件(其中包括运行在 Android 设备上的字节码),将所有其他内容转换成已编译资源。 APK 打包器将 DEX 文件和已编译资源合并成单个 APK。不过,必须先签署 APK,才能将应用安装并部署到 Android 设备上。 APK 打包器使用调试或发布密钥库签署您的 APK: 如果您构建的是调试版本的应用(即专用于测试和分析的应用),打包器会使用调试密钥库签署您的应用。Android Studio 自动使用调试密钥库配置新项目。 如果您构建的是打算向外发布的发布版本应用,打包器会使用发布密钥库签署您的应用。要创建发布密钥库,请阅读在 Android Studio 中签署您的应用 在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,减少其在设备上运行时的内存占用。 旧版官网示意图 安卓体系结构 通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样) 处理

某生鲜App 签名计算方法 脱个壳试试

試著忘記壹切 提交于 2021-01-18 05:41:27
一、目标 今天的目标是某生鲜App的签名 paramsMD5 ,抓个包先: TIP: 新鲜热乎的 1.4.5 二、步骤 老规矩,上jadx 纳尼...... 这个 qihoo 很眼熟,在Windows平台下是老熟人了,没想到现在混移动端了,它又冒出来了。 怎么办?手脱是万万不行的,这辈子都不想手脱,还好我们有葫芦娃 https://github.com/hluwa/FRIDA-DEXDump 默念一声"我想脱个壳"。 启动 APP。 启动 frida-server。 python main.py。 默数三秒,脱好了。 一堆Dex怎么找 脱完的Apk在哪里? 兄弟,你太Native了,脱完就是Apk的那不是葫芦娃,那是金刚葫芦娃。 面对这一堆Dex,咱们该怎么入手? 直接搜Dex文件? 这是相当不靠谱的,Dex是中间文件,不是源码。 用jadx一个一个打开去找? 有毅力,先把文件排个序,然后从大到小去一个一个用jadx打开。 还是jadx,不过这次是批量反编译 import os, sys # python3.7 merge_dex.py ./file/ livedex if __name__ == "__main__": if len(sys.argv) < 3 : print("start error") sys.exit() print(sys.argv[1], sys

又一开源项目爆火于GitHub,Android高级插件化强化实战

只愿长相守 提交于 2021-01-11 14:23:30
前言 相信大家都知道安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。 掌握好插件技术,需要如下的安卓基础和相关知识,例如: Android应用程序安装,加载过程 Android应用运行机制,生命周期调用原理 Android应用资源编译打包原理 Android应用读取资源原理 Android系统AMS、PMS、NMS等系统服务的运作原理 增量更新 HOOK等技术 本文将从基础的插件化原理到Android插件化初探再到大厂架构演化实战应用,总结出了较为全面与完整的安卓插件技术与插件化对 Android开发的重要性。 插件化原理 1.类加载 2.双亲委托机制 3.资源加载 4.四大组件支持 5 ProxyActivity代理 6 hook方式 7 其他组件 8 Android动态加载框架DL的架构与基本原理解析 9 Android 插件化框架 DynamicLoadApk 源码分析 Android插件化初探 1.从零开始实现一个插件化框架(1) 概念 插件化解决的问题 各插件化框架对比 插件化实现

安卓基础学习 Day01 |第一个安卓应用程序:Hello Word!

旧时模样 提交于 2021-01-10 10:01:11
目录 写在前面的话 一、安卓基础知识 (一)Android 是什么 (二)Android与IOS操作系统区别 (二)Android整体结构 二、安卓应用程序-Hello Word! (一)创建Android应用程序 (二)Android项目结构 (三)使用Android模拟器 (四)运行Android应用 三、扩展知识 写在前面的话 1、内容参考自B站相关安卓学习视频以及网络知识。 2、由于之前是边做练习项目边学习的部分知识点,所以知识不牢固也不太全面,因此从头开始,再次学习。 3、内容如有不对,望指出。 一、安卓基础知识 (一)Android 是什么 Android是一种基于Linux的开源的操作系统。 主要用于智能设备,如智能手机、平板电脑和智能电视等。 由Google公司领头开发并推广,2008年推出第一个版本。 此系统最初由“安卓之父”Andy Rubin(安迪-鲁宾)开发(2003年)。 (二)Android与IOS操作系统区别 最大的区别就是:前者是开源操作系统,后者是封闭操作系统(也就是只由苹果公司享有)。 (二)Android整体结构 简单了解了Android的架构: 从上往下分别为: 应用层、应用框架层、函数库层和Android运行时环境、Linux驱动层 这四层架构。执行顺序是从上往下调的。 应用层:相当于我们手机上的各种应用app的图标。 应用框架层

Android 反编译初探 应用是如何被注入广告的

吃可爱长大的小学妹 提交于 2020-12-29 14:02:36
恩,周末在家感冒卧床打了两天dota 尴了个尬 1 概述 最近和朋友聊天,发现一些灰色产业链通过批量反编译市场上的apk,然后进行注入广告,再重新打包上渠道。 我想大家都不希望自己家的产品或者自己的app那么容易被“占据”,但是想要自身能够防御,首先要知道对方的手段。所以本篇博客的目的不是教大家如何破解别人的app,而是让大家提升安全防御意识,对我们的应用做一些必要的防护,让自己的app不会那么容易被“占领”。 因为是初探,也不需要掌握太多的技术,主要是各种工具的使用了~~ 2 工具 几个重要的工具,注意使用最新版本。 https://ibotpeaches.github.io/Apktool/ http://jd.benow.ca/ https://sourceforge.net/projects/dex2jar/ 相信就是为了学习,大家或多或少都使用过上述几个工具了: apktools主要用户反编译和打包; JD-GUI 主要用于对.class文件展示为源码(比如jar文件) dex2jar 主要用于将dex文件转化为jar文件 如果没有的话,自行下载,尽可能的下载最新版本。 题目是注入广告,那么我们选择一类广告注入,大多数app都有闪屏广告,那么我们就模拟:反编译一个apk,加入我们的闪屏广告页,然后重新打包。 3 步骤 首先需要准备一个apk,我们随便写一个简单的demo。