国外加固Appdome环境检测与绕过

文章目录

    • 前言
    • 第一部分:定位检测逻辑的通用思路
      • 1. 通过linux“一切皆文件”思路定位
      • 2. 分析现有检测软件猜测可能检测点
      • 3. 通过正向开发思路定位
      • 4. 通过activity及弹窗定位
    • 第二部分:检测结果展示整体流程
      • 1. Jni反射调用doDispath完成广播发送
      • 2. NativeBridge接口完成数据交互
      • 3. Appdome注册registerAppDomeBroadCastReceiver接受广播
      • 4. LoginActivity将接受事件进行活动展示
    • 第三部分:native流程分
      • 1. Native层如何分析?
    • 第四部分:绕过方案
      • 1. 不让app退出
      • 2. 使检查线程创建失败
      • 3. 粒度更小的绕过方式
      • 4. 通用绕过方案
    • 第五部分:后记
      • 1. 遇到的一些困难

前言

偶然发现使用shamiko模块无法绕过某国外加固厂商的环境检测,那么就需要具体分析一下它检测了哪里。

博主可以帮忙过AppDome的签名校验,各种签名校验,算法还原,滑块,风控的突破. 需要可以联系博主. v: cjh-18888
类 HH Poker, gcash 应用

第一部分:定位检测逻辑的通用思路

都深有感触的便是定位检测代码是个体力活;那么便先尝试用一些常用的定位思路来分析一波

1. 通过linux“一切皆文件”思路定位

通过对底层系统库函数诸如openat、readlinkat、fstatat等进行hook监控,结果如下:
在这里插入图片描述

看到打开的都是sbin目录的特征文件然而此方式shamiko便能绕过,那么便还有其余的检测点。

2. 分析现有检测软件猜测可能检测点

分析momo发现它是通过读取pts/2 下内容的方式发现su进程(此时su进程必须在运行状态下才能检测出来),然而此时su必须是运行方式才能检测出来很明显与分析app检测方式不符合。
在这里插入图片描述

3. 通过正向开发思路定位

通过普遍cv的思想在github查找开源的代码块进行定位,下面代码在检测ld_prlaods符号存在于ro.data段,那么便可以使用gdb的awatch来观察ld_prlaods所在内存是否被读写。
在这里插入图片描述

最后发现Shimako对这片进行了隐藏。因此便需要针对app的特定特征进行分析了

4. 通过activity及弹窗定位

此app有非常明显的窗口点击事件,通过hook点击事件来定位到是哪个activity进行的活动展示
在这里插入图片描述

通过对activity一步一步分析出一些整体流程

第二部分:检测结果展示整体流程

整体流程就粗略带过一下

1. Jni反射调用doDispath完成广播发送

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

2. NativeBridge接口完成数据交互

通过这些api接口完成java到native 层的数据交互,native层会根据这些信息拼接发送信息
在这里插入图片描述

3. Appdome注册registerAppDomeBroadCastReceiver接受广播

从以下代码便能看出接收器接受到检测到的各种事件
在这里插入图片描述

4. LoginActivity将接受事件进行活动展示

在这里插入图片描述

第三部分:native流程分

重点来到native的检测流程

1. Native层如何分析?

通过Jnitrace后发现以下关键字符串,因为已经知道了整体流程最终都是通过dosidpatch来发送消息,那么对最终dodispatch地址打调用栈就可以分析出完整的检测流程。
在这里插入图片描述

有了这些调用关系,接下来便是一路调试验证的体力活了,最终检测流程如下:
0x3c2920线程创建线程检测函数

在这里插入图片描述

0x97568开启安全线程检查
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

0x105704magisk detect: 路径比较,动态链接库符号比较
函数体混淆之后非常庞大,因此只关注关键地方进行分析即可
在这里插入图片描述

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

在这里插入图片描述

通过对这些函数查看参数,就可以看到一些对magiks的一些传统检测

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

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

然而这里还没有跟开头发出的json字符串有关系,所以需要接着向下分析

0x284638通过927c0和dbba0设置eventid
在这里插入图片描述

找到当前关键函数后向前打调用栈会发现有两个分支

在这里插入图片描述

0x24c164:927c0分支读取/data/data/com.mobile.co.th/cached_prefs的值判断是否设置eventid
在这里插入图片描述

这里发现cached_prefs没有任何的写入,删除便可绕过

0x253a38:dbba0分支以malloc为标志计算0x7f2190偏移处的dladdr是否为0
这里的检测思路可以参考:
https://github.com/5ec1cff/my-notes/blob/master/new-idea-detect-zygisk.md#%E6%95%B0%E5%AD%97%E4%B8%AD%E6%9A%97%E8%97%8F%E7%8E%84%E6%9C%BA
在这里插入图片描述

找到检测的关键点以后接下来的流程已经不重要了

0x20c4f4处通过看参数和结果确定是在构造json字符串
在这里插入图片描述

在0x203ac4的函数 通过eventid发送对应envent
在这里插入图片描述

0x17e8e4反射调用doDispath发送广播

在这里插入图片描述

第四部分:绕过方案

有了以上分析之后那么接下来随便绕

1. 不让app退出

分析退出流程是需要点击才能退出,于是可以通过lunch到想要的activity来进行绕过
在这里插入图片描述

2. 使检查线程创建失败

既然是创建线程来检测, 那么就可以将检测线程创建失败进行绕过
在这里插入图片描述

3. 粒度更小的绕过方式

使线程创建失败,粒度太大。也有许多对线程保护(如:将释放dex与检测放到一起,process_vm_write读取线程等)更多时候往往需要粒度更小的绕过方式,这时便可以对关键判断进行patch。

4. 通用绕过方案

rom定制root方案
kernelsu方案
漏洞root方案

第五部分:后记

1. 遇到的一些困难

分析时,检测到环境异常会退出严重干扰分析通过动态调试发现检测到环境异常后会执行非法指令进行退出。
在这里插入图片描述

使用gdb调试,追踪所有线程可以看到每个线程的行为
在这里插入图片描述

查看0x7b8段所属内存为匿名可执行段,将其dump下来可以查看syscall实现(以为在找到了7寸),分析这个可以对所有系统调用全部hook住。因为时机原因每次只hook到nano_sleep,然而真正退出并不是在这里,所以在这里倒推分析流程走了不少弯路。

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

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

相关文章

第11章 GUI Page439 步骤十二 为图元编号 支持直线

运行效果: 关键代码: 为IItem类新增三个函数,两个纯虚 为直线类,新增一个_index成员,并实现GetIndex和SetIndex两个函数 窗口类新增一个 _item_id成员,并初始化 在将图元压入队列之前,设置图元…

多继承与多重继承

多继承与多重继承 实验介绍 多继承与多重继承虽然只相差一个字,但是却是两个不同的概念。实验首先是要区分多继承与多重继承,其次是要学习多继承与多重继承的使用方式。 知识点 多继承与多重继承概念继承构造函数多继承与多重继承概念 多继承与多重继承可以从字面上理解。…

【强化学习】PPO:近端策略优化算法

近端策略优化算法 《Proximal Policy Optimization Algorithms》 论文地址:https://arxiv.org/pdf/1707.06347.pdf 一、 置信域方法(Trust Region Methods) ​ 设 π θ o l d \pi_{\theta_{old}} πθold​​是先前参数为 θ o l d \theta_{old} θold​的策略网…

市场复盘总结 20231225

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封…

C++入门编程一(基本框架代码、宏定义、标识符、数据类型)

文章目录 一、基本框架代码解释多行注释缩进自动排版宏定义关键字 标识符命名规则标识符sizeof()关键字实型(浮点型)字符型转义字符字符串类型布尔类型数据的输入 基于b站黑马c视频做的笔记,仅供参考和复习!!! 一、基本框架代码解…

Java Web Day07-08_Layui

1. Layui概念介绍 layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈&#x…

Python Opencv实践 - 人体姿态检测

本文仍然使用mediapipe做练手项目,封装一个PoseDetector类用作基础姿态检测类。 mediapipe中人体姿态检测的结果和手部跟踪检测的结果是类似的,都是输出一些定位点,各个定位点的id和对应人体的位置如下图所示: 关于mediapipe的pos…

Fastjson中关于json的处理与配置

Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。 无依赖,不需要例外额外的jar,能够直接跑在JDK上。 FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错&#xff0c…

案例分析:三一重工集团数字化转型

三一重工集团,作为制造业中的数字化转型佼佼者,荣获“全球灯塔工厂”的殊荣,率先采用了物联网、云计算、大数据等尖端技术手段。数字化转型让三一重工步入了全面信息化的管理时代,通过ERP、CRM、HRM等系统的协同运作,实…

第十二章 集合类

12.1集合类概论 java.util包中提供了一些集合类,这些 集合类又被成为容器,提到容器不难想到数组。集合类于数组的不同之处是:数组的长度是固定的 但集合类不同长度是可变的:数组用来存放基本数据类型的数据,集合用来存放对象的引…

Spring Cloud + Vue前后端分离-第7章 核心业务功能开发

Spring Cloud Vue前后端分离-第7章 核心业务功能开发 7-1 课程管理功能开发 课程管理页面美化 1.课程管理页面美化 demo-course.jpg 复制search.html中的部分代码 course.vue 看效果 测试一下新增修改删除效果 1.课程管理页面美化2 scoped:style下的样式只应用于当前组件…

docker的一些思考

1.docker是啥? 2.镜像执行流程 3.一些疑惑和解答 1. 2.

喜报频传!百望云获评“2023数字经济独角兽”称号

“数字经济独角兽”是在数字经济领域具备高成长性、高创新性和高潜力性的企业,他们不仅是数字经济的先锋,是科技创新型企业的典范,也是推动经济发展的新兴引擎。 12月20日,“2023数字经济独角兽大会”在北京大兴区成功举办。大会以…

关于Smartbi登录代码逻辑漏洞的动态情报

一、基本内容 近日,思迈特软件核查发现存在“登录代码逻辑漏洞”问题,重点影响范围涉及Smartbi V9及其以上版本。该漏洞可能导致攻击者利用逻辑缺陷对目标系统进行攻击,造成敏感信息泄露和远程代码执行的风险。 二、相关发声情况 Smartbi是…

电路设计(7)——窗口比较器的multism仿真

1.功能设计 构建一个窗口比较器的电路,在输入电压大于3.5v,小于0.8v时,蜂鸣器报警,输入电压在0.8v到3.5v之间时,不报警。 整体电路如下: 2.设计思路 在输入端,采取电阻分压的方式,输…

【C++】开源:libmodbus通信协议库配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍libmodbus通信协议库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&#x…

电脑开机快捷启动,启动菜单没有u盘怎么办

电脑开机快捷启动键找不到u盘怎么办 对于快捷启动键找不到u盘的问题,小编很了解其中的门道,因为开机找不到u盘是我们使用电脑时候的常见问题。那么我们到底要如何解决开机找不到u盘的问题呢?其实方法还是蛮简单的,下面小编就来教大家电脑开…

java数据结构与算法刷题-----LeetCode633. 平方数之和

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 思路一:双指针 可以使用双指针,不断从两个方向匹配…

IP代理科普| 共享IP还是独享IP?两者的区别与优势

通俗地讲,共享IP就像乘坐公共汽车一样,您可以到达目的地,但将与其他乘客共享旅程,座位很可能是没有的。独享IP就像坐出租车一样,您可以更快到达目的地,由于车上只有您一个人,座位是您一个人专用…

ComfyUI激活中文

comfyui中文地址如下: https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translationhttps://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation如何安装? 1. git安装 进入项目目录下的custom_nodes目录下,然后进入控制台,运…