android 禁用dlsym_Android10 aarch64 dlopen Hook

本文介绍了在Android 10 aarch64平台上禁用dlsym并实现dlopen Hook的挑战与解决方案。通过分析dlopen的实现,找到并解析__loader_dlopen函数,最终成功实现Hook,绕过系统限制。文中详细阐述了尝试过程、相关指令解析及Hook方法。
摘要由CSDN通过智能技术生成

前言[toc]

对于自动化hook Il2cpp 的模块来说, dlopen 的hook相当于一个大门, 没有该大门口, 一切都是纸上谈兵

在 armabi-v7a 上hook dlopen, 轻松的不要不要的, 甚至借用一下 virtual 系列app的 va++ 核心提供的 hook_dlopen 函数的接口都行

可是到了 aarch64 这里, 找了一圈, 能用的 hook构件 也就一枚 And64InlineHook, 而且源项目好像还得自己手动修一下才能使用.... (可惜whale不支持安卓10, 原hookzz的Dobby也木大)

好了有 hook构件 了, 但是我看了一圈主流的 VirtualApp 商业授权做出来的 虚拟多开 系列软件, 基本上都没实现 aarch64 的 hook_dlopen, 有的实现了却没有给调用, 自己去调用的话就会卡死 (还想 借鉴 一下方案, 逃个课先)

315d319ce52f41e8d8ec6be0d18bc331.png

环境 & 预习

测试平台

机型: 红米K30-4G, 已Root

系统: miui11, android-10

看雪上看到的一篇文章: Android9.0 hook dlopen问题

虽然半年前就看到这篇文章,但是基本上在看天书,现在拿出来看了一圈, 关键实现就是这里

4e0597f481bd6a87ad62231104fa067e.png

虽然我看不懂什么 LR寄存器 什么的, 但是唯独看懂这第三个参数强制赋值为 dlerror 函数的函数地址, 以达到越过系统的限制

而关于那所谓的系统限制, 就是在安卓7开始, 系统就禁止 用户APP 打开/读取 部分 系统库文件 , 所以直接 dlopen linker 会直接失败, 具体可以使用 dlerror() 函数查看原因 (懒 不贴图了)

初步尝试Hook

反汇编 libdl.so

貌似安卓9开始, dlopen就由 libdl.so 库进行导入, 反汇编看看

看了一下导出函数, 也就只有两个函数涉及到dlopen

90696689ec63db7145fef06202a830ac.png

让我康康这个 dlopen 长什么样!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值