加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。是应用加固的一种手法对原始二进制原文进行加密/隐藏/混淆。作用:加壳的程序可以有效阻止对程序的反汇编分析,常用来保护软件版权,防止被软件破解。
Android加壳的原理图:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
跟java类似,安卓的class都是由Classloader的loadClass方法加载的。跟java不同的是,每一个class对象都会有对应的dex对象属性跟相应的dex文件关联起来。利用xposed,将loadClass方法劫持住,每当loadClass方法调用完成后,用xposed执行后置方法。获取方法加载的class对象,然后调用getDex方法。拿到对应的dex文件引用,最后将dex文件序列成byte数据,写到自定义保存文件里面去。就能拿到脱壳后的dex文件。脱壳软件
apktool 反编译apk文件,得到反编译后文件夹(assets(项目原始的assets),smali(项目的经过特殊处理的代码库,后缀smali),res(项目原始res),AndroidManifest.xml(项目原始manifest文件))
创建一个新的android项目,实现相关的类(尽量不去使用xml,所有需要用到的内容用代码实现),并生成apk文件
使用apktool反编译2中生成的apk文件,得到smali文件夹
将3中得到的smali文件夹加入1中的smali文件夹,并修改1中的AndroidManifest.xml,比如说设置应用从自己的activity启动,执行部分代码后篇侮再跳转至原始应用的启动页
使用apktool对处理完的文件夹进行编译,得到apk文件(未签名),然后再进行醒膨签名,得到已签名apk文件(可以在真机上安装运行)
Android apk加壳在爱加密平台—专业的Android apk加壳保护平台,Android应用主要保护是在dex加壳的基础上实现的,通过给Android apk加壳实现Android应用的加密保护,防止Android apk被反编译以及破解。
这里我以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(部分)
【私信“手册”获取】Android核心技术进阶手册、实战笔记、面试题纲资料
扫描二维码推送至手机访问。
版权声明:本文由网友投稿发布,本网站仅提供存储空间服务,如侵犯了您的权利请立即联系我们进行删除。