安卓逆向案例——X酷APP逆向分析
X酷APP逆向分析
这里介绍一下两种不同的挂载证书的方法。
chls.pro/ssl无法在浏览器中下载证书是什么原因
解决方法:
法一
1. 挂载系统分区为读写
使用正确的挂载点来挂载系统分区为读写:
su
mount -o remount,rw /dev/uijISjR/.magisk/block/system_root
2. 确认挂载成功
挂载成功后,可以通过以下命令确认系统分区是否已经挂载为读写:
mount | grep system_root
你应该看到类似于以下的输出,表示系统分区已经挂载为读写:
/dev/uijISjR/.magisk/block/system_root on /system type ext4 (rw,relatime,...)
3. 复制文件
挂载成功后,再次尝试复制文件:
cp /storage/emulated/0/HttpCanary/certs/87bc3517.0 /system/etc/security/cacerts/
4. 恢复系统分区为只读(可选)
为了安全起见,可以在操作完成后将系统分区恢复为只读:
mount -o remount,ro /dev/uijISjR/.magisk/block/system_root
示例操作
以下是完整的操作步骤:
-
获取root权限:
su
-
挂载系统分区为读写:
mount -o remount,rw /dev/uijISjR/.magisk/block/system_root
-
确认挂载成功:
mount | grep system_root
-
复制文件:
cp /storage/emulated/0/HttpCanary/certs/87bc3517.0 /system/etc/security/cacerts/
-
恢复系统分区为只读(可选):
mount -o remount,ro /dev/uijISjR/.magisk/block/system_root
法二
报错显示
这里要用magisk的插件movecertificate加载后重启手机。才能安装
抓包检测?
分析请求参数
POST /login_jsonp_active.do HTTP/1.1
common: {"uniqueCode":"10266834-3536-4be9-90c9-33f76672ed4f","appId":"com.zcool.community","channel":"zcool","mobileType":"android","versionCode":4638}
BaseInfo: {"uniqueCode":"10266834-3536-4be9-90c9-33f76672ed4f","appId":"com.zcool.community","channel":"zcool","mobileType":"android","versionCode":4638}
Content-Type: application/x-www-form-urlencoded
Content-Length: 608
Host: passport.zcool.com.cn
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: randomcodetoken=9c55a4bb741f036053196603b2530946
User-Agent: okhttp/3.12.0app=android&key=dTdlMmtGQjZIQk45Y05ZYlRUbXhTQlJTQ0M1NHBRMUdFYXFuYU5Ceko2dnpBWHZXSjlKSVpEQXFT%250ARmZCZWZCSCtKc3RHNmUzdGxKbQpPb0RkTmRsL3JGQ1QvTnNxVy90VkV0UXVEcEZDVE1tMkRIenJN%250Aa1VVSmdENC9ScW9OUU9NOEpabGNpZmVhckJRcU9IdUdEai9Mb2ppCjVSa1FVZkU5RjJ4RUdmTFYr%250ANFA2a215czV3bmVBbmR5QTRidmNNUHVDTWRNWk0rcmdlWDJmOTdtWDlZQUFXRHRQeTJvOHZSVDJp%250AdDAKNGxWK2hmdFpGREpiUGZ2Y0pOSUl6Q3gyZjdmQzVkRXNqMlhFZWNNS1FFVWZBK0xtdjlRMTFK%250AdnlsK0dveFdxLzVNMjhJeUJDRGQraQo1MGZOcGRJSXpDeDJmN2ZDNWRFc2oyWEVlY09FK1pQVHNm%250ANy9FUVpQbFFXSUhSc0RKODRTN1lIZnpQckN3bThOcjN4L3dQS3VyWE5sCmlBNk9ZaEdoVVJMS2Fx%250Abz0KP2tleUlkPTE%253D%250A
使用命令frida -UF -l hook_encrypt.js -o log.txt
可以搜索到我随机输入的账号值。但是不能直接搜索到key,说明key被加密了。
加密模式是ECB,Key
DESede/ECB/PKCS5Padding doFinal data Utf8: {"password":"ghk","common":{"uniqueCode":"10266834-3536-4be9-90c9-33f76672ed4f","appId":"com.zcool.community","channel":"zcool","mobileType":"android","versionCode":4638},"appLogin":"https://www.zcool.com.cn/tologin.do","service":"https://www.zcool.com.cn","appId":"1006","username":"fhj"}
DESede/ECB/PKCS5Padding doFinal data Hex: 7b2270617373776f7264223a2267686b222c22636f6d6d6f6e223a7b22756e69717565436f6465223a2231303236363833342d333533362d346265392d393063392d333366373636373265643466222c226170704964223a22636f6d2e7a636f6f6c2e636f6d6d756e697479222c226368616e6e656c223a227a636f6f6c222c226d6f62696c6554797065223a22616e64726f6964222c2276657273696f6e436f6465223a343633387d2c226170704c6f67696e223a2268747470733a2f2f7777772e7a636f6f6c2e636f6d2e636e2f746f6c6f67696e2e646f222c2273657276696365223a2268747470733a2f2f7777772e7a636f6f6c2e636f6d2e636e222c226170704964223a2231303036222c22757365726e616d65223a2266686a227d
DESede/ECB/PKCS5Padding doFinal data Base64: eyJwYXNzd29yZCI6ImdoayIsImNvbW1vbiI6eyJ1bmlxdWVDb2RlIjoiMTAyNjY4MzQtMzUzNi00YmU5LTkwYzktMzNmNzY2NzJlZDRmIiwiYXBwSWQiOiJjb20uemNvb2wuY29tbXVuaXR5IiwiY2hhbm5lbCI6Inpjb29sIiwibW9iaWxlVHlwZSI6ImFuZHJvaWQiLCJ2ZXJzaW9uQ29kZSI6NDYzOH0sImFwcExvZ2luIjoiaHR0cHM6Ly93d3cuemNvb2wuY29tLmNuL3RvbG9naW4uZG8iLCJzZXJ2aWNlIjoiaHR0cHM6Ly93d3cuemNvb2wuY29tLmNuIiwiYXBwSWQiOiIxMDA2IiwidXNlcm5hbWUiOiJmaGoifQ==
DESede/ECB/PKCS5Padding doFinal result Hex: bbb7b690507a1c137d70d61b4d39b1481452082e78a50d4611aaa768d07327abf3017bd627d24864302a4857c179f047f89b2d1ba7b7b652663a80dd35d97fac5093fcdb2a5bfb5512d42e0e91424cc9b60c7ceb3245142600f8fd1aa835038cf096657227de6ab050a8e1ee1838ff2e88e2e5191051f13d176c4419f2d5fb83fa926cace709de0277720386ef70c3ee08c74c64cfab81e5f67fdee65fd6000160ed3f2da8f2f453da2b74e2557e85fb5914325b3dfbdc24d208cc2c767fb7c2e5d12c8f65c479c30a40451f03e2e6bfd435d49bf297e1a8c56abfe4cdbc2320420ddfa2e747cda5d208cc2c767fb7c2e5d12c8f65c479c384f993d3b1feff11064f9505881d1b0327ce12ed81dfccfac2c26f0daf7c7fc0f2aead7365880e8e6211a15112ca6aaa
DESede/ECB/PKCS5Padding doFinal result Base64: u7e2kFB6HBN9cNYbTTmxSBRSCC54pQ1GEaqnaNBzJ6vzAXvWJ9JIZDAqSFfBefBH+JstG6e3tlJmOoDdNdl/rFCT/NsqW/tVEtQuDpFCTMm2DHzrMkUUJgD4/RqoNQOM8JZlcifearBQqOHuGDj/Loji5RkQUfE9F2xEGfLV+4P6kmys5wneAndyA4bvcMPuCMdMZM+rgeX2f97mX9YAAWDtPy2o8vRT2it04lV+hftZFDJbPfvcJNIIzCx2f7fC5dEsj2XEecMKQEUfA+Lmv9Q11Jvyl+GoxWq/5M28IyBCDd+i50fNpdIIzCx2f7fC5dEsj2XEecOE+ZPTsf7/EQZPlQWIHRsDJ84S7YHfzPrCwm8Nr3x/wPKurXNliA6OYhGhURLKaqo=
base64加密的值是
dTdlMmtGQjZIQk45Y05ZYlRUbXhTQlJTQ0M1NHBRMUdFYXFuYU5Ceko2dnpBWHZXSjlKSVpEQXFTRmZCZWZCSCtKc3RHNmUzdGxKbU9vRGROZGwvckZDVC9Oc3FXL3RWRXRRdURwRkNUTW0yREh6ck1rVVVKZ0Q0L1Jxb05RT004SlpsY2lmZWFyQlFxT0h1R0RqL0xvamk1UmtRVWZFOUYyeEVHZkxWKzRQNmtteXM1d25lQW5keUE0YnZjTVB1Q01kTVpNK3JnZVgyZjk3bVg5WUFBV0R0UHkybzh2UlQyaXQwNGxWK2hmdFpGREpiUGZ2Y0pOSUl6Q3gyZjdmQzVkRXNqMlhFZWNNS1FFVWZBK0xtdjlRMTFKdnlsK0dveFdxLzVNMjhJeUJDRGQraTUwZk5wZElJekN4MmY3ZkM1ZEVzajJYRWVjT0UrWlBUc2Y3L0VRWlBsUVdJSFJzREo4NFM3WUhmelByQ3dtOE5yM3gvd1BLdXJYTmxpQTZPWWhHaFVSTEthcW89
通过逆向分析堆栈。发现是经过两次
这里有百分号可以判断是url编码。
解码后的数据还是包含百分号。所以还要再进行一次url编码
接码后的key值中出现了等号,只有在base64加密时出现位数不足的情况,会出现等号。
可以发现原始的key值经过base64编码后有经过两次url编码,才输出到请求中。
这也是Frida自吐框架的局限性。要自己去逆向分析。这里账号和密码还是明文,方便定位。实际的情况可能所有信息都被加密了,所以很难定位。
Frida自吐算法的局限性:
- 加密在java层,调用标准加密库,但是在加密前后对数据进行特殊处理(比如base64编码或者url编码等)
- 加密位置在so层,用C/C++写算法
- 或者加密在java层的自写算法
相关文章:

安卓逆向案例——X酷APP逆向分析
X酷APP逆向分析 这里介绍一下两种不同的挂载证书的方法。 chls.pro/ssl无法在浏览器中下载证书是什么原因解决方法: 法一 1. 挂载系统分区为读写 使用正确的挂载点来挂载系统分区为读写: su mount -o remount,rw /dev/uijISjR/.magisk/block/syste…...

创新案例|星巴克中国市场创新之路: 2025目标9000家店的挑战与策略
星巴克创始人霍华德舒尔茨:“为迎接中国市场的全面消费复苏,星巴克2025年推进9000家门店计划,将外卖、电商以及家享和外出场景咖啡业务纳入中国新一轮增长计划中。”在面临中国市场同店增长大幅下滑29%背景下,星巴克通过DTC用户体…...

计算机网络 MAC地址表管理
一、理论知识 1.MAC地址表:交换机使用MAC地址表来记录各MAC地址对应的端口,用于帧转发的目的。 2.老化机制:交换机会为每一条MAC地址表项设置老化时间,老化时间到期后未收到该MAC地址报文的表项将被删除,释放资源。 …...

【免费API推荐】:各类API资源免费获取【11】
欢迎来到各类API资源的免费获取世界!幂简集成为您提供了一个集合了各种免费API接口的平台。无论您是开发者、数据分析师还是创业者,都可以通过我们的平台轻松免费获取所需的API资源。幂简精心整理了各类API接口,涵盖了不同领域的需求…...

技术驱动会展:展位导航系统的架构与实现
随着会展行业的快速发展,大型会展中心面临着如何提升参展者体验、提高招商效率的挑战。针对客户反馈的展馆面积大、展位查找困难等问题,维小帮提出一套智慧会展导航解决方案,旨在通过先进的室内导航技术提升会展中心的运营效率和参展者的满意…...

适用于轨道交通专用的板卡式网管型工业以太网交换机
是网管型 CompactPCI板卡式冗余环网交换机。前面板带有6个 10/100/1000Base-T(X)M12接口。后面的CPCI接口有 8个10/100/1000Base-T (X) 以太网接口。 是特别为轨道交通行业EN50155标准要求而设计的坚固型交换机。它同时具有以下特性: ● 支持2线以太网距离扩展端口&…...

excel基本操作
excel 若要取消在数据表中进行的所有筛选 步骤操作: 单击“数据”选项卡。在“排序和筛选”组中,找到“清除”按钮。点击“清除”按钮。 图例: 将文本文件的数据导入到Excel工作表中进行数据处理 步骤: 在Excel中,…...
C++系统相关操作2 - 获取系统环境变量
1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 C 系统调用 环境变量 getenv 跨平台 2. sysutil.h #pragma once#include <cstdint> #include <string>namespace cutl {/*** brief Get an environment variable.** param na…...

适合小白学习的项目1906java Web智慧食堂管理系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目
一、源码特点 java Web智慧食堂管理系统是一套完善的信息管理系统,结合java 开发技术和bootstrap完成本系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstra…...

AI通用大模型不及垂直大模型?各有各的好
AI时代,通用大模型和垂直大模型,两者孰优孰劣,一直众说纷纭。 通用大模型,聚焦基础层,如ChatGPT、百度文心一言,科大讯飞星火大模型等,都归属通用大模型,它们可以解答…...

农产品价格信息系统小程序
一键掌握市场脉动 🌾 引言:为何关注农产品价格? 在当今社会,农产品价格的波动直接关系到农民的收入和消费者的生活成本。因此,及时、准确地掌握农产品价格信息,对于农民合理安排生产、消费者做出购买决策都…...

【LLM-多模态】高效多模态大型语言模型综述
一、结论写在前面 模型规模的庞大及训练和推理成本的高昂,限制了MLLMs在学术界和工业界的广泛应用。因此,研究高效轻量级的MLLMs具有巨大潜力,特别是在边缘计算场景中。 论文深入探讨了高效MLLM文献的领域,提供了一个全面的视角…...

ASP .Net Core创建一个httppost请求并添加证书
ASP .Net Core创建一个httppost请求并添加证书 创建.net Core程序,使用自签名证书,可以处理https的get和post请求。 创建证书 创建自签名证书的流程可以在这里查看: https://blog.csdn.net/GoodCooking/article/details/139815278创建完毕…...

Redis入门篇
目录 传送门一、前言二、NoSQL1、ont only sql,特点:2、NoSQL的四大分类: 三、Redis概念四、五大数据类型: 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品) SpringBoot3框架&#…...

变电站智能巡检机器人解决方案
我国拥有庞大的电网体系,变电站数量众多,且近年来快速增长。然而目前我国变电站巡检方式仍以人工为主,存在效率低下、监控不全面等问题。变电站通常是一个封闭的系统空间,设备种类繁多、占地面积广阔,这对巡检人员实时…...
Linux Kernel入门到精通系列讲解(QEMU-虚拟化篇) 2.5 Qemu实现RTC设备
1. 概述 上一章节起(5.4小节),我们已经把整个Naruto Pi都跑通了,从BL0到kernel再到Rootfs都通了,目前可以说已经具备学习Linux得基础条件,剩下得都只是添砖加瓦,本小节我们将添加RTC,如果你还没有添加RTC,你可以试试不添加RTC时,Linux的时间戳会很奇怪,加了RTC后,…...
【自动驾驶】通过下位机发送的加速度、角速度计算机器人在世界坐标系中的姿态
文章目录 原始代码全局变量定义逆平方根函数四元数解算函数理论解释四元数加速度计数据归一化计算方向余弦矩阵的第三行计算误差计算并应用积分反馈应用比例反馈积分陀螺仪数据,更新四元数归一化四元数更新姿态数据整体流程原始代码 #define SAMPLING_FREQ 20.0f // 采样频率…...
Python 设计模式(第2版) -- 第四部分(其他设计模式)
Python 设计模式(第2版) 最后介绍下其他设计模式。 模型—视图—控制器(MVC)-- 复合模式 根据 GoF 的定义,“复合模式将两个或更多模式组合成解决常见或普遍性问题的解决方案”。复合模式不是同时使用的一组模式,而是一个问题的…...

gitlab升级16.11.3-ee
背景 这是事后一段时间补充记录的博客。 升级目的:修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中,轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…...

剑指offer 算法题(搜索二维矩阵)
剑指offer 第二题 去力扣里测试算法 思路一: 直接暴力遍历二维数组。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (unsigned int i{ 0 }; i < matrix.size(); i){for (unsigned int j{ 0 };…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...