
Android 动态加载
Omni-Space
专注Android, Mobile Security and AI
展开
-
APK动态加载框架(DL)解析
目录(?)[+]转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/39937639 (来自singwhatiwanna的csdn博客)前言好久没有发布新的文章,这次打算发表一下我这几个月的一个核心研究成果:APK动态加载框架(DL)。这段时间我致力于github的开源贡献,开源了2个比较有用且有意义的项目,一转载 2016-03-13 15:30:50 · 1402 阅读 · 0 评论 -
热修复框架AndFix【源码阅读】
前言AndFix是阿里巴巴开源的Android热修复框架。其基本原理是利用JNI来实现方法的替换,以实现Android APP的热修复,即无需发版即可临时修复在线BUG。热修复技术有很多种,AndFix采取的native方法替换方案,优点是即时生效,无性能损耗,缺点是只能修改方法,且兼容性可能有问题。虽然其原理比较简单,但要深入理解,还需要对JNI,以及dalvik和Art转载 2017-05-29 15:55:08 · 617 阅读 · 0 评论 -
JVM源码阅读-Dalvik类的加载
前言本文主要研究Android dalvik虚拟机加载类的流程和机制。目的是了解Android中DEX文件结构,虚拟机如何从DEX文件中加载一个Java Class,以及到最终如何初始化这个类直至可被正常使用。[Java]类的加载在Java的世界里,所有类的加载,都由 java.lang.ClassLoader 来负责。ClassLoader是一个抽象类,它有多个实现类,转载 2017-05-29 15:57:11 · 1067 阅读 · 0 评论 -
Android 插件技术实战总结
前言安卓应用开发的大量难题,其实最后都需要插件技术去解决。现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。本文的目的是从一个典型的复杂项目中总结出较为全转载 2017-05-19 14:19:13 · 727 阅读 · 0 评论 -
Android 插件化原理解析——插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中;转载 2017-06-16 06:44:51 · 769 阅读 · 0 评论 -
android linker 浅析
Android 的加载/链接器linker 主要用于实现共享库的加载与链接。它支持应用程序对库函数的隐式和显式调用。对于隐式调用,应用程序的编译与静态库大致相同,只是在静态链接的时候通过--dynamic-linker /system/bin/linker 指定动态链接器,(该信息将被存放在ELF文件的.interp节中,内核执行目标映像文件前将通过该信息加载并运行相应的解释器程序linker.)转载 2017-09-28 05:10:50 · 663 阅读 · 0 评论 -
[Android]用架构师角度看插件化(3)-Replugin 需要占坑跳转?
一.占坑什么是占坑?为什么要占坑?Android插件化中,从一个插件Activity跳转到不同插件的Activity的时候,是否可以能正常跳转成功?声明Activity需要配置什么?声明Activity是需要AndroidManifest中声明,但是插件是依赖于宿主的,插件声明了Activity,但是插件的AndroidManifest信息,是无法动态配置到宿主里面的。那AndroidManife...转载 2018-04-08 12:44:39 · 686 阅读 · 0 评论 -
《Android插件化技术——原理篇》
| 导语 插件化技术最早从2012年诞生至今,已经走过了5个年头。从最初只支持Activity的动态加载发展到可以完全模拟app运行时的沙箱系统,各种开源项目层出不穷,在此挑选了几个代表性的框架,总结其中的技术原理。由于本人水平有限,插件化框架又相当复杂,文中若有错误或者不准确的地方望高手指点。内容概要一、发展历史插件化技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件...转载 2018-04-01 16:04:43 · 1949 阅读 · 1 评论 -
Android免Root环境下Hook框架Legend原理分析
0x1 应用场景现如今,免Root环境下的逆向分析已经成为一种潮流!在2015年之前的iOS软件逆向工程领域,要想对iOS平台上的软件进行逆向工程分析,越狱iOS设备与安装Cydia是必须的!几乎绝大多数的逆向相关的动态调试工具、Hook注入框架都依赖于获取IOS设备的最高访问权限,就技术本身上而言,对当前程序进行Hook与动态调试,只需要拥有与当前程序相同的权限即可,理论上无需对设备进行Root...转载 2018-04-01 16:06:09 · 2642 阅读 · 1 评论 -
Android友盟增量更新
1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包。比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M。我们发现两个版本只有0.1M的差异,这样我们如果采用增量升级生成0.1M左右的差异包,这样用户只需要下载0.1M的差异包进行升级而不需要重新下载7.3M的新版本了。2.以往增量升级的实现 首先要有服务端来生成差异包,这一步使用bsd...转载 2018-04-07 11:30:54 · 457 阅读 · 0 评论 -
浅析Android插件化
前言Android P preview版本中,已限制对@hide api的反射调用,具体的原理可以阅读Android P调用隐藏API限制原理这篇文章。由于最近团队分享也在分享插件化、热修复相关的东西。因此,写一篇文章,好好记录一下。准备知识反射、动态代理Android中的几个相关的ClassLoader,注意PathClassLoader在ART虚拟机上是可以加载未安装的APK的,Dalvik虚...转载 2018-04-07 13:16:48 · 483 阅读 · 0 评论 -
Xposed简介以及小米去桌面广告的简单实现
提起Xposed,大多数Android开发者都听过或者用过,甚至有一些开发过比较炫酷的模块。这是我前段时间在公司的分享内容,分享给大家。#最先发表于个人博客 https://guolei1130.github.io/Xposed简介Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。项目地址:htt...转载 2018-04-07 13:20:00 · 830 阅读 · 0 评论 -
JVM源码阅读-本地库加载流程和原理
前言本文主要研究OpenJDK中JVM源码中涉及到native本地库的加载流程和原理的部分。主要目的是为了了解本地库是如何被加载到虚拟机,以及是如何找到并执行本地库里的本地方法,以及JNI的 JNI_OnLoad 和 JNI_OnUnLoad是何时被调用的 。1.载入本地库使用JNI的第一步,往往是在Java代码里面加载本地库的so文件,例如:转载 2017-05-29 15:53:55 · 2859 阅读 · 0 评论 -
AndroidLinker与SO加壳技术之下篇
2.4 链接链接过程由 soinfo_link_image 函数完成,主要可以分为四个主要步骤:1. 定位 dynamic section,由函数 phdr_table_get_dynamic_section 完成,该函数会遍历 program header,找到为类型为 PT_DYNAMIC 的 header, 从中获取的是 dynamic section 的信息,主要就是虚转载 2017-01-19 03:04:58 · 962 阅读 · 0 评论 -
基于Proxy思想的Android插件框架
本文所有代码托管在Github:android-plugin意义研究插件框架的意义在于以下几点:减小安装包的体积,通过网络选择性地进行插件下发模块化升级,减小网络流量静默升级,用户无感知情况下进行升级解决低版本机型方法数超限导致无法安装的问题代码解耦现状Android中关于插件框架的技术已经有过不少讨论和实现,插件通常打包成apk或者dex的形式。dex形式的插件往往提转载 2016-03-13 15:32:44 · 544 阅读 · 0 评论 -
Android apk动态加载机制的研究
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/22597587 (来自singwhatiwanna的csdn博客)背景问题是这样的:我们知道,apk必须安装才能运行,如果不安装要是也能运行该多好啊,事实上,这不是完全不可能的,尽管它比较难实现。在理论层面上,我们可以通过一个宿主程序来运行一些未安装的apk,当然,实践转载 2016-03-14 01:51:44 · 434 阅读 · 0 评论 -
Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客)前言为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和a转载 2016-03-14 01:55:38 · 968 阅读 · 0 评论 -
Android源码分析-资源加载机制
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客)前言我们知道,在activity内部访问资源(字符串,图片等)是很简单的,只要getResources然后就可以得到Resources对象,有了Resources对象就可以访问各种资源了,这很简单,不转载 2016-03-14 01:57:38 · 495 阅读 · 0 评论 -
APK加壳【2】内存加载dex实现详解
来源本文要实验的方案同样来源于CSDN大牛Jack_Jia的一篇翻译博文:Android4.0内存Dex数据动态加载技术原文的地址是 http://2013.hackitoergosum.org/presentations/Day1-05.Nifty%20stuff%20that%20you%20can%20still%20do%20with%20Android%20by%转载 2016-03-14 04:09:04 · 1764 阅读 · 0 评论 -
APK加壳【3】通用内存加载dex方案分析
来源Andorid APK反逆向解决方案:梆梆加固原理探寻CSDN 作者Jack_Jia该篇博文中的:“3. 如何使DexClassLoader加载加密的dex文件? ”这部分。方案上一篇实现的内存加载dex方案,具有Android系统版本的局限性。为了克服这个问题,在不断的百度、google下,找到了本文的来源博文,该文章是分析梆梆加固的,作为一个以APK安全为业转载 2016-03-14 04:10:47 · 1548 阅读 · 0 评论 -
插件框架实现思路及原理
插件框架实现思路及原理一、技术可行性a) apk的安装处理流程i. apk会copy到/data/app;ii. 解压apk中的class.dex,并对其进行优化,获得odex(即JIT)。最后保存到/data/dalvik_cache;iii. 还有一些权限和包信息,会缓存到/data/system中的packages.list和packages.xml中。b)转载 2016-03-14 07:39:23 · 1640 阅读 · 0 评论 -
Android类动态加载技术
Android应用开发在一般情况下,常规的开发方式和代码架构就能满足我们的普通需求。但是有些特殊问题,常常引发我们进一步的沉思。我们从沉思中产生顿悟,从而产生新的技术形式。如何开发一个可以自定义控件的Android应用?就像eclipse一样,可以动态加载插件;如何让Android应用执行服务器上的不可预知的代码?如何对Android应用加密,而只在执行时自解密,从而防止被破解?……熟悉J转载 2016-04-15 06:28:20 · 541 阅读 · 0 评论 -
Android动态加载技术三个关键问题详解
本文摘选自任玉刚著《Android开发艺术探索》,介绍了Android插件化技术的原理和三个关键问题,并给出了作者自己发起的开源插件化框架。动态加载技术(也叫插件化技术)在技术驱动型的公司中扮演着相当重要的角色,当项目越来越庞大的时候,需要通过插件化来减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。动态加载是一项很复杂的技术,这里主要介绍动态加载技术中的转载 2016-09-27 15:24:00 · 490 阅读 · 0 评论 -
修改源码实现全局(无需root)注入躲开注入检测
看这篇文章需要的技能1.会编译android源码(如果你不愿意编译源码,还有另外一种办法,下面我会提供)2.会使用substrate或者xposed以上2个网上资料很多我就不啰嗦了一、市面上目前的hook和注入工具市面上目前的hook有substrate,xposed,或者一些开源的自己实现的hook和注入,但是会调用一些系统api或者自身一些特征,会被加固检测到,故提供以转载 2016-12-19 08:39:34 · 5474 阅读 · 0 评论 -
脑洞型so加载过程实验
1.文章难易度【★★★★★】2.文章作者:penguin_wwy3.本文参与i春秋社区原创文章奖励计划,未经许可禁止转载4.阅读基础:熟悉Android虚拟机源码、so加载过程、Native编程【预备~~~起】前几天有人在群里问,ELF的可执行文件能不能调用so文件的JNI_OnLoad函数。这倒是一个有脑洞的想法,我尝试了一夜,就把尝试的过程记录下来。【一转载 2017-01-19 02:56:49 · 691 阅读 · 0 评论 -
AndroidLinker与SO加壳技术之上篇
1. 前言Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环。目前Android 应用加固可以分为dex加固和Native加固,Native 加固的保护对象为 Native 层的 SO 文件,使用加壳、反调试、混淆、VM 等手段增加SO文件的反编译难度。目前最主流的 SO 文件保护方案还是加壳技术, 在SO文件加壳和脱壳的转载 2017-01-19 03:02:56 · 804 阅读 · 0 评论 -
进阶Frida--Android逆向之动态加载dex Hook(三)
前段时间看到有朋友在问在怎么使用frida去hook动态加载的dex之类的问题,确实关于如何hook动态加载的dex,网上的资料很少,更不用说怎么使用frida去hook动态加载的dex了。(frida的官方文档已经无力吐槽...)后来偶然的情况下发现了一道CTF题目可以作为很好的案例,所以花了很多心思将文章写下来分享给大家,涉及的内容比较多,我打算用上下篇将frida hook动态加载的dex的...转载 2018-08-09 07:09:39 · 2772 阅读 · 0 评论