吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6575|回复: 22
收起左侧

[Android 原创] 小菜花的IO重定向简析

  [复制链接]
huaerxiela 发表于 2022-1-4 18:22
本帖最后由 huaerxiela 于 2022-1-4 18:29 编辑

0x0 引言

  • X:svc跟syscall的区别是啥

  • Y:xxxx唧唧哇哇oooo

  • X:怎么bypass 内存搜索还是ptrace

  • Y:va用的内存搜索+inline的(目前所看到的源码),隔壁珍惜大佬用的ptrace的

  • Y:大佬们要不要关注下我,突然灵机一动,想写个openat,syscall,svc,和va io svcbypass处理的文章[皱眉]
    以上纯属是个玩笑。当然了,本文要表述的这部分内容比较基础,大佬级别手下留情,给小菜花留点活路,感激涕零

0x1 系统调用相关概念
我先去cv一点概念性的东西
image.png    
用户态是怎么进入到内核态呢?这着实让人头疼。实际上常见的 kill方法 就会进入到内核态,而沟通内核态的方法就是sys_call方法。
image.png





0x2 跟踪openat源码
咱们这里以android8.0 arm64为例: http://androidxref.com/8.0.0_r4
image.png

可以看到,open和openat的实现都是__openat,那就去__openat看下
image.png
svc出现了

0x3 跟踪syscall源码
使用方式:pid_t pid = syscall(__NR_getpid);
image.png
源码:svc 出现了

0x4 io重定向
va:https://github.com/asLody/VirtualApp
ratel:https://github.com/virjarRatel/ratel-core
io重定向都是上述两个产品的核心功能之一,并且它俩的逻辑差不多哈,因为ratel是新开源的,所以直接拿ratel来看
(ps:io重定向可以干的事很多哈,如va的多开原理,ratel的一机多号原理,bypass文件检测等场景中,io重定向都起到了至关重要的作用)
image.png
函数hook
image.png
内存扫描 + hook
image.png
image.png
这部分优雅的写法主要是IORelocator.h中几个宏决定的,大家可以好好读读源码,然后学习和cv一波
frIDA方式见我的另一篇文章:https://mp.weixin.qq.com/s/TYwmqIE0jZ0BYWpunQ7TZw
0x5 总结
  • int fd = openat(dirfd, "output.log", O_CREAT|O_RDWR|O_TRUNC, 0777);
  • long fd = syscall(__NR_openat, dirfd, "output.log", O_CREAT|O_RDWR|O_TRUNC, 0777);
以 上述日常读文件方式 和 android8.0源码arm模式 为例:

  • 都要由用户态进入内核态

  • 进入内核态的逻辑由汇编实现(准备寄存器参数,然后swi/svc)

  • 32位下是swi指令,64位下是svc指令

  • openat -> __openat -> __openat.S -> 准备系统调用号,然后swi/svc(这里可以理解写死调用号形式的汇编实现)

  • syscall -> syscall.S -> 准备系统调用号,然后swi/svc(这里可以理解为传参形式的汇编实现)

  • io重定向的应用场景很多

  • ratel hook了

    • 以__openat为代表的文件操作相关函数

    • 以__openat.S为代表的具体的文件操作方式的swi/svc逻辑(写死调用号形式的汇编实现)

    • app so自实现的具体的文件操作方式的swi/svc逻辑(写死调用号形式的汇编实现)(ps:目前hook时机在dlopen后,目标自实现svc汇编写法要和__openat.S中写法类似,才会生效。哈哈,这部分逻辑我提的pr,cv大法好。当然了,hook的时机、汇编特征、更多调用号的适配都可以继续优化)

  • ratel 未hook

    • syscall这个函数

    • syscall.S的汇编实现

  • va,ratel,fakexposed....等项目中有很多可以学习和cv的地方,*发了个人理解的方案流/算法流技术晋级路线

  • 感谢上述的各位巨巨

免费评分

参与人数 18威望 +2 吾爱币 +118 热心值 +17 收起 理由
junjia215 + 1 + 1 热心回复!
zhqxl + 1 + 1 我很赞同!(看成小菊花了,我真邪恶~!)
aa530416 + 1 + 1 热心回复!
xxsdpyz + 1 + 1 我很赞同!
DancingLight + 1 + 1 热心回复!
victos + 1 + 1 谢谢@Thanks!
石碎大胸口 + 1 + 1 谢谢@Thanks!
KylinYang + 1 + 1 热心回复!
jnez112358 + 1 + 1 谢谢@Thanks!
soyiC + 1 + 1 谢谢@Thanks!
alcule + 1 + 1 我很赞同!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
gaosld + 1 + 1 谢谢@Thanks!
爱你小吉君 + 1 我很赞同!
yixi + 1 + 1 谢谢@Thanks!
404undefined + 1 + 1 我很赞同!
努力加载中 + 1 + 1 热心回复!
qtfreet00 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Do_zh 发表于 2022-1-6 16:38
感谢大佬分享。
push1val 发表于 2022-1-6 17:48
 楼主| huaerxiela 发表于 2022-1-6 18:12
404undefined 发表于 2022-1-6 22:02
感谢大佬, 分享的真好
herry_heng 发表于 2022-1-8 00:25
厉害!感谢分享
cydiansu 发表于 2022-1-8 09:21
硬核内容啊.感谢感谢.
咔c君 发表于 2022-1-8 22:18
不错学习了
CarlosHw 发表于 2022-1-9 01:12
学习学习,厉害厉害。
C2021 发表于 2022-1-9 07:56
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 07:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表