构建与打包能力(五、APK安全的攻与守)

630 阅读1分钟

构建与打包能力系列

image.png

1、反编译

  • dex2jar把dex文件反编译成jar包
sudo chmod +x d2j_invoke.sh //取消d2j_invoke.sh文件的权限
sh dex2jar/d2j-dex.sh apk/classes.dex -o classes.jar //执行命令
  • jd-gui jar包class查看工具

2、Apk加固

  • dex加密并与壳dex生成加固后的dex
    • 把原apk文件中提取出来的classes.dex文件通过加密程序进行加密
    • 将加密后的dex文件追加在壳dex文件后面,生成新的dex文件

image.png

  • 修改原始apk并重新打包签名
    • 将上一步生成的加固后dex 替换掉原始的dex
    • 由于程序运行的时候,需要先加载StubApplication类。所以,我们需要修改Android的Manifest.xml文件,指定application为StubApplication

image.png

3、脱壳

image.png

  • 在attachBaseContext方法里,主要做两个工作:
    • 释放原始dex文件并解密
    • 然后使用自定义的DexClassLoader加载解密后的原dex文件
    • 反射ActivityThread中的loadedApk中的类加载器为自定义的类加载器
  • 在onCreate方法中,主要做两个工作:
    • 创建原Application对象,并调用原Application的onCreate方法启动原程序
    • 通过反射修改ActivityThread类,并将Application指向原dex文件中的Application

4、360加固保

官网地址