dex文件加密

16 篇文章 0 订阅

反编译

什么是反编译?(what )
    定义:利用编译程序从源语言编写的源程序产生目标程序的过程。

怎么进行反编译?

先了解apk的文件构造

加固方案的手段

反模拟器

    模拟器运行apk,可以用模拟器监控到apk的各种行为,所以在实际的加固apk运行中,一旦发现模拟器在运行该APK,就停止核心代码的运行。

代码虚拟化

    代码虚拟化在桌面平台应用保护中已经是非常的常见了,主要的思路是自建一个虚拟执行引擎,然后把原生的可执行代码转换成自定义的指令进行虚拟执行。

加密

样本的部分可执行代码是以压缩或者加密的形式存在的,比如,被保护过的代码被切割成多个小段,前面的一段代码先把后面的代码片段在内存中解密,然后再去执行解密之后的代码,如此一块块的迭代执行。

加固方案总体思想

加固的方案

加固总体框架

基本原理

Dex文件是什么?

加固的目的是保护dex,直接而言就是对dex文件进行操作,对dex文件动刀子,必须知道dex文件是什么,能否直接动刀子。什么是源dex?什么是壳dex?

Apk打包流程

加壳是在原来apk的基础上加一层保护壳,dex文件修改了就需要重新打包,否则apk安装不了。这就需要我们详细学习apk如何打包的,

Dex文件加载流程

加壳后的文件是不能直接用的,dex文件是加密的,所以我们需要对他进行解密,解密后的dex文件如何加载?

Dex文件

加密过程

加固总体框架

APK文件如何签名

APK文件如何运行(脱壳)

双亲委托机制ClassLoader

某个类加载器在加载类时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务或者没有父类加载器时,才自己去加载。

1、避免重复加载,当父加载器已经加载了该类的时候,就没有必要子ClassLoader再加载一次。
2、安全性考虑,防止核心API库被随意篡改。

如何从dex中找class?

如何进行NDK 层加密

一般情况下我们没有必要使用NDK,官方也提到了使用native开发会增加开发过程的复杂性。但是对于一些计算密集型的应用,例如游戏、图像处理,使用NDK能提高运算性能。还有一些情况为了复用现有库或者跨平台库,也会选择NDK。上面提到的一些核心算法和秘钥,大家选择放到native层,潜意识中也是默认native的破解难度比java高,还有欺负大部分Android程序员不会写C/C++代码:)

对称加密 &非对称加密

对称加密: 加密和解密的秘钥使用的是同一个
例如:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES非对称加密算法:

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android开发中,Classes.dex是包含了Java字节码的文件,是应用程序的核心文件之一。如果这个文件被反编译,攻击者可以轻松地获取应用程序的核心代码和逻辑,从而进行恶意攻击。因此,加密和混淆Classes.dex文件是非常必要的。 以下是一些常用的加密和混淆Classes.dex文件的方法: 1. 使用ProGuard混淆器 ProGuard是一个开源的Java字节码混淆器,可以对Java字节码进行压缩、优化和混淆。它可以删除未使用的代码、重命名类、方法和属性名,并且可以将代码分成多个不同的文件。使用ProGuard混淆器可以有效地保护应用程序的代码不被反编译。 2. 使用DexGuard混淆器 DexGuard是一个专门为Android应用程序设计的混淆器,可以对Java字节码进行更加复杂的混淆和加密。它可以使用高级的代码混淆和加密技术,如字符串加密、类加密、方法加密、代码搬运、代码膨胀等等。使用DexGuard混淆器可以更加有效地保护应用程序的代码不被反编译。 3. 使用加密算法加密Classes.dex文件 可以使用加密算法对Classes.dex文件进行加密,可以使用对称加密算法或非对称加密算法。对称加密算法包括AES、DES、RC4等等,非对称加密算法包括RSA、DSA等等。加密后的Classes.dex文件只有在运行时才能被解密,可以有效地保护应用程序的代码不被反编译。 总之,加密和混淆Classes.dex文件是非常必要的,可以有效地保护应用程序的核心代码和逻辑。使用ProGuard混淆器或DexGuard混淆器都可以实现代码混淆和加密,同时可以使用加密算法加密Classes.dex文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值