【Frida】【Android】 工具篇:查壳工具大赏

🛫 系列文章导航

🛫 导读

开发环境

版本号 描述
文章日期 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混淆加壳技术演变的主要阶段:

  1. 基础混淆技术: 初期的Android混淆技术主要包括基础的代码混淆,如重命名类、方法、变量名称等,以增加代码的复杂性和难度,使得逆向工程变得更加困难。
  2. 资源混淆: 随着Android应用程序中资源文件的重要性增加,资源混淆技术被引入以保护资源文件的完整性和机密性。这些技术包括资源文件的重命名、加密、压缩等,以防止资源文件被轻易访问和解析。
  3. 动态加载技术: 动态加载技术将应用程序的部分代码或资源延迟加载到运行时,以减少应用程序的静态分析难度。这些技术包括使用反射动态类加载器等,使得应用程序的部分逻辑变得更加难以分析。
  4. 加壳技术: 加壳技术是一种将原始应用程序的代码和资源封装在一个加密的外壳中,并在运行时解密和加载的技术。加壳技术不仅可以保护应用程序的代码和资源,还可以添加额外的安全检测和防护功能,如代码完整性验证、反调试、反动态分析等。
  5. 虚拟化技术: 虚拟化技术将应用程序的部分代码或资源转换为虚拟指令集虚拟机指令,使得应用程序的逻辑更加难以理解和分析。这些技术可以在运行时动态解析和执行虚拟指令,从而增加了应用程序的安全性和反逆向能力。
  6. 自定义加密算法: 一些高级加壳工具和服务提供商开始采用自定义加密算法来保护应用程序的代码和资源,使得解密和逆向分析变得更加困难。

综上所述,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环境,请自行安装。

📖 参考资料

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

相关推荐

  1. 【toos】工具

    2024-04-07 07:00:01       32 阅读
  2. 工具(开发利器)

    2024-04-07 07:00:01       25 阅读
  3. iOS-工程调试SDK集成方bug

    2024-04-07 07:00:01       40 阅读
  4. 【DevOps工具】LDAP GUI管理工具

    2024-04-07 07:00:01       37 阅读
  5. 人工智能迷惑行为

    2024-04-07 07:00:01       45 阅读
  6. 人工智能迷惑行为

    2024-04-07 07:00:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 07:00:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 07:00:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 07:00:01       82 阅读
  4. Python语言-面向对象

    2024-04-07 07:00:01       91 阅读

热门阅读

  1. JVM总结

    2024-04-07 07:00:01       32 阅读
  2. MQTT面试题

    2024-04-07 07:00:01       28 阅读
  3. leetcode热题HOT 23. 合并 K 个升序链表

    2024-04-07 07:00:01       40 阅读
  4. [高考] 数理化

    2024-04-07 07:00:01       32 阅读
  5. centos 安装 stable-diffusion 详细流程

    2024-04-07 07:00:01       35 阅读
  6. QT智能指针

    2024-04-07 07:00:01       40 阅读