揭秘电子数据取证中的APK加壳与脱壳秘技
2024-1-12 08:1:24 Author: 网络安全与取证研究(查看原文) 阅读量:7 收藏

点击上方「蓝色」字体关注我们

安卓APP的开发主要都是采用Java语言进行开发,其Java源码最终编译成smali字符码,以classes.dex文件保存在APP的APK中,目前市面上大部分APK在发行时均会采用代码混淆及加固(即加壳),代码混淆仅用于让APK被反编译后获取的代码难理解,加固则用于让APK难于被反编译,提高了APK的安全性,也提高了APK被逆向分析破解的门槛。

常规的APK加固方式过程

编写简单APK程序。

APK签名打包完成后输出为app-release.apk

使用360加固助手对打包完成的APK进行签名并重新输出为app-release_sign.apk,使用反编译软件打开打包完成的测试APK app-release_sign.apk,此时反编译结果与源代码一致。

使用360加固助手对测试APK进行加固

加固后再使用反编译软件打开,在程序目录下无法查看程序源代码,对逆向分析的DEX文件和资源文件进行了加密保护

APK资源文件assets中,增加了加固的so文件

使用查壳工具对测试APK查壳

常见加固方式

市面上常见的加固方式包含爱加密、360加固、百度加固、阿里加固、腾讯加固、盛大加固、瑞星加固、国信灵通加固、apkprotec协固、几维安全加固、顶像科技加固、网易易盾等,或是通过自己编写的程序进行加固,各个加固技术产品都有其各自优缺点。

未加壳的APK解包方式

1、使用apktool对APK文件进行反编译,一般反编译后的源码为smali,不便于理解,需再次解析;

2、将APK文件另存为ZIP压缩文件,解压后使用dex2jar对classes.dex文件进行解析,解析成功后会生成jar文件,使用jd-gui程序打开jar文件则可看到程序源代码;

3、直接使用反编译程序打开,例如jadx-gui、GDA,技术难度较低,推荐使用。

加壳的APK解包方式

若使用查壳工具查询出APK加壳或使用上述未加壳的APK解包方式对APK进行反编译后无法查看到程序源代码,当加固程度不是很高时,有以下两种相对简单点的工具对APK进行脱壳:

使用Fdex2,将xposed、Fdex2、mt管理器及需要脱壳的APK程序安装到安卓模拟器上,激活Fdex2添加的xposed模块,运行后在模拟器内对应APK包名的文件夹中获取对应的classes.dex文件,再使用jadx-gui或dex2jar程序对文件进行反编译。

使用Frida-DexDump,在安装好firda相关程序后,将需要脱壳的APK程序安装到安卓模拟器上,利用其脱壳命令“frida-dexdump -U -d -f 包名 -o 存放dex路径”获取到该APK的classes.dex文件。

近几年加固技术的发展主要经历阶段为动态加载、内存不落地加载、指令抽取、指令转换/VMP、虚拟机源码保护,随着互联网技术发展的不断升级,加固技术快速发展及其攻防对抗的更迭,虚拟机源码保护成为当前领先的加固技术,为APP提供了强有力的保护,在这种环境下,对于违规或恶意的APP程序进行逆向分析也将变得越来越困难。

在电子数据取证中,需要深入了解某个应用程序的内部机制,以便查明潜在的犯罪活动或其他非法行为。APK加壳与脱壳技术提供了一种手段,能够更好地分析应用程序,发现隐藏的功能、检测潜在的威胁或找到证据,确保电子数据的完整性和可靠性。

点个“在看”你最好看


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg3NTU3NTY0Nw==&mid=2247488449&idx=1&sn=559753713d906330c519bffb7e554704&chksm=ceeac1d5bf40a56c111116d92109af77331841a671a53b0e9d9362a1a650ee9bad212ec44517&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh