【移动安全基础篇】——33、Android加壳原理

1. 加密目标
隐藏原始 dex 数据,保护程序。

2. 实现步骤
1)  反编译原始 apk 文件(不反编译 dex 文件)
         ShakaApktool d –s xx.apk –o xx
2)  加密原始 dex 文件
         提取反编译后的原始 dex 文件,进行加密,保存到 assests 目录中。
3)  添加 ProxyApplication
         添加壳的入口点
4)  添加 so 文件(可选)
         添加解壳的 so 文件
5)  AndroidManifest.xml 修改
        在 application 标签中添加 ProxyApplication 的入口点,如果程序本身就重载了Application,则需要把原始的 Application 保存起来。
6)  回编译 apk 文件
          ShakaApktool b xx –o xx.apk

3. 相关知识点
1) 类装载器

2) Android apk 加载与运行

makeApplication:创建 Application,对 Application 进行重新加载如果一个程序本来有 Application 数据,然而壳的代码把数据覆盖掉了,那么需要手动调用 makeApplication 来完成 Application 的创建

getClassLoader:对 classLoader 进行加载,当本身的 classLoader 调用该方法创建完之后,需要把创建后的 classLoader 值通过反射的方法把 mClassLoader 域覆盖掉,从而达到覆盖 dex 文件数据的效果。

获取完 classLoader 之后开始创建数据加壳时需要对程序本身的 Application 方法通过反射方法来覆盖掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值