🛫 系列文章导航
- 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950
- 【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446
- 【Frida】【Android】03_RPC https://blog.csdn.net/kinghzking/article/details/137050967
- 【Frida】【Android】04_Objection安装和使用 https://blog.csdn.net/kinghzking/article/details/137071768
- 【Frida】【Android】05_Objection实战 https://blog.csdn.net/kinghzking/article/details/137071826
- 【Frida】【Android】 06_夜神模拟器中间人抓包 https://blog.csdn.net/kinghzking/article/details/137162859
- 【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection https://blog.csdn.net/kinghzking/article/details/137211973
- 【Frida】【Android】 08_爬虫之网络通信库okhttp3 https://blog.csdn.net/kinghzking/article/details/137227041
- 【Frida】【Android】 09_爬虫之Socket https://blog.csdn.net/kinghzking/article/details/137284648
- 【Frida】【Android】 工具篇:ZenTracer https://blog.csdn.net/kinghzking/article/details/137284648
- 【Frida】【Android】 工具篇:查壳工具大赏 https://blog.csdn.net/kinghzking/article/details/137422458
▒ 目录 ▒
- 🛫 系列文章导航
- 🛫 导读
- 开发环境
- 1️⃣ 混淆加壳简介
- 混淆加壳技术的演变过程
- 常见加固厂商及特征
- 2️⃣ ApkCheckPack(推荐)
- apkpackdata.json
- 支持的功能
- 使用说明
- 3️⃣ ApkScan-PKID
- 📖 参考资料
🛫 导读
开发环境
版本号 | 描述 | |
---|---|---|
文章日期 | 2024-03-24 | |
操作系统 | Win11 - 22H2 | 22621.2715 |
node -v | v20.10.0 | |
npm -v | 10.2.3 | |
夜神模拟器 | 7.0.5.8 | |
Android | 9 | |
python | 3.9.9 | |
frida | 16.2.1 | |
frida-tools | 12.3.0 | |
objection | 1.11.0 | |
1️⃣ 混淆加壳简介
混淆加壳技术的演变过程
Android混淆加壳技术的演变过程可以追溯到Android应用程序开发的早期阶段。这些技术的发展旨在保护应用程序的
代码
和资源
,防止被逆向工程师轻易分析和篡改。以下是Android混淆加壳技术演变的主要阶段:
- 基础混淆技术: 初期的Android混淆技术主要包括基础的代码混淆,如重
命名类、方法、变量名称
等,以增加代码的复杂性和难度,使得逆向工程变得更加困难。- 资源混淆: 随着Android应用程序中资源文件的重要性增加,资源混淆技术被引入以保护资源文件的完整性和机密性。这些技术包括资源文件的
重命名、加密、压缩
等,以防止资源文件被轻易访问和解析。- 动态加载技术: 动态加载技术将应用程序的部分代码或资源
延迟加载
到运行时,以减少应用程序的静态分析难度。这些技术包括使用反射
、动态类加载器
等,使得应用程序的部分逻辑变得更加难以分析。- 加壳技术: 加壳技术是一种将原始应用程序的代码和资源封装在一个加密的外壳中,并在运行时解密和加载的技术。加壳技术不仅可以保护应用程序的代码和资源,还可以添加额外的安全检测和防护功能,如代码完整性验证、反调试、反动态分析等。
- 虚拟化技术: 虚拟化技术将应用程序的部分代码或资源转换为
虚拟指令集
或虚拟机指令
,使得应用程序的逻辑更加难以理解和分析。这些技术可以在运行时动态解析和执行虚拟指令,从而增加了应用程序的安全性和反逆向能力。- 自定义加密算法: 一些高级加壳工具和服务提供商开始采用自定义加密算法来保护应用程序的代码和资源,使得解密和逆向分析变得更加困难。
综上所述,Android混淆加壳技术在保护应用程序安全方面经历了从基础混淆到加壳、虚拟化以及自定义加密算法等多个阶段的演变,以应对不断增长的逆向工程挑战和安全威胁。
常见加固厂商及特征
以下是一些常见的Android加壳厂商及其特征,以及它们可能产生的特征文件清单:
加壳厂商 | 特征 | 特征文件清单 |
---|---|---|
Qihoo 360加固 | 代码混淆、资源加密、DEX文件优化、反调试、反反编译、防注入等 | libjiagu.so libjiagu_x86.so libjiagu.dat |
腾讯乐固 | 代码混淆、资源加密、DEX加密、实时反病毒扫描、加固报告生成等 | libBugly.so libxgVipSecurity.so libshella-xxxx.so |
百度加固 | 代码混淆、资源加密、DEX优化、动态检测和防御、安全风险评估等 | libbaiduprotect.so libbaiduprotect.so libbaiduprotect_art.so baiduprotect.jar baiduprotect1.jar |
阿里聚安全 | 代码混淆、资源加密、DEX优化、应用加固评估、漏洞修复建议等 | libsgmain.so libfakejni.so libsgmain.so libzuma.so libmobisec.so |
爱加密 | 代码混淆、资源加密、DEX加密、实时防御、智能修复等 | libexec.so libexecmain.so libijmDataEncryption.so ijiami3.ajm libexecv3.so |
加固平台还有很多,以后也会一直增加新的平台和方案,目前比较完整的可以参考https://github.com/moyuwa/ApkCheckPack/blob/main/apkpackdata.json
2️⃣ ApkCheckPack(推荐)
ApkCheckPack大概是加固规则最全的开源工具。
将能收集到的加固特征汇总整理,支持40个厂商的加固检测
apkpackdata.json
ApkCheckPack规则保存在apkpackdata.json文件中,配置说明如下:
sopath 绝对路径的特征so
soname 仅特征so文件名
other 其他特征文件、字符串
soregex 对有版本号的特征so库,使用正则匹配
支持的功能
ApkCheckPack支持以下四种方式的特征检测:
- 特征so库扫描:通过对比加固特征so库名/路径,判断是否有加固
- 校验签名:校验V2签名,判断是否存在Janus漏洞
- 密钥泄露:扫描Apk文件内容,匹配是否有密钥字符串
- 反环境检测:扫描D ex文件搜索是否有Root、模拟器检测
使用说明
ApkCheckPack是通过go编写的程序,官网支持release版本。目前版本为
20240130
,可以在github下载:《https://github.com/moyuwa/ApkCheckPack/releases》,也可以通过本节绑定资源获取。
ApkCheckPack使用很简单,直接在命令行中通过指定目标apk即可使用:
除了命令行外,还有很多基于该开源工具编写的GUI工具,不过版本太老了,有兴趣的可以尝试一下:
- https://github.com/tongchewy/apkscan-pkid-v2.0
- https://github.com/0neOfU4/apkscan-pkid-v2.1
3️⃣ ApkScan-PKID
ApkScan-PKID是一个用于Android应用程序加壳检测的工具。PKID代表"Packaged Known Input/Output Detection",即打包已知输入/输出检测。这个工具主要用于检测APK文件是否被加壳,并尝试识别加壳类型。
下载地址
- Windows版下载地址:https://www.jb51.net/softs/603472.html#downintro2
- Java版下载地址:https://pan.baidu.com/s/1rDfsEvqQwhUmep1UBLUwSQ 密码: wefd
使用说明:
通过打开文件、或者拖拽到应用上,稍等片刻即可检测出结果:
ps:
- 整体来说,软件版本过旧,检测结果跟不上时代了,不推荐使用。
- Java版的需要用到Java环境,请自行安装。
📖 参考资料
- ApkCheckPack https://github.com/moyuwa/ApkCheckPack
- objection地址:https://github.com/sensepost/objection
- android黑科技系列——Apk的加固(加壳)原理解析和实现 https://www.cnblogs.com/chenxd/p/7820087.html
ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。