简单加固的方法

APK结构

|---AndroidManifest.xml
|---META-INF
    |-- CERT.RSA
    |-- MANIFEST.MF
    |-- CERT.SF
    CERT.RSA是开发者利用私钥对APK进行签名的签名文件,CERT.SF,MANIFEST.MF记录了文件中文件的SHA-1哈希值
|---res
    |---drawable
    |---drawable-xhdpi
    |---layout-xhdpi
|---lib
    |---armeabi-v7a
|---assets
|---classes.dex、classes2.dex、classes3.dex(加固的主体)
|---resources.arsc:用来记录资源文件和资源ID之间的映射关系

DEX文件格式

  1. File Header
  2. String Table
  3. Class List
  4. Field Table
  5. Method Table
  6. Class Definition Table
  7. Field List
  8. Method List
  9. Code Header
  10. Local Variable List

方法

  1. 按照常规模式生成应用APK包
  2. 写一个壳APK,功能是的dex文件解密解析到内存中,并使用BaseDexClassLoader加载之
  3. 将应用APK包解包,将加密Dex文件保存到File Header,修改Header中的长度偏移
  4. 重新合成

加固带来的问题

  1. 应用首次打开会更慢一点
  2. 会带来兼容性问题
  3. 是持续升级的过程(就是简单的方法除了降低性能可能没啥用)

你可能感兴趣的:(Android,android)