Gradle插件--dex加密

本文介绍了一种对Android应用中的DEX文件进行加密的方法,以防止应用被反编译。该方法涉及使用自定义插件对DEX文件进行加密,并在运行时进行解密。文章提供了详细的实施步骤,包括插件的生成、配置及应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DEMO地址:https://github.com/zhaopingfu/listener24_fake_dex

对安装包里的dex文件进行加密,防止别人反编译

这里只是在本地写了两个插件,没有上传到jcenter上面

原理

一个apk,把他的dex拿出来进行加密,这时候直接打包是不能执行的,因为dex是加密的,类加载器无法
访问,所以这里使用了一个带application的dex,将加密后的dex拼接到后面,最后把加密后的dex的
dex文件的长度拼接到最后,在application中先读取加密后的dex,先解密,然后通过类加载器加载dex

使用

  • 第一步

    将fakedex模块和fakedex-plugin模块拷贝到项目中
    
  • 第二步

    在命令行(Terminal)中生成插件
    
    gradlew :fakedex:pFPTML
    gradlew :fakedex-plugin:pFPTML
    
  • 第三步

    修改工程的build.gradle,添加插件

示例

   buildscript {
       repositories {
           jcenter()
           mavenLocal()
       }
       dependencies {
           classpath 'com.android.tools.build:gradle:2.3.3'
           classpath 'com.pf.fakedex:fakedex-plugin:1.0.0'
       }
   }

   allprojects {
       repositories {
           jcenter()
           mavenLocal()
       }
   }
  • 第四步

    修改app模块下的build.gradle

示例

 apply plugin: 'com.pf.fakedex'
 fake {
     // 加密的密码
     key 'asdfasdfasdfasdf'
 }

 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
     compile 'com.android.support:appcompat-v7:25.3.1'
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     testCompile 'junit:junit:4.12'

     compile group: 'com.pf.fakedex', name: 'fakedex', version: '1.0.0'
 }
  • 第五步

    在命令行中打包 gradlew :app:assembleDebug

    打出来的包在/app/build/outputs/fake/outs/app-debug-signed.apk

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值