有时候出于各种需要,需要移值一些blobs
我们要确保
a. 底层编译库版本符合 比如gcc编译一个c程序 就要看libc库的版本 java程序可能还分java 8 java11 等等
如果是安卓 一般安卓大版本符合即可
1、注意selinux
selinux是个讨人厌的东西
要配置te规则允许 也要设置文件权限 以免禁止执行文件 禁止进程读取其他文件 或者禁止init的状态转换之类的,非常麻烦,可以从原厂的etc/selinux 下面查询selinux相关信息
文件权限一般在 file_contexts 之类的下面
权限配置有可能是cil文件, 具体转换可以使用我的github项目
当然需要小修改,github上只是省事99% 最后1% 还是要自己修改
https://github.com/u0-ani-nya/setools
2、 注意链接库
使用readelf -d 可执行文件 来读取依赖的运行库so文件
使用readelf -l 读取linker路径,如果linker找不到 那么库就会白复制
3、 如果移值失败
etc/init 下面 有一堆rc文件
如果要用的移值的什么功能, 移值之后运行异常, 有可能是少了什么
可以从init.rc 或者xxx.rc 等 找到具体都有什么
也可以在有root的设备 运行getprop | grep init.svc
作用是查看这个设备上运行了什么,从[running]里面大概率有这个服务运行需要什么的信息
4、etc/vintf
vintf差不多是个声明,里面存放aidl和hidl类型的声明
建议参考 https://blog.xzr.moe/archives/99/ 写的非常好
之后想起来什么继续更新
注: etc 指的是 system/etc system_ext/etc vendor/etc persist/etc 等目录
Comments NOTHING