Android应用加固的简单实现方案(二)

前言

上一篇文章介绍了基于dex加固方案的两种具体实现。相对于手动加固,基于gradle实现的加固方案效率有了进一步提升。但是,还是需要在壳Module中增加util相关工具类的引用,为进一步减少代码侵入性,在前面方案的基础上,进一步完善插件的功能。

实现原理

为了避免在壳Module中引入脱壳相关的工具类,可以在aar生成后,利用ASM生成需要的class文件,然后修改aar中的classes.jar文件,将我们生成的class文件加入到classes.jar中。而壳Module的启动Application也需要在编译后修改attachBaseContext方法,加入脱壳代码的引用。这块都可以通过修改class中的方法来实现。而脱壳后,实质上还是运行apk中的代码,因此,apk中也需要对应修改以上两处。

基于以上思路,实现可以加固的一个简单插件。

使用步骤

新建项目,再新建一个Android Library类型的Module作为壳Module,名称随意,以"shell"为例,在壳Module中新建继承自Application的类,以"ShellApplication"为例,在ShellApplication中重写attachBaseContext方法,这个方法需要调用super.attachBaseContext(base)方法:

public class ShellApplication extends Application {

@Override

protected void attachBaseContext(Context base) {

super.attachBaseContext(base);

}

}

主Module需要依赖刚才新建的壳Module,并指定主Module的启动Application为刚才新建的ShellApplication。

项目根目录下的build.gradle中引入插件:

buildscript {

dependencies {

//...

classpath 'com.wangyz.plugins:ShellPlugin:1.0.0'

//...

}

}

app模块下的build.gradle引入插件及配置插件

apply plugin: 'com.wangyz.plugins.ShellPlugin'

//主要注意shellModuleName和shellApplication的配置

shellConfig {

//壳Module的名称

shellModuleName = 'shell'

//壳Module中Application的全类名

shellApplication = 'com.wangyz.shell.ShellApplication'

keyStore = 'E:\\Code\\Android\\android.keystore'

keyStorePassword = 'android'

keyPassword = 'android'

alias = 'android'

}

sync工程

在打包apk前,先执行Build-Clean Project,然后双击gradle面板的app/Tasks/build/assembleRelease,就会在项目根目录/壳Module名称-release/outputs/下生成signed.apk,这个apk就是加固过的apk.

注意事项

这里只是演示加固的思路,对于加密部分,只是用了简单的^操作,具体可以自己换成AES,RSA或者其它加密方式。

插件会用到dx,gralde的命令,因此需要配置这两个的路径

插件会用到ASM,在编译出class后修改class。在生成apk后,没有修改过代码或者没有执行sync的操作后,transform的回调不会走,因此也不会执行修改class的逻辑,因此在每次生成加固apk前,需要执行clean项目的操作。

引入插件后的配置文件一定不能错,重点关注shellModuleName和shellApplication,否则会导致生成的apk无法正常使用。

android 如何加固,Android应用加固的简单实现方案(二)相关推荐

  1. Android应用加固的简单实现方案

    个人博客 http://www.milovetingting.cn Android应用加固的简单实现方案 概述 Android应用加固的诸多方案中,其中一种就是基于dex的加固,本文介绍基于dex的加 ...

  2. android elf 加固_Android so加固的简单脱壳

    Android应用的so库文件的加固一直存在,也比较常见,特地花时间整理了一下Android so库文件加固方面的知识.本篇文章主要是对看雪论坛<简单的so脱壳器>这篇文章的思路和代码的分 ...

  3. 019 Android加固之APK加固的原理和实现

    文章目录 前言 加载Activity遇到的问题 APK的启动过程 替换ClassLoader流程 获取ActivityThread类对象 获取AppBindData类对象mBoundApplicati ...

  4. 【Android 安全】使用 360 加固宝加固应用 ( 购买高级加固服务 | 设置资源加固 | 设置 SO 文件保护配置 | 设置 SO 防盗用文件配置 | 反编译验证加固效果 )

    文章目录 一. 购买加固服务 二. 设置资源加固 三. 设置 SO 文件保护配置 四. 设置 SO 防盗用文件配置 五. 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上 ...

  5. 华为android加固,app安全加固学习记录

    加固保学习 加固前的原包请先用签名工具对该apk进行签名,再加固,并重新签名,保证加固前后都用签名工具签一次名. 注:加固后不签名则可能安装不了. Q:如何查看应用的签名证书? A:目录下找到名为ME ...

  6. 【Android 安全】Android 应用 APK 加固总结 ( 加固原理 | 应用加固完整的实现方案 | 源码资源 )

    文章目录 一. APK 加固原理 1. Android 应用反编译 2. ProGuard 混淆 3. 多 dex 加载原理 4. 代理 Application 开发 5.Java 工具开发 6.Ap ...

  7. 360加固android app反编译,apk360加固脱壳

    360加固保动态脱壳,360加固保带给我们的惊喜,360加固脱壳工具,apk360加固脱壳 360 加固后的 apk,在 arm 设备上首先会将 assets 目录下的 libjiagu.so 拷贝到 ...

  8. Android studio gradle实现360加固保自动化打包

    Android studio gradle实现360加固保自动化打包 随着目前行业竞争越来越激烈,apk加固防逆向应该是标配,而360加固保应该是这方面比较成熟可靠的加固工具了,一次性完成了签名混淆加 ...

  9. 在Android Studio中实现360加固自动化,进一步提升生产力!

    1.概述 Android Studio目前已经成为Android APP开发的首选IDE,其使用Gradle作为构建系统,Gradle使用groovy语言作为DSL可以扩展出随心所欲的功能,让APK构 ...

最新文章

  1. 《智能数据时代:企业大数据战略与实战》一3.5 步步为营
  2. 吐血整理:论文写作中注意这些细节,能显著提升成稿质量
  3. AndroidStudio的几种依赖方式
  4. EFM32外设模块—USART V1.00
  5. 简洁又快速地处理集合——Java8 Stream(下)
  6. java方法不可覆盖_详解Java构造方法为什么不能覆盖,我的钻牛角尖病又犯了.......
  7. php5.5 反序列化利用工具_Yii框架反序列化RCE利用链2
  8. EBS 报表输出PDF时中文乱码
  9. Redis 学习---(5)Redis 命令
  10. mybatis关联查询之一对多,多对一,以及多对多
  11. 【Part1】用JS写一个Blog(node + vue + mongoDB)
  12. 数据挖掘实践(金融风控)——task1:赛题理解
  13. 机器学习项目实战----信用卡欺诈检测(二)
  14. 铵钮提交事件PostBack之后,一些动态加载的物件丢失
  15. ubuntu 上搭建lanp环境
  16. 手把手教你用R语言制作网络爬虫机器人(一)
  17. 前端和后端的英文_前端工程师和后端工程师
  18. 百度员工离职总结:如何做个好员工?(严重推荐)
  19. go vender 的环境搭建和使用
  20. java如何控制远程桌面_Java实现屏幕抓图,控制远程桌面

热门文章

  1. hex格式解析,合并hex
  2. Unity 3D入门简介
  3. 小米10 android11降级,MIUI11降级到MIUI10的操作步骤(米6)
  4. Wiki with Fake AKGPLT
  5. 【SUMO学习】初级 Manhattan
  6. 西安文理学院计算机专场2019,西安文理学院2019年录取分数分析
  7. Graph Anomaly Detection with Deep Learning——子图检测
  8. 拥抱未来,开源先行!OpenI启智社区首批优秀开发者榜单即将出炉
  9. 免费电子杂志程序 源代码
  10. Elementui自定义Pagination 上一页下一页使用按钮