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

🛫 系列文章导航

  • 【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.rhkb.cn/news/299787.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出 -- 系统架构之负载均衡Nginx反向代理

一、Nginx反向代理-负载均衡 首先通过SpringBootFreemarker快速搭建一个WEB项目:springboot-web-nginx,然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下: Controller public class IndexNginxControl…

【React】React知识要点记录

描述UI 万物皆组件 为什么多个 JSX 标签需要被一个父元素包裹? 切勿将数字放在 && 左侧 React 中为什么需要 key? React 为何侧重于纯函数? 渲染树 模块依赖树 添加交互 React如何传递事件处理函数? React 如何知道返回哪个 sta…

JUC_1

进程 概述 进程:程序是静止的,进程实体的运行过程就是进程,是系统进行资源分配的基本单位 进程的特征:并发性、异步性、动态性、独立性、结构性 线程:线程是属于进程的,是一个基本的 CPU 执行单元&#x…

post请求爬虫入门程序

<!--爬虫仅支持1.8版本的jdk--> <!-- 爬虫需要的依赖--> <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version> </dependency><!-- 爬虫需…

Python--Django--说明

Django 是基于python 的 Web 开发框架. &nsbp;   Web开发指的是开发基于B/S 架构, 通过前后端的配合, 将后台服务器上的数据在浏览器上展现给前台用户的应用. &nsbp;   在早期, 没有Web框架的时候, 使用 Python CGI 脚本显示数据库中的数据. Web框架致力于解决一些…

解锁网络安全新境界:雷池WAF社区版让网站防护变得轻而易举!

网站运营者的救星&#xff1a;雷池WAF社区版 ️ 嘿朋友们&#xff01;今天我超级激动要跟你们分享一个神器——雷池WAF社区版。这个宝贝对我们这帮网站运营者来说&#xff0c;简直就是保护伞&#xff01; 智能语义分析技术&#xff1a;超级侦探上线 先说说为啥我这么稀饭它。雷…

WPS二次开发专题:WPS SDK实现文档打印功能

作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 在办公场景或者家教场景中经常碰到需要对文档进行打印…

idea导入eclipse项目记录

eclipse虽然是免费的但是着实难用(可能是自身不熟悉&#xff09;&#xff0c;就连看class的源代码还得去市场下个插件&#xff0c;结果还搜索不到。对于习惯 IntelliJ 全家桶的的用户来说&#xff0c;用eclipse真的太痛苦。所以迁移eclipse到idea。 本来想着会有困难&#xff…

Spark编程基础

一、RDD入门 1.RDD是什么&#xff1f; RDD是一个容错的、只读的、可进行并行操作的数据结构&#xff0c;是一个分布在集群各个节点中的存放元素的集合&#xff0c;即弹性分布式数据集。 2.RDD的三种创建方式 第一种是将程序中已存在的集合&#xff08;如集合、列表、数组&a…

ThingsBoard通过MQTT发送遥测数据

MQTT基础 客户端 MQTT连接 遥测上传API 案例 MQTT基础 MQTT是一种轻量级的发布-订阅消息传递协议&#xff0c;它可能最适合各种物联网设备。 你可以在此处找到有关MQTT的更多信息&#xff0c;ThingsBoard服务器支持QoS级别0&#xff08;最多一次&#xff09;和QoS级别1&…

2024-2029年中国曲轴行业市场深度调研及发展前景预测报告

我国曲轴行业总产值有所增长 福达股份为头部企业 曲轴是发动机、内燃机中的重要零部件&#xff0c;可以承受连杆传来的力&#xff0c;并将其转变为转矩&#xff0c;通过曲轴输出后&#xff0c;带动发动机上其他附件进行工作。随着生产技术逐渐进步&#xff0c;曲轴的种类逐渐增…

第十二天--二维数组的彻底解刨--地址

1.二维数组我们用父子的地址来称呼二维数组的地址 比如arr[3][4] 这里的arr是二维数组的首地址&#xff0c;也是父数组的首地址&#xff0c;也是子数组的首地址 arr1父数组的地址偏移1&#xff0c;实际上是偏移了4*416个字节 arr[0]是子数组的首地址&#xff0c;arr[0]1是子数…

AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

AIGC实战——ProGAN 0. 前言1. ProGAN2. 渐进式训练3. 其他技术3.1 小批标准差3.2 均等学习率3.3 逐像素归一化 4. 图像生成小结系列链接 0. 前言 我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。GAN 的模型架构和训练过程具有…

NzN的数据结构--实现双向链表

上一章中&#xff0c;我们学习了链表中的单链表&#xff0c;那今天我们来学习另一种比较常见的链表--双向链表&#xff01;&#xff01; 目录 一、双向链表的结构 二、 双向链表的实现 1. 双向链表的初始化和销毁 2. 双向链表的打印 3. 双向链表的头插/尾插 4. 双向链表的…

数据如何才能供得出、流得动、用得好、还安全

众所周知&#xff0c;数据要素已经列入基本生产要素&#xff0c;同时成立国家数据局进行工作统筹。目前数据要素如何发挥其价值&#xff0c;全国掀起了一浪一浪的热潮。 随着国外大语言模型的袭来&#xff0c;国内在大语言模型领域的应用也大放异彩&#xff0c;与此同时&#x…

【Web】纯萌新的BUUCTF刷题日记Day1

目录 [RoarCTF 2019]Easy Java [网鼎杯 2018]Fakebook [CISCN2019 华北赛区 Day2 Web1]Hack World [BJDCTF2020]The mystery of ip [网鼎杯 2020 朱雀组]phpweb [BSidesCF 2020]Had a bad day [BJDCTF2020]ZJCTF&#xff0c;不过如此 [BUUCTF 2018]Online Tool [GXYCTF…

数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;数据分析系统化教学&#xff0c;零基础到进阶实战 景天的主页&#xff1a;景天科技苑 文章目录 Streamlit什么是streamli…

刷题之Leetcode283题(超级详细)

283.移动零 283. 移动零https://leetcode.cn/problems/move-zeroes/ 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nu…

Rasa X 聊天机器人(部署篇)

一、前言 我们先来了解下 Rasa 是什么&#xff1f;Rasa 是一个开源的自然语言处理 (NLP) 框架&#xff0c;用于构建基于文本的对话系统&#xff0c;如聊天机器人和语音助手。接下来再了解下 Rasa X 是什么&#xff1f;Rasa X 是建立在 Rasa 框架之上的图形用户界面 (GUI) 工具…

.NET8 和 Vue.js 的前后端分离

在.NET 8中实现前后端分离主要涉及到两个部分&#xff1a;后端API的开发和前端应用的开发。后端API通常使用ASP.NET Core来构建&#xff0c;而前端应用则可以使用任何前端框架或技术栈&#xff0c;比如Vue.js、React或Angular等。下面是一个简化的步骤指南&#xff0c;帮助你在…