首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 插件化】静态分析应用 APK 安装是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )

ActivityManagerService 准备的 , 如果给 AMS 传入没有在清单文件中注册过得组件 , 直接就报错了 ; 启动 插件应用 时 , 创建 Intent 时 , 创建的是 “桩”...组件 , 将插件应用组件信息封装到 Intent 的 Extra 信息中 ; 然后将相关数据传递通过 Binder 机制 , 传递给 AMS , 在 AMS 进程中 , 会验证要启动的组件是否在 AndroidManifest.xml..., 使用 Intent 中的 插件应用 中的组件 , “桩” 组件完成了欺骗 AMS 的职责 , 之后开始创建 插件应用中的组件实例 , 然后启动插件中的组件 ; 所有的插件化引擎 , 都有上述特征..., 即 “桩” 组件 Intent 中包含 插件组件信息 , AMS 处理完毕后 , 又从该 Intent 中取出信息创建插件组件 ; 反编译 Dex 文件 , 然后通过分析 Smali 代码 , 分析是否存在上述一系列的操作..., 注意按照特定顺序执行的一系列操作 ; 如果发现上述特征 , 就说明该应用使用了插件化引擎 ; 有个问题 , 如果应用加固了 , 加了个壳 , 或者应用的 Dex 文件进行了加密 , 就无法使用上述静态检测了

30620

Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件 | 测试插件 DEX 字节码 )

| 设置合并后的 Element[] 数组 ) 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件 | 测试插件 DEX 字节码 ) ----...文章目录 Android 插件化系列文章目录 前言 一、创建插件应用 二、拷贝插件 APK 三、Application 中拷贝文件及初始化插件 四、插件 DEX 字节码测试 五、执行结果 六、博客资源...dexElements 获取的两个数组进行了合并 ; 本篇博客中开始验证上述加载的插件 Dex 字节码是否加载成功 ; ---- 一、创建插件应用 ---- 创建插件 Module 应用 , 使用默认配置即可..., 在主界面 MainActivity 中定义一个 log 方法 , 使用该方法进行反射测试 , 在加载插件 Element[] dexElements 成功之后 , 反射 log 方法 , 测试是否加载成功..., 编译 apk 文件 , 将文件名称修改为 plugin.apk , 并将 apk 文件拷贝到 assets/plugin.apk 位置 ; 二、拷贝插件 APK ---- 使用下面的 CommandUtils

98820
您找到你想要的搜索结果了吗?
是的
没有找到

Android减少APK大小

尽管Android支持所有这些屏幕密度,但你不需要为每个密度都配置相应的资源。 如果你知道某种特定屏幕密度已经很少有用户使用了,那么你可以考虑是否需要为这个屏幕密度配置资源。...但是,我们推荐在运行时复用一张图片定制化他们。 Android提供了很多方式改变资源的颜色。对于Android 5.0及以上,使用android:tint和tintMode属性。...更多信息,请看Create WebP Images Using Android Studio。 使用向量图 你能使用向量图去创建一个分辨率无关的图标。使用向量图能够显著减少APK大小。...维持多个小的APK 你的APK会包含用户下载了但从未使用的内容,比如地区或语言信息(译注:比如我是中国人,我就不会用到其他语种的资源)。...为了给用户创建小的下载,你能把你的应用拆分成多个APK,这些APK的差别在于一些因素(比如屏幕大小或者GPU纹理支持)。 当一个用户下载了应用,设备根据自身的特性和设置获取正确的APK

1.7K100

Android减少APK大小

尽管Android支持所有这些屏幕密度,但你不需要为每个密度都配置相应的资源。 如果你知道某种特定屏幕密度已经很少有用户使用了,那么你可以考虑是否需要为这个屏幕密度配置资源。...减少动画帧数 使用帧动画会大大增加APK的大小。图1显示了目录中构成帧动画的多个PNG文件。每个图片都是动画的一帧。 对于加入动画的每帧,你都增加了APK中图片的个数。...更多信息,请看Create WebP Images Using Android Studio。 使用向量图 你能使用向量图去创建一个分辨率无关的图标。使用向量图能够显著减少APK大小。...维持多个小的APK 你的APK会包含用户下载了但从未使用的内容,比如地区或语言信息(译注:比如我是中国人,我就不会用到其他语种的资源)。...为了给用户创建小的下载,你能把你的应用拆分成多个APK,这些APK的差别在于一些因素(比如屏幕大小或者GPU纹理支持)。 当一个用户下载了应用,设备根据自身的特性和设置获取正确的APK

1.7K60

Android App瘦身新姿势——Android App Bundle

由于博主长期从事海外App的开发,所以心系谷歌爸爸的动向呀,最近谷歌爸爸推出了一个Android App Bundle的东西,据说可以压缩体,当然这仅限于上传Google Play的应用,国内市场不支持...概述 Android App Bundle是Google最新推出的Apk动态打包,动态组件化的技术,与Instant App不同,AAB是借助Split Apk完成动态加载,使用AAB动态下发方式,可以大幅度减少应用体积...Enable on-demand: 是否启用按需下载,如果不启用,会直接打进Apk Fusing:熔断操作,是否安装到不支持按需下载的设备中 Module title: 模块标题 对于动态组件的一些使用场景...语言的动态下发 当Split 针对语言进行划分时候,用户下载的Apk仅仅只能下载下来一个Base Apk,包含他的当前系统语言,你可以将其他语言作为Dynamic feature下发给用户,做到语言的动态下发...功能的动态下发 对于某些独立的feature,这其实跟之前的插件化方案有异曲同工之处,而且天然支持友好,动态下发业务需求能有效的减少大小,增加启动速度,减少安装时间等等。

1.2K10

谷歌弃用APK格式,转而使用AAB格式

一直以来,Android 首选的应用程序就是 APK。...在制作APK的时候,通过Android SDK 提供的打包工具打包成一个 Android 系统支持的安装程序文件,几乎所有 Android 应用程序都使用这种格式发布。...所以说,AAB 格式其实并不是一个全新的应用安装,而是一套软件的包管理方案,我们可以将它当做一个容器,里面包含着一个基本 APK多个用于特定配置的 APK。...如何打AABAPK的制作流程一样,我们也可以使用Android Studio进行AAB的制作。...为此,谷歌已经开发了一个名为 bundletool 的开源工具,允许开发人员从 AAB 创建 APK,因此想在第三方商店中发布 Android 应用程序的开发人员可以手动导出其应用APK 版本。

1.4K40

手把手教你如何巧用Github的Action功能

提高产品质量:很多大公司在代码提交后都会有一套代码检视脚本(俗称门禁)检查代码的提交是否符合规范,从而从源头遏制问题的产生。...如何使用Action打包apk 作为一名Android开发,你有没有想过每次提交代码或者发布版本的时候,github能够对应帮你自动打包出一个apk?...这样你既可以省去打包apk的时间,还免去了应用的管理,岂不美哉? 那么我们应该怎么做呢?...2.release apk sign:配置应用的签名。这里需要注意的是,这个地方的签名配置还是需要结合着build.gradle 文件的配置编写的。...其实也很简单,就是设置触发的条件是issues的创建,在创建的时候去查询一下issues的创建是否star或者fork了该仓库,如果满足条件则不做处理,否则将自动锁住并关闭issues。

2.1K10

Matrix-ApkChecker — Apk 分析减利器

Matrix-ApkChecker 作为 Matrix 系统的一部分,是针对 android 安装的分析检测工具,根据一系列设定好的规则检测 apk 是否存在特定的问题,并输出较为详细的检测结果报告,...检查是否经过了资源混淆(AndResGuard) 检查 apk 是否经过了资源混淆,推荐使用资源混淆进一步减小 apk 的大小 5....搜索不含 alpha 通道的 png 文件 对于不含 alpha 通道的 png 文件,可以转成 jpg 格式减少文件的大小 6....MultiLibCheckTask 可以判断 apk是否有针对多个 ABI 的 so 实现方法:直接判断 lib 文件夹下是否包含多个目录。...以可执行 jar 的方式提供使用,便于应用到持续集成系统中 微信在 Jenkins 上部署了 Matrix-ApkChecker 检查编译产出的 Apk ,并将结果输出到 APM 系统中汇总分析。

4.3K40

Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )

, 必须采取一定的措施 , 避免我们开发的应用被恶意开发者使用 ; 在 ANTI-PLUGIN: DON’T LET YOUR APP PLAY AS AN ANDROID PLUGIN 论文中 ,...DroidPlugin 会声明尽可能多的权限 125 个 , 一般插件化引擎宿主应用的权限范围会大于插件应用的权限 ; 使用 PackageManager 获取应用权限 , 然后访问这些权限 , 如果访问插件应用没有的权限可以访问..., 说明当前运行在插件化引擎中 ; 检查 是否注册到系统中 , 应用安装后 , 会自动在 /data/data 创建对应名的目录 , 如果没有 , 说明当前运行在插件化引擎中 ; 检查 组件...ID , 用户 ID , 应用安装时自动分配的 , 如果应用不卸载 , 会一直保持该 UID ; 插件化引擎中运行的 APK 插件 , 其 UID 都是宿主应用的 UID ; 插件化引擎创建一个进程...检查生成的文件 : 应用安装后 , 会在 /data/data/ 目录下生成对应名的目录 , 检查该目录是否存在 ; 4、检查组件 在 AndroidManifest.xml 定义一个静态广播 ,

71320

Android 应用构建速度提升的十个小技巧

,我们可以看出,全量构建一次应用的时间直接减少了 25%,代码改动的增量构建减少了将近 40%,资源改动的增量构建也减少了 16%。...在应用需要发布和上架的时候,我们往往会使用 “Multiple APK” 构建,它可以根据 ABI 和像素密度创建不同版本的应用,使体积降低等。...正确的禁用多 APK 构建的方法是创建一个属性做判断,这里我们设置了一个名为 “devBuild” 的属性,在构建的过程中把这个值传给 gradle,此时 gradle 会将 splits.abi.enable...gradle 以避免生成多个 APK。...解决这个问题并不难,我们可以通过在构建脚本里判断是否有 devBuild 标记,如果有的话,我们就把版本号设置为一个固定值就可以了。 ?

92330

Android 插件化与测试

用户不用重新安装 apk 就能升级应用功能,减少发版本频率,增加用户体验。 (2). 提供一种快速修复线上BUG和更新的能力。 (3)....ClassLoader又叫类加载器,是专门处理类加载,一个APP可以存在多个ClassLoader。...(Android 中的ClassLoader 机制主要用来加载dex文件) Android 项目中,所有Java代码都会被编译成dex文件,Android 应用运行时,就是通过执行dex文件里的业务代码逻辑工作的...使用动态加载技术可以Android 应用运行时加载外部的dex文件,而通过网络下载新的dex文件并替换原有的dex文件就可以达到不安装新apk文件就升级应用(改变代码逻辑)的目的。...(1)apk安装是否有问题 外置插件apk,要做到既可以“安装到设备”,又可以“作为插件”使用。要注意是可以独立安装到手机上的,本身就是一个完整的应用

1.1K20

Android 应用构建速度提升的十个小技巧

,我们可以看出,全量构建一次应用的时间直接减少了 25%,代码改动的增量构建减少了将近 40%,资源改动的增量构建也减少了 16%。...在应用需要发布和上架的时候,我们往往会使用 “Multiple APK” 构建,它可以根据 ABI 和像素密度创建不同版本的应用,使体积降低等。...正确的禁用多 APK 构建的方法是创建一个属性做判断,这里我们设置了一个名为 “devBuild” 的属性,在构建的过程中把这个值传给 gradle,此时 gradle 会将 splits.abi.enable...gradle 以避免生成多个 APK。...另外一个避免压缩 PNG 的方法是使用把 PNG 转换成 WebP 格式的图片,对比 PNG 格式,WebP 可以减少最多 25% 的大小,同时 2.3 以上版本的 Android Studio 直接支持

90030

Android资源大小检查测试方案

比如dex、so、图片资源各自占比、是否有重复资源、是否有图片未压缩等. 如果能每个版本检查出上述问题并提出优化建议,那么在持续集成中价值就比较大....、PathClassLoader等类完成的....这里提到了NDK工具,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk. .png .png是常见的资源文件,在Android项目中路径是...res文件路径下. .js 现在多数app的是混合模式开发,通常会内置一些常用js文件,使用的时候从本地使用js文件,减少网络请求js文件并且提高web页面的响应时间. .xml .xml文件是配置icon...image 执行策略 检查是一种低频率测试,每天执行一次即可. 优化建议 重复代码 当然重复代码是可以从代码扫描的角度发现,减少重复代码也可以达到瘦身的效果.

64310

【Google Play】App Bundle 使用详解 ( 简介 | 应用内更新 | 即时更新 | 灵活更新 )

up your app 文档 , 创建 Google Play 中要上架的应用 ; 一、App Bundle 简介 ---- App Bundle 是 Android 提供的新的应用分发格式 , 用于取代之前传统的...Google Play 进行 动态分发 , 比上传多个 APK 更易于维护 ; 下图是官方提供的演示效果 , 左侧是传统 APK 打包过程 , 将所有资源打包到 APK 文件中 ; 右侧是使用 App...Bundle 后 , Google Play 为下载应用的用户生成的定制 APK , 删减了很多不必要的资源 ; 使用 App Bundle 可以实现定制化的灵活的分发 , 可以灵活的决定 分发内容...; 用户点击图标后 , 弹出对话框 , 让用户选择是否更新 ; 如果用户选择否 , 则直接退出当前界面 , 继续使用 ; 如果用户选择更新 , 则开始更新 , 更新的同时 , 用户可以继续使用应用...; 下载更新并安装完成后 , 提示用户重启 , 并使用最新的应用功能 ;

2K20

❤️Android 安装体积优化 ❤️

实际开发应用时,体积优化是必不可少的。...实际项目中肯定是图片资源占比相对较大) 从上图看出,实际上 APK Analyzer 的作用不光是查看 APK 大小,从它的名字也能看出它是用来分析 APK 的,因此可以使用分析一些优秀 APK...image.png 上面就是未使用的资源:会使应用程序变大,并降低构建速度。 还有很多就不多介绍了,感兴趣的可以去玩玩。...不过,当您使用 Android Studio 创建新项目时,缩减、混淆处理和代码优化功能默认处于停用状态。...image.png 但是 App Bundle 目前只适合在 Google Play Store 上发布的项目,国内目前还是通过各家的插件化方案实现动态部署,一定程度上也可以算作减少安装大小的方案

1.1K30

Google IO 之 Android App Bundles 是个啥

Split Apks split apks是Android 5.0开始提供多apk构建机制,借助split apks可以将一个apk基于ABI和屏幕密度两个维度拆分城多个apk,这样可以有效减少apk体积...当用户下载应用程序安装时,只会包含对应平台的so和资源。因为需要google play支持,所以国内就没戏了。...针对不同cpu架构问题,国内应用开发商大部分都会将so文件只放在armabi目录下,如此做虽然可以有效减少体积,但可能带来性能问题。...初识Android App Bundles 针对split apks的不足,Google今年在其I/O大会上推出AAB,AAB提供动态安装apk功能,这样可以进一步减少apk体积,首先来看张图。...在创建dynamic_feature时,有两个选项是默认勾选的,当然我们也可以更改其状态。 ? Enable on-demand: 是否支持按需下载模式。

2.3K20

第十二章 Android Gradle测试

Android为测试提供了很好的支持,既可以使用传统的Junit测试,又可以使用Android提供的Instrument测试,这一章我们主要讲Android Gradle和Android测试之间的配合和结合...,androidTest SourceSet会被构建成一个可以安装到设备上的测试Apk,这个测试Apk里有很多我们写好的测试用例,他们会被执行,测试我们的App。...testApplicationId 测试Apk名 testFunctionalTest 是否启用功能测试 testHandleProfiling 是否启用性能分析 testInstrumentationRunner...从源代码里我们也可以看到,它的默认值是debug,也就是我们上面讲的测试的是debug类型的App。 写好了测试的代码,我们怎么运行呢,测试需要我们手动执行运行,使用....这个前提我们一定要有一台Android设备或者Android模拟器以供我们测试使用,如果你同时运行了多个设备,那么会在每个设备上都执行测试用例。

49820
领券