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

news2024/11/18 12:37:35

🛫 系列文章导航

  • 【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 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
夜神模拟器7.0.5.8
Android9
python3.9.9
frida16.2.1
frida-tools12.3.0
objection1.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环境,请自行安装。

📖 参考资料

  • ApkCheckPack https://github.com/moyuwa/ApkCheckPack
  • objection地址:https://github.com/sensepost/objection
  • android黑科技系列——Apk的加固(加壳)原理解析和实现 https://www.cnblogs.com/chenxd/p/7820087.html

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1573502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【最大值线段树】【二分查找】2286. 以组为单位订音乐会的门票

本文涉及知识点 线段树 最大值线段树 二分查找算法合集 LeetCode2286. 以组为单位订音乐会的门票 一个音乐会总共有 n 排座位,编号从 0 到 n - 1 ,每一排有 m 个座椅,编号为 0 到 m - 1 。你需要设计一个买票系统,针对以下情况…

简约风个人导航页源码

个人导航页源码,可以用作网站地址发布页,记事本修改html文件里的内容即可 源码下载 简约风个人导航页源码

总结:C/C++中程序内存区域划分

C/C程序内存分配的几个区域: 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时 这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼&…

2. Django配置信息

第2章 Django配置信息 Django的配置文件settings.py用于配置整个网站的环境和功能, 核心配置必须有项目路径, 密钥配置, 域名访问权限, App列表, 中间件, 资源文件, 模板配置, 数据库的连接方式.* 项目运行时, 如果修改代码, 项目会自动检测发现改动后会重新运行, 除非报错否…

postgresql数据库|数据整合的好工具--Oracle-fdw的部署和使用

概述 Oracle_fdw 是一种postgresql外部表插件,可以读取到Oracle上面的数据。是一种非常方便且常见的pg与Oracle的同步数据的方法 Oracle_fdw 适用场景: Oracle_fdw 是一个开源的 Foreign Data Wrapper (FDW),主要用于在 PostgreSQL 数据库中…

最新版手机软件App下载排行网站源码/App应用商店源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 一款简洁蓝色的手机软件应用app下载排行,app下载平台,最新手机app发布网站响应式织梦模板。 主要有:主页、app列表页、app介绍详情页、新闻资讯列…

软考高级架构师:嵌入式数据库概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

33. UE5 RPG使用增强输入激活GameplayAbility(三)

在前面的文章,我们实现了使用GameplayTag和InputAction的对应绑定的数据,并且添加到了增强输入映射的上下文中,实现了通过按键打印对应的GameplayTag,这只是我们基础需要制作的。目的主要是为了实现在GameplayAblity上面设置对应的…

物联网系统设计 8

1 规划中小型LoRa 中小型分时复用,大型项目需要学习LoRaWAN 1.1 通信记录 1.2 节点能耗 1278芯片 满功率20DMB,增加PA,发送功率 30 DBM 内置天线柔性 棒状 3db 203 休眠、发生、接收 计算链路预算,工作电流,工…

高效编写 kubernetes-YAML文件

1. YAML语法格式 2. kubernetes YAML 字段 3. 得力助手:help,dry-run,explain 4. vscode 工具生成和编写 5. YAML语法检查系统 YAML文件主要是编写 k8s 的一些资源的,对象(资源里面包含对象),字段等,哪些字段,字段…

出门一笑, “栈” 落江横 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

设计模式——组合模式08

组合模式:把类似对象或方法组合成结构为树状的设计思路。 例如部门之间的关系。 设计模式,一定要敲代码理解 抽象组件 /*** author ggbond* date 2024年04月06日 08:54* 部门有:二级部门(下面管三级部门) 三级部门 &a…

12.自定义的多帧缓存架构

1.简介 在数字图像处理中,经常需要用到的一个架构就是多帧缓存。视频流中需要用到多帧缓存来防止帧撕裂现象,图像处理中也需要帧差法来做移动目标检测。因此一个多帧缓存架构在图像系统的设计中是十分重要的。 2.多帧缓存 在视频流中,通常不…

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言: 在当今数字化的世界中,网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁,不断地演变和升级,给个人和组织带来了严重的损失和困扰。近期,一种名为.jayy的勒索病毒引起了广…

java数据结构与算法刷题-----LeetCode415. 字符串相加

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 模拟小学加法运算 模拟小学加法运算 解题思路:时间复…

【Java设计模式】创建型——工厂方法模式

目录 背景/问题解决方案思路方案 图解简单工厂模式/静态工厂模式工厂方法模式 代码示例:图形工厂意图主要解决何时使用如何解决关键代码 工厂模式的优点工厂模式的缺点使用场景注意事项 背景/问题 在软件设计中,我们经常遇到需要创建不同类型对象的情况…

如何理解模板?

文章目录 1. 泛型编程2.函数模板2.1函数模板概念2.1函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则 3.类模板3.1类模板的定义格式3.2类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& right)…

Vue中如何使用Tailwind CSS样式?多次引用不成功?具体步骤怎么做?

一、安装Tailwind CSS和依赖 在你的Vue项目中安装Tailwind CSS及其依赖。你可以使用npm或yarn来安装。 npm install tailwindcsslatest postcsslatest autoprefixerlatest # 或者yarn add tailwindcsslatest postcsslatest autoprefixerlatest 二、初始化Tailwind CSS np…

【事务注解✈️✈️】@Transactional注解在不同参数配置下的功能实现

目录 前言 使用场景 1.单个方法层面 2.类级别使用 3.指定异常回滚 4.跨方法调用事务管理 5.只读事务 ​ 6.设置超时时间,超时则自动回滚 7.隔离级别设置 章末 前言 小伙伴们大家好,ACID(原子性,一致性,隔离…

【WEEK6】 【DAY1】DQL查询数据-第一部分【中文版】

2024.4.1 Monday 目录 4.DQL查询数据(重点!)4.1.Data Query Language查询数据语言4.2.SELECT4.2.1.语法4.2.2.实践4.2.2.1.查询字段 SELECT 字段/* FROM 表查询全部的某某查询指定字段 4.2.2.2.给查询结果或者查询的这个表起别名&#xff08…