zoukankan      html  css  js  c++  java
  • 【移动安全基础篇】——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 方法通过反射方法来覆盖掉。

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    java 集合中将元素倒序排列
    自定义AccessDeniedHandler
    如何在spring中获取request对象
    mybatis 做 insert操作的时候返回插入的那条数据的id
    Spring Security-用户密码自定义加密
    JS定义类及对象
    HTML5坦克大战(1)绘制坦克
    JSON学习【转自慕课网】
    HTML5之语音识别实例
    绚丽的倒计时(1)---画出时钟
  • 原文地址:https://www.cnblogs.com/devi1/p/13486413.html
Copyright © 2011-2022 走看看