首页
社区
课程
招聘
Android 10 几种开机启动自己进程的方式都失败。无语中
发表于: 2023-8-23 20:20 4096

Android 10 几种开机启动自己进程的方式都失败。无语中

2023-8-23 20:20
4096

有个需求 pixel手机 在Android 10 开机的时候 想启动/data/local/tmp/hello进程。试了几个方案 。第一boot.img里面有个init.rc。感觉已经废弃。改了没用 。
然后尝试修改system.img里面的init.rc 用service来注册服务,路径就是自己的进程 。还是不行 。不知道是不是要配置selinux 。我反正没去管这个。感觉这个有点麻烦 。然后修改内核 在内核启动的时候 用定时器调用call_usermodehelper函数来启动用户进程 不知道这个和selinux有关系没有 。也是失败。失败在do_execve里面的do_filp_open调用 打开/data/local/tmp/hello失败 IS_ERR(file)得到1. 太难了有没有简单点的方法 。但是尽量不用magisk


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 9004
活跃值: (6220)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
tmp目录好像重启后就被清空了
2023-8-23 21:22
0
雪    币: 2888
活跃值: (6646)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mudebug tmp目录好像重启后就被清空了[em_1]
看机型有的不会清空
2023-8-23 22:04
0
雪    币: 2888
活跃值: (6646)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mudebug tmp目录好像重启后就被清空了[em_1]

如果只是要启动进程。可以狸猫换太子,把/system/bin或/system/xbin里的elf文件重命名然后建个sh脚本给予执行权限替代掉。在脚本里把传进来的参数全部传给重命名后的文件并在执行前或后添加要执行的程序路径并加&放至后台运行。可以修改sh或init默认载入的脚本文件,在里面添加要执行的文件这样只要sh运行就会同时运行你的程序,比如bash或默认加载/etc/bash.bashrc和/etc/profile文件,之前很多linux病毒都会把自己的load脚本写到这里面。可以修改核心库或程序文件添加上启动你要启动的程序的函数然后在编译替换,这样只要调用到该库或程序就会执行你修改的要启动你自己程序的函数。比较常见常用的是第二个方法。第二、第三个几年前我家光猫感染病毒自己抓过现行。第一个自己实验过。

最后于 2023-8-23 22:23 被微启宇编辑 ,原因:
2023-8-23 22:20
0
雪    币: 18
活跃值: (2079)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
微启宇 mudebug tmp目录好像重启后就被清空了[em_1] 如果只是要启动进程。可以狸猫换太子,把/system/bin或/system/xbi ...

感谢。。这个方法selinux会察觉到吗。 替换掉系统本来的可执行文件 。主要是不太了解selinux这个玩意。。它对要执行的文件有没有什么检测什么的 。

最后于 2023-8-24 08:46 被Troy编辑 ,原因: 没说完
2023-8-24 08:44
0
雪    币: 4297
活跃值: (3800)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
老哥,自己编译的pixel内核,触摸屏不能点击是啥原因?
2023-8-24 09:36
0
雪    币: 18
活跃值: (2079)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
guijingwen 老哥,自己编译的pixel内核,触摸屏不能点击是啥原因?
它那个驱动没有编译进内核 你要想办法把驱动编译进内核 。你有触摸屏了 进去WiFi也没有的 。网上有文章。
2023-8-24 10:05
0
雪    币: 1229
活跃值: (1760)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习ing
2023-8-24 10:34
0
雪    币: 6369
活跃值: (1683)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
9
你说的第二种是要修改selinux的, 不然会失败并有一条错误日志, call_usermodehelper似乎不受影响, 但在Android的kernel上没测试过, 而且你会不会是因为调用的时机太早了, data分区还没挂载? 所以文件不存在
2023-8-24 10:35
0
雪    币: 6369
活跃值: (1683)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
10
这部分你可以参考一下几个成熟的root框架的init.rc注入是怎么实现的吧, 以及你可以只启动程序, 而不是作为service来托管, 这样就不会遇到selinux问题

```bash
on post-fs-data
    exec u:r:shell:s0 root -- "/data/local/tmp/xxx"
```

试试这样插入呢?
2023-8-24 10:38
0
雪    币: 18
活跃值: (2079)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
月落之汀 这部分你可以参考一下几个成熟的root框架的init.rc注入是怎么实现的吧, 以及你可以只启动程序, 而不是作为service来托管, 这样就不会遇到selinux问题 ```bash on ...
感谢你的帮助。。我去试试你这个办法 。call_usermodehelper我是用一个定时器 一直在调用它。并且后来我也在普通进程上下文 去调用call_usermodehelper。都失败 。失败是在一个比较深的地方有一句 打开文件 比如我启动的是/bin/sh 打开这个文件失败 返回的错误码 是1 .无论怎么样 都是错误。有点尴尬

如果我不以服务的方式启动 不会被selinux审查吗。我还是想用root的方式去启动我的进程。
2023-8-24 11:00
0
雪    币: 6369
活跃值: (1683)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
12
Troy 感谢你的帮助。。我去试试你这个办法 。call_usermodehelper我是用一个定时器 一直在调用它。并且后来我也在普通进程上下文 去调用call_usermodehelper。都失败 。失败是 ...
不用服务的形式, 你的上下文应该是u:r:init:s0没记错的话, 如果遇到了selinux问题, 是可以看到一条avc_denied的日志的, se你可以开特定的洞, 也参考magiskpolicy或者setools的作法, 动态添加规则给自己放行, 或是修改自己的se上下文, 摆烂的话, 直接关了selinux也可以, 不过这个要看自己的需求, 否则还不如直接用成熟的root框架, 他们都有开机启动的功能
2023-8-24 11:59
0
雪    币: 18
活跃值: (2079)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
月落之汀 不用服务的形式, 你的上下文应该是u:r:init:s0没记错的话, 如果遇到了selinux问题, 是可以看到一条avc_denied的日志的, se你可以开特定的洞, 也参考magiskpolic ...
我没处理selinux 用了你的方法去exec一个脚本。好像还是不行 。现在我正在研究call_usermodehelper 这个函数很扯淡。。里面它自己打开文件会失败 。后来测试 。在内核创建一个线程或者用queue_work插入一个队列 让代码跑在内核上下文 打开文件确实要失败 。call_usermodehelper 这个函数里面正好它用到了queue_work 来插入一个队列 然后在队列的回调里面才真正的去执行创建进程。但是创建进程过程中去读取文件的时候打开失败了 。。我估计八层还是是撞到selinux上了。不然的话call_usermodehelper 这个就失去意义了 。绝对不成功。哎 。实在不行就得去看看selinux了。貌似有点复杂 。。。现成得root方案 我不太想用。。因为我也很感兴趣为什么会这么惨 。再研究研究。
2023-8-24 12:52
0
雪    币: 18
活跃值: (2079)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
确定了 就是selinux在捣乱 并且我call_usermodehelper 也受它限制。。限制方法就是不让你去打开你要执行的那个文件do_filp_open返回失败  算了 路见不平 绕道而行了。
2023-8-24 13:24
0
雪    币: 6369
活跃值: (1683)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
15
Troy 确定了 就是selinux在捣乱 并且我call_usermodehelper 也受它限制。。限制方法就是不让你去打开你要执行的那个文件do_filp_open返回失败 算了 路见不平 绕道而行了。
看起来要么在内核里面直接收拾selinux, 要么绕道了, 替换系统文件也是个好办法
2023-8-24 13:54
0
游客
登录 | 注册 方可回帖
返回
//