当前位置: 首页 > news >正文

Inspeckage,动态分析安卓 APP 的 Xposed 模块

前提

我在不久前写过《 APP 接口拦截与参数破解》的博文;最近爬取APP数据时又用到了相关技术,故在此详细描述一下 Inspeckage 的功能。(环境准备本文不再赘述)

功能

在电脑上访问 http://127.0.0.1:8008 就可以看到 inspeckage 的 web 界面了。

在这里插入图片描述

点击页面,开启实时更新为 on,然后在模拟器中点击 LAUNCH APP,在页面中刷新就可以看到数据了。动态刷新开关打开,webserver就会加载手机端的所有数据。(这个开关并不是控制手机端工具的开关,仅仅是webserver是否动态刷新数据的开关。查看数据时,可以关闭动态刷新,否则展开数据会不断的被收起,无法正常查看)

(如果 web 页面没有输出结果,查看 APP is running 是否为 true,Logcat 左边分那个自动刷新按钮是否开启)

在这里插入图片描述

如图所示,inspeckage 提供了对所分析 apk 的一些基本信息,提供直接下载 apk 到电脑,截图手机屏幕等辅助功能,最核心的功能是监控 share preferences,加解密函数的使用,http 访问等。下面一一分析。

在这里插入图片描述

使用 logcat 功能需要先转发端口到本地:adb forward tcp:8887 tcp:8887。

点击 start,再点 connect 就可以在网页中实时查看该 app 的 logcat 输出。

在这里插入图片描述

Tree view 按钮可以实时浏览 app 的数据目录并直接下载文件到本地。

在这里插入图片描述

如果采用 inspeckage 来分析的话,直接在 crypto 记录中就可以看到。

在这里插入图片描述

由于这个apk 采用的 md5 方法是写在 so 中的,所以 inspeckage 的 hash 记录中并没有相关的记录。这个可以采用 hook 自定义函数的方式来解决。

反编译 apk,找到调用 so 的方法为 getPart2,同理其实也可以手动 hook 住 getPart1。

在这里插入图片描述

设置好 hook 的方法后,重启 app 生效。

在这里插入图片描述

在 hook 的记录中可以看到 getPart2 的返回值。Inspeckage 在动态分析 apk 的过程可以快速获得一些信息,节省分析的时间。

使用 Inspeckage,用户可以获取大量关于应用程序行为的信息:

模块说明
Logcat实时查看该app的logcat输出
Tree View可以实时浏览app的数据目录并直接下载文件到本地
Package Information应用基本信息(组件信息、权限信息、共享库信息)
Shared PreferencesLOG:app XML文件读写记录;Files:具体XML写入内容
Serialization反序列化记录
Crypto常见加解密记录(KEY、IV值)
Hash常见的哈希算法记录
SQLiteSQLite数据库操作记录
HTTPHTTP网络请求记录
File System文件读写记录
Misc.调用Clipboard,URL.Parse()记录
WebView调用webview内容
IPC进程之间通信记录
+Hooks运行过程中用户自定义Hook记录

1、信息收集

获取APP基本信息(如上图所示)

【1】权限:请求权限(Requested Permissions)、自定义权限(APP Permissions)

【2】组件:导出和非导出的组件(Activity、Service、Broadcast Receiver、Content Provider)

【3】共享库(Shared Libraries)

【4】标志位:Debuggable,Allow Backup

【5】其他:UID,GIDs,Package等

l 请求权限
l App权限
l 共享库
l 导出和非导出的Activity,内容提供其,广播接收器和服务
l 检查该应用程序是否可调式
l 版本,UID和GID

2、Hooks

使用 Hooks,用户可以实时查看应用程序的行为

【1】Shared Preferences(日志和文件)

【2】Serialization(序列化)

【3】Crypto(加密)、Hash

【4】SQLite数据库

【5】HTTP、WebView、IPC等

【6】Hooks(自定义HOOK)

l 共享首选项(日志和文件)
l 序列化
l 加密
l 哈希表
l SQLite数据库
l HTTP(HTTP代理工具是最好的选择)
l 杂项(剪贴板,URL.Parse())
l WebView
l IPC

使用 Logcat 查看日志的功能,需要先转发 8887 端口到本地。

在这里插入图片描述

点击 Start,再点 connect 就可以在网页中实时查看 app 的 logcat 输出。

在这里插入图片描述

+Hooks 模块中,可对被测 APP 进行 hook,很方便。

在这里插入图片描述

在这里插入图片描述

3、其他操作

使用 Xposed,用户可以执行一系列操作,例如开启非输出的Activity

l 开启任意Activity(输出和非输出)
l 调用提供器(输出和非输出)
l 禁用FLAG_SECURE
l 取消SSL选项
l 开启、停止或重启应用程序

4、附加部分

l APK下载
l 查看应用程序的目录树
l 下载应用程序的文件
l 下载hooks生成的文本文件格式的输出
l 屏幕截图

5、配置

设置选项中,提供了ssl uncheck,设置代理等。经过测试发现 SSL uncheck 效果一般。https 流量依然很多抓不到。

尽管该工具有一些连接 HTTP 库的 hooks,使用外部代理工具仍然是分析应用程序流量的最好的选择。

在 Inspeckage 中,用户可以:

l 添加连接目标应用的代理
l 启用和禁用代理
l 在ARP表中添加条目

相关文章:

Inspeckage,动态分析安卓 APP 的 Xposed 模块

前提 我在不久前写过《 APP 接口拦截与参数破解》的博文;最近爬取APP数据时又用到了相关技术,故在此详细描述一下 Inspeckage 的功能。(环境准备本文不再赘述) 功能 在电脑上访问 http://127.0.0.1:8008 就可以看到 inspeckage…...

Windows详细安装和彻底删除RabbitMQ图文流程

RabbiitMQ简介 RabbitMQ是实现了高级消息队列协议(AMQP:Advanced Message Queue Protocol)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而聚类和故障转移是构建在开放…...

自定义表单规则

const checkF (rule, value, callback) > { if (!value || value ) { callback(new Error(请输入XXXX)); } else { var params new URLSearchParams(); params.append(参数名, value); axios.post(url, params).then(operation > { if (operation && operatio…...

Spring 中 Bean 的作用域有哪些?Spring 中有哪些方式可以把 Bean 注入到 IOC 容器?

Spring 框架里面的 IOC 容器,可以非常方便的去帮助我们管理应用里面的Bean 对象实例。我们只需要按照 Spring 里面提供的 xml 或者注解等方式去告诉 IOC 容器,哪些 Bean需要被 IOC 容器管理就行了。 生命周期 既然是 Bean 对象实例的管理,那意…...

【01低功耗蓝牙开发】

低功耗蓝牙 低功耗蓝牙背后有个基本的概念:任何事物都有状态。状态可以是任何东西,如温度,电池状态等越简单的系统越便宜,开发更迅速,包含更少的错误,更加强健。一种技术想要获得成功必须降低成本。服务器…...

【Java 进阶篇】Java BeanUtils 使用详解

Java中的BeanUtils是一组用于操作JavaBean的工具,它允许你在不了解JavaBean的具体内部结构的情况下,访问和修改其属性。本文将详细介绍Java BeanUtils的使用,包括如何获取和设置JavaBean的属性,复制属性,以及如何处理嵌…...

YugaByteDB -- 全新的 “PostgreSQL“ 存储层

文章目录 0 背景1 架构1.1 Master1.2 TServer1.3 Tablet 2 读写链路2.1 DDL2.2 DML2.3 事务 3 KEY 的设计4 Rocksdb 在 YB 中的一些实践总结 0 背景 YugaByteDB 的诞生也是抓住了 spanner 推行的NewSQL 浪潮的尾巴,以 PG 生态为基础 用C实现的 支持 SQL 以及 CQL 语…...

众佰诚:抖音上做生意卖什么好

随着科技的发展,越来越多的人开始利用网络平台进行创业。抖音作为目前最火的短视频平台之一,也成为了许多人选择的创业渠道。那么,在抖音上做生意卖什么好呢? 首先,我们可以考虑一些具有创新性和独特性的产品。例如,手…...

【Redis】环境配置

环境配置 Linux版本: Ubuntu 22.04.2 LTS 下载redis sudo apt install redis 启动redis redis-server 输入redis-server启动redis竟然报错了,原因是redis已经启动,网上大多数的解决方案如下: ps -ef | grep -i redis 查询redi…...

设计交换机原理图前应先理清的框图

一、系统布局图 需重点考虑“外壳、电源、风扇、主板(包含MAC、CPU、PHY)、指示灯、管理网口/串口、电口/光口等连接器”在整机中的大致位置,在系统布局图中予以体现。 二、系统框图 (1)电源整体框图; &…...

Bellman-ford 贝尔曼-福特算法

Bellman-ford算法可以解决负权图的单源最短路径问题 --- 它的优点是可以解决有负权边的单源最短路径问题,而且可以判断是否负权回路 它也有明显的缺点,它的时间复杂度O(N*E)(N是点数 , E是边数&#xff09…...

Docker数据目录迁移解决方案

前置工作 使用以下命令查询当前docker数据目录安装路径: docker info | grep "Docker Root Dir"下文以 /home/rain/docker 这个路径作为要迁移的新 Docker 安装(存储)目录 迁移方案 方法一:软链接 停掉Docker服务: systemctl…...

公共字段自动填充、菜品管理

一、公共字段填充 1.1、问题分析 1.2、实现思路 1.3、代码开发 1.3.1、自定义注解 import com.sky.enumeration.OperationType;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import jav…...

前端面试 面试多起来了

就在昨天 10.17 号,同时收到了三个同学面试的消息。他们的基本情况都是双非院校本科、没有实习经历、不会消息中间件和 Spring Cloud 微服务,做的都是单体项目。但他们投递简历还算积极,从今年 9 月初就开始投递简历了,到现在也有一个多月了。 来看看,这些消息。 为…...

Qt常见类名关系整理

1、QAbstractItemModel与QAbstractItemView 模型的基类: The QAbstractItemModel class provides the abstract interface for item model classes. Inherited By: QAbstractListModel,QAbstractProxyModel,and QAbstractTableModel 视图的基类: The QAbstractIte…...

YOLO8实战:yolov8实现行人跟踪计数

本篇文章首先介绍YOLOV8实现人流量跟踪计数的原理,文末附代码 引言:行人跟踪统计是智能监控系统中的重要功能,可以广泛应用于人流控制、安全监控等领域。传统的行人跟踪算法往往受到光照、遮挡等因素的干扰,难以实现准确跟踪。随着深度学习技术的发展,目标检测模型逐渐成为…...

shell脚本学习-2

文章目录 一、shell参数传递二、shell中的特殊变量三、shell中的函数四、shell函数中的参数 一、shell参数传递 运行 Shell 脚本文件时我们可以给它传递一些参数,这些参数在脚本文件内部可以使用$n的形式来接收,例如,$1 表示第一个参数&…...

web3:智能合约浏览器版本的 IDE - remix 使用教程

如果你是一位web3行业的从业者,那么智能合约一定是要接触的,这里我们就智能合约浏览器版本的 IDE-remix来介绍一下,及简单的使用操作 目录 Remix简介官方网址语言设置使用编辑合约编译合约部署合约测试验证Remix简介 Remix 是一个开源的 Solidity 智能合约开发环境,是一款…...

信号类型(通信)——QPSK、OQPSK、IJF_OQPSK调制信号

系列文章目录 《信号类型(通信)——仿真》 《信号类型(通信)——QAM调制信号》 文章目录 前言 一、QPSK通信调制信号 1.1、原理 1.2、仿真 二、OQPSK通信调制信号 1.1、原理 1.2、仿真 三、IJF_OQPSK通信调制信号 1.1、…...

常用压缩文件操作函数总结

常用压缩文件操作函数总结 1- 解压gz文件 gzip -d xx.gz 2- 函数 1 打开文件 函数名: gzopen 功能描述: 打开名为file的gz文件 参数: file:文件名 mode:打开模式 r 返回值: 打开的gz文件描述符 gzFile gzopen(const char *file, const char…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...