• Android APK(加壳+脱壳+加固演练)浅析


    背景

    加壳

    加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。是应用加固的一种手法对原始二进制原文进行加密/隐藏/混淆。 作用:加壳的程序可以有效阻止对程序的反汇编分析,常用来保护软件版权,防止被软件破解。

    APP加壳软件:

    1. apkprotect

    2. 梆梆加固

    3. 爱加密

    4. 娜迦

    5. 阿里

    6. 百度

    7. 腾讯

    8. 360等

    Android加壳的原理图:

    脱壳

    跟java类似,安卓的class都是由Classloader的loadClass方法加载的。跟java不同的是,每一个class对象都会有对应的dex对象属性跟相应的dex文件关联起来。利用xposed,将loadClass方法劫持住,每当loadClass方法调用完成后,用xposed执行后置方法。获取方法加载的class对象,然后调用getDex方法。拿到对应的dex文件引用,最后将dex文件序列成byte数据,写到自定义保存文件里面去。就能拿到脱壳后的dex文件。脱壳软件

    APK脱壳软件:

    1. 反射大师 (需要搭建xposed环境)

    2. DumpDex (需要搭建xposed环境且在真机下运行)

    3. FRIDA-DEXDump(需要搭建frida环境)

    4. FDex2

    加壳方法/步骤

    Android apk加壳技术实现步骤一

    apktool 反编译apk文件,得到反编译后文件夹(assets(项目原始的assets),smali(项目的经过特殊处理的代码库,后缀smali),res(项目原始res),AndroidManifest.xml(项目原始manifest文件))

    Android apk加壳技术实现步骤二

    创建一个新的android项目,实现相关的类(尽量不去使用xml,所有需要用到的内容用代码实现),并生成apk文件

    Android apk加壳技术实现步骤三

    使用apktool反编译2中生成的apk文件,得到smali文件夹

    Android apk加壳技搁施露术实现步骤四

    将3中得到的smali文件夹加入1中的smali文件夹,并修改1中的AndroidManifest.xml,比如说设置应用从自己的activity启动,执行部分代码后篇侮再跳转至原始应用的启动页

    Android apk加壳技术实现步骤五

    使用apktool对处理完的文件夹进行编译,得到apk文件(未签名),然后再进行醒膨签名,得到已签名apk文件(可以在真机上安装运行)

    Android apk加壳在爱加密平台—专业的Android apk加壳保护平台,Android应用主要保护是在dex加壳的基础上实现的,通过给Android apk加壳实现Android应用的加密保护,防止Android apk被反编译以及破解。

    脱壳步骤

    FDex2

    这里我以FDex2软件为例

    通过Hook ClassLoader的loadClass方法,反射调用getDex方法取得Dex(com.android.dex.Dex类对象),在将里面的dex写出

    dex2jar 将dex转换为jar

    Genymotion-ARM-Translation.zip 直接拉入模拟器中,使模拟器可以支持arm apk包

    xposed_v3.1.2.apk

    脱壳

    1、将xposed_v3.1.2、FDex2和需要脱壳的应用都安装到模拟器上。2、xposed_v3.1.2,将FDex2添加的xposed_v3.1.2的模块中激活

    3、点击xposed_v3.1.2模块中FDex2选中要脱壳的包4、运行要脱壳的包

    5、安装Re文件管理器,到data/data/包名拿到对应的dex文

    6、将拿到的dex使用dex2jar转换为jar,然后直接放入Android Studio可以查看对应代码

    文章简单介绍了apk加固中的加壳与脱壳;简单介绍了原理与使用的简单步骤。有关更多的Android apk加固,可以前往B站视频详解:华为资深专家深度教学;AndroidIO加密文件改造全过程;dex文件加密、解密;apk打包、解包、加壳、脱壳!_哔哩哔哩_bilibili。或点击查看这可免费获取《Android核心进阶》免费资料一份。这是华为高级专家整理出的一份Android学习资料及思维导图。望刷到这篇文章的,能多多点赞关注支持一下哦!

    学习思维导图

    学习PDF(部分)

  • 相关阅读:
    分布式理论基础:CAP与BASE理论
    sqlite3数据库
    数据中台实战(11)-数据中台的数据安全解决方案
    Python面向对象编程
    利用dns协议发起ddos反射攻击
    【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】神经元和人工神经网络
    iic驱动oled屏幕显示温湿度基于FreeRTOS实现多任务
    MySQL——备份和还原
    odoo15重建数据库(windows版本)
    Python3.11教程3:模块和包(pip/conda)、文件系统(os/ shutil/json/pickle/openpyxl/xlrd)
  • 原文地址:https://blog.csdn.net/Androidxiaofei/article/details/126253592