app逆向抓包技巧:ROOT检测绕过

news2025/1/9 2:13:44

本篇博客旨在记录学习过程,不可用于商用等其它途径

场景

某监管app查壳发现使用了 《梆梆企业版》 加固,想尝试使用frida-dexdump脱壳,打开app发现提示下图样式,由于进不去界面,我们直接脱壳无法保证能获取到完整的 Dex 文件,这时需要处理掉它的检测机制。
在这里插入图片描述

检测原理

ROOT检测的方式多种多样,主要是分为Java层和Native层两层进行ROOT检测,ROOT检测方式总结一下主要分为几类:

  1. 已安装App检测,如是否有magisk
  2. 文件检测,如/sbin/su
  3. prop检测,如ro.debuggable
  4. system分区是否可写

检测使用的API也是多种多样,比如Java层的File.existsFile.canRead都能用来检测文件是否存在,Native层的fopenaccess也一样。

一些路径下的su文件,一些root的app相关文件
“/data/local/bin/su”,
“/data/local/su”,
“/data/local/xbin/su”,
“/dev/com.koushikdutta.superuser.daemon/”,
“/sbin/su”,

检测一些root的app如magisk等
“com.noshufou.android.su”,
“com.noshufou.android.su.elite”,
“eu.chainfire.supersu”,
“com.koushikdutta.superuser”,
“com.yellowes.su”,
“com.topjohnwu.magisk”,

绕过方式

在非ROOT环境使用BlackDex脱壳

BlackDex能够在非root环境下进行脱壳,下载地址
安装后进入BlackDex,直接双击需要脱壳的app,然后将脱壳得到的DEX文件放到apk里再用jadx反编译即可
在这里插入图片描述

使用高版本Magisk(v24+)绕过

在这里插入图片描述
在这里插入图片描述

自测发现确实可以绕过ROOT检测,但是这样排除列表中的应用则无法使用MagiskLsposed模块,如果app还有SSL检测就没法绕过
在这里插入图片描述

使用Shamiko插件绕过

Shamiko下载路径
最新版本会依赖于Magisk对应版本,如果对不上会安装失败,提示语大概是please install magisk canary

安装成功后,操作流程看下图:
在这里插入图片描述
在这里插入图片描述

相比较Magisk原生hide,就是在安装模块后把遵守排除列表关了,此时就可以同时支持Lsposed其它模块了

删除检测源码

这种操作不适合本场景,它适合那些没有加固、反编译能拿全源码的app,通过删除或者修改检测源码并重新编译的方式可以绕过检测。

Frida hook绕过

这种操作不适合本场景,它需要反编译看源码
在针对基于 su 的检测方式里,可以使用jadx反编译apk,全局搜索"su"定位到检测代码,然后直接hook代码修改方法返回值,如:
在这里插入图片描述

Frida Objection绕过

Objection 是基于 Frida 框架开发的一个工具,它提供了一组便捷的功能和脚本,以简化在移动应用程序中使用 Frida 进行动态分析和漏洞利用的过程。
安装:pip install objection

由于Objection依赖Frida,在运行Objection前需要先运行Frida
启动命令:objection -g 包名 explore
执行命令时会自动打开app,这时候是被检测ROOT的,点击退出让app在后台运行
在这里插入图片描述

然后在Objection命令行输入android root disable,再回到app界面,这时app会再次刷新,而Objection会hook处理它调用到的检测,从而实现绕过
在这里插入图片描述

objection绕过双进程保护

如果app存在双进程保护,那么我们启动objection就可能出现卡死、闪退等问题。
比如:
在这里插入图片描述

一般双进程保护,先把app关掉直接用spawn模式就能附加上,但是这里我尝试了很多都没法绕过,所以只能尝试修改objection源码来绕过双进程保护。
windows中找到objection的源码文件,然后进入utils\agent.py,找到inject 函数,进行以下代码修改

源代码:
在这里插入图片描述

修改后代码:
在这里插入图片描述

修改后重新执行命令就能附上了
在这里插入图片描述

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

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

相关文章

虚拟机windows server创建域

目录 准备工作 一、新建域控制器 二、提升为域控制器添加新林 三、新建组织单位(OU),用户 四、将计算机加域 五、在域控中管理计算机 六、在域控中配置组策略 七、域内计算机验证组策略配置 准备工作 安装域前,如果有DNS…

Golang | Leetcode Golang题解之第310题最小高度树

题目: 题解: func findMinHeightTrees(n int, edges [][]int) []int {if n 1 {return []int{0}}g : make([][]int, n)deg : make([]int, n)for _, e : range edges {x, y : e[0], e[1]g[x] append(g[x], y)g[y] append(g[y], x)deg[x]deg[y]}q : []i…

二百五十二、OceanBase——Linux上安装OceanBase数据库(二)

一、目的 在OBD页面上部署OceanBase数据库时发现,需要把新用户也要配置ssh免密登录 二、前提 root用户已经设置免密登录 三、配置步骤 1 切换到新用户obadmin [roothurys23 ~]# su obadmin 2 执行命令生成秘钥文件 [obadminhurys23 oceanbase]$ ssh-keygen …

限免下载:715页 | 2024民营企业数字化转型典型案例集

一、前言 数字化转型不仅仅是技术的更新换代,它涉及到企业运营模式、组织架构、企业文化等多个层面的深刻变革。通过数字化,企业能够更好地理解市场动态,提升决策效率,优化客户体验,并最终实现业务增长和价值创造。 …

不可错过的2024翻译工具合集,提升沟通效率必备

如果你想要提升外文阅读能力,但是有没什么外语基础怎么办。现在有不少翻译工具可以实现整份文件进行翻译,让这些工具在日常生活和学习中发挥作用。 1.福昕在线翻译 链接直达:https://fanyi.pdf365.cn/doc 这个工具有齐全的翻译功能。可以…

利用SSE打造极简web聊天室

在B/S场景中,通常我们前端主动访问后端可以使用axios,效果很理想,而后端要访问前端则不能这样操作了,可以考虑SSE、websocket和gRPC等方式,实时和性能均有保障。 下面给出一个简单的例子,后端是nodeexpress…

体验教程:通义灵码陪你备战求职季

本场景将带大家体验在技术面试准备场景下,如何通过使用阿里云通义灵码实现高效的编程算法题练习 、代码优化、技术知识查询等工作,帮助开发者提升实战能力,更加从容地应对面试挑战。主要包括: 1、模拟题练习:精心挑选…

Python基础教程(二)字符串和函数

6.字符串 6.1 字符串的表示方式 6.1.1 普通字符串 普通字符串指用单引号()或双引号(”")括起来的字符串。例如:Hello或"Hello" >>> Hello Hello >>> "Hello" Hello >>> s\u0048\u0065\u006c\u006c\u006f >>> …

Oracle19c数据库system密码锁定

一、在oracle 19c数据库中,cdb中system用户被锁定,locked 二、所在的pdb中的system用户状态是正常的,但不可用,连接的时候提示账号已锁定 三、解决 在cdb中将system用户解锁。 alter user system account unlock;

LeetCode面试150——45跳跃游戏II

题目难度:中等 默认优化目标:最小化平均时间复杂度。 Python默认为Python3。 目录 1 题目描述 2 题目解析 3 算法原理及代码实现 3.1 反向查找 3.2 正向查找 参考文献 1 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]…

使用 Java 8 的 BiPredicate 和 Stream API 进行数据过滤和分组

在本文中,我们将学习如何使用 Java 8 的 BiPredicate 和 Stream API 来进行数据过滤和分组。我们将通过一个具体的例子来演示这一过程,例子中包含学生成绩的筛选和基于考试时间段的分组。 案例介绍 我们有两个实体类:StudentScore 和 ExamT…

满客宝智慧食堂系统 selectUserByOrgId 未授权访问漏洞复现

0x01 产品简介 满客宝智慧食堂系统由正奇晟业(北京)科技有限公司开发,旨在通过科技手段提升食堂的服务水平和就餐体验。该系统支持多种食堂就餐形式,如自选餐、自助餐、档口就餐、预订取餐等,满足不同场景下的餐饮需求…

从理论到实践网络编程模型:(BIO、NIO、AIO)同步与异步模型的原理与应用 (四)

我是写Java的就用Java及所需要的基础来写的本篇文章,其他语言的讲解和应用暂时也不会,欢迎大佬在评论区指导,给出其他语言的讲解分析与应用 Java数据传输字符流和字节流 java.io 是 Java 编程语言中的一个包,主要用于输入和输出&…

Linux 和 Unix 的关系

Linux 和 Unix 的关系 2.2.1unix 是怎么来的 2.2.2Linux 是怎么来的 GNU计划的另一个目的是构建自由的软件文化,以支持以无条件自由软件和开放源码程序这种文化理念为核心的一整套系统,来推动软件在世界范围内的普及及发展。其中包括支持点(推…

java开发环境搭建基础之2----开发工具eclipse在windows的安装

一.背景 公司安排了带徒弟任务,写点基础的环境搭建这些吧。搭建基础开发环境,主要是jdk、eclipse、git、maven、mysql。后续再考虑编写jenkins、nexus、docker、1panel等CI/CD环境搭建。本次主要内容是eclipse的下载安装及运行。我的开发环境&#xff0c…

Linux内核(4)——Linux设备文件open函数从应用到内核全过程解析

学习并整理了下open等系统调用,从用户态如何调用到内核态的全过程。 1.Linux内核目录总览 2.Linux文件系统与设备驱动关系 这是在Linux设备驱动开发详解里找的两张图,内容很形象。 当用户程序通过系统调用陷入内核态时,会先经过VFS&#xf…

Hive3:表操作常用语句-内部表、外部表

一、内部表 1、基本介绍 (CREATE TABLE table_name ......) 未被external关键字修饰的即是内部表, 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定(默认:/user/hive/ware…

多线程处理

1、使用两个线程完成两个文件的拷贝&#xff0c;分支线程1拷贝前一半&#xff0c;分支线程2拷贝后一半&#xff0c;主线程回收两个分支线程的资源 #include<myhead.h>struct Buf {int start;//起始位置int end;//结束位置const char *arr;//源文件const char *brr;//目标…

Spring-component-scan标签详解

<context:component-scan base-package"cn.ybzy.springtest"/> 首先&#xff0c;这标签是需要context的命名空间的。 base-package&#xff1a; 指定spring扫描注解的类所在的包。当需要扫描多个包的时候&#xff0c;可以使用逗号分隔。 如果只希望扫描特定…