某书Frida检测绕过记录

2024-04-19 23:04

本文主要是介绍某书Frida检测绕过记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

某书Frida检测绕过记录

    • 前言
    • Frida启动APP
    • Hook android_dlopen_ext查看加载的库
    • 分析libmsaoaidsec.so
    • Frida检测绕过
    • 后记

前言

本来想要分析请求参数加密过程,结果发现APP做了Frida检测,于是记录一下绕过姿势(暴力但有用)
Frida版本:16.2.1
APP版本:8.31.0

Frida启动APP

frida -U -f 包名,spawn启动APP,直接挂
Frida

Hook android_dlopen_ext查看加载的库

function hook_android_dlopen_ext() {var linker64_base_addr = Module.getBaseAddress("linker64")var android_dlopen_ext_func_off = 0x0000000000031098var android_dlopen_ext_func_addr = linker64_base_addr.add(android_dlopen_ext_func_off)Interceptor.attach(android_dlopen_ext_func_addr, {onEnter: function (args) {console.log("android_dlopen_ext -> enter : " + args[0].readCString())},onLeave: function (ret) {console.log("android_dlopen_ext -> leave")}})
}
hook_android_dlopen_ext()

可以看到最后的libmsaoaidsec.so只是enter,没有leave
也就是说APP的Frida检测点在libmsaoaidsec.so的初始化过程
Frida

分析libmsaoaidsec.so

这里使用GG修改器dump内存,SoFixer修复so文件
习惯性地去看.init_array,发现只是一些初始化
查询资料得知链接器在调用.init_array中的函数前会先调用.init_proc
于是直接替换.init_proc使其为空
此时链接器对libmsaoaidsec.so的android_dlopen_ext可以正常leave
但当链接器调用libmsaoaidsec.so的JNI_OnLoad时出错
错误描述是JNI_OnLoad使用的某个全局变量为空,而该全局变量实际上在.init_proc中被初始化
于是仔细分析.init_proc(D810插件可以直接去掉混淆)
Frida
这里觉得sub_1BEC4非常可疑,又是fopen,又是两层if的
sub_1BEC4主要调用两个函数,sub_1B924和sub_1BFAC
Frida
sub_1BFAC的hook检测比较明显,就是遍历线程,找gum-js-loop和gmain
Frida
sub_1B924->sub_1CEF8->sub_1C544,通过libc.so的pthread_create创建线程实例
sub_1C544开头就是一堆字符串的解密,最终的检测写在while循环里
Frida

Frida检测绕过

脚本绕过

function hook_android_dlopen_ext() {var linker64_base_addr = Module.getBaseAddress("linker64")var android_dlopen_ext_func_off = 0x0000000000031098var android_dlopen_ext_func_addr = linker64_base_addr.add(android_dlopen_ext_func_off)Interceptor.attach(android_dlopen_ext_func_addr, {onEnter: function (args) {// console.log("android_dlopen_ext -> enter : " + args[0].readCString())if (args[0].readCString() != null && args[0].readCString().indexOf("libmsaoaidsec.so") >= 0) {hook_call_constructors()}},onLeave: function (ret) {// console.log("android_dlopen_ext -> leave")}})
}function hook_call_constructors() {var linker64_base_addr = Module.getBaseAddress("linker64")var call_constructors_func_off = 0x000000000004af0cvar call_constructors_func_addr = linker64_base_addr.add(call_constructors_func_off)var listener = Interceptor.attach(call_constructors_func_addr, {onEnter: function (args) {console.log("call_constructors -> enter")var module = Process.findModuleByName("libmsaoaidsec.so")if (module != null) {Interceptor.replace(module.base.add(0x000000000001BEC4), new NativeCallback(function () {console.log("replace sub_1BEC4")}, "void", []))listener.detach()}},})
}hook_android_dlopen_ext()

Frida
后来想用objection分析java层的调用过程
没有想出同时注入js脚本并启动objection的方法
于是这里的解决方案是直接nop掉libmsaoaidsec.so的sub_1BEC4函数,把patch过的so放到指定路径即可

后记

后面按照网上其他师傅的分析思路
知道x-b3-traceid和x-xray-traceid与当前时间(System.currentTimeMillis())相关
x-legacy-smid、x-legacy-did、x-legacy-fid和x-legacy-sid是固定的(猜测和设备相关但是固定)
x-mini-gid、x-mini-sig和x-mini-mua在libtiny.so(动态跳转混淆)中添加
shield在libxyass.so(控制流混淆)中添加
后面需要学习unidbg去混淆

这篇关于某书Frida检测绕过记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918679

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

小技巧绕过Sina Visitor System(新浪访客系统)

0x00 前言 一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过…… 当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~ 应该是今年的早些时候,新浪引入了一个Sina Visitor Syst

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d