使用 CodeArts IDE 的 binary-sign-tool 命令为任意 ELF 签名,让其有权限在鸿蒙 HiShell 中执行

@Ta 1天前发布,19小时前修改 177点击

需要鸿蒙6系统,鸿蒙5不支持。打开开发者模式后,从应用商店的应用尝鲜里安装 CodeArts IDE。如果你安装过 Termony,打不开 CodeArts IDE 的终端,请先卸载 Termony 然后重启电脑。

注意:签名只是让ELF有权限运行,不能让原本就不兼容鸿蒙的ELF在鸿蒙里正常运行。
如果ELF不是静态链接的程序,并且依赖glibc,那大概率不能在鸿蒙内正常运行。
如果ELF依赖其他.so库,那所有.so库也都需要签名,并且需要配置LD_LIBRARY_PATH环境变量指向so所在文件夹。

签名命令:

binary-sign-tool sign -inFile ELF文件名 -outFile ELF文件名 -selfSign 1

批量签名命令:

签名当前目录及其子目录下的所有ELF文件:

find . -type f -exec file '{}' ';' | grep --line-buffered ': ELF ' | awk -F': ELF ' '{print $1}' | while read f; do echo "$f"; binary-sign-tool sign -inFile "$f" -outFile "$f" -selfSign 1; done

示例:

以这个从 Termony 项目里提取的 busybox 命令为例:busybox(1.77 MB)

签名前:

image.png(50.55 KB)

签名:

binary-sign-tool sign -inFile busybox -outFile busybox -selfSign 1

image.png(337.26 KB)

签名后:

image.png(248.4 KB)

回复列表(1|显示机器人聊天)
  • @Ta / 4小时前 / /

    已知限制:

    1. 自签名ELF似乎没有JIT权限。想要JIT权限还是得打包成public hnp塞到hap里安装。

    ff60da1e6708913ed44598e698f7573b.png(121.92 KB)

    1. 自签名ELF似乎也没有调用 tcsetpgrp、tcsetattr 等终端控制 API 的权限,导致 htop 命令不能正常输出,less 命令完全无法使用。打包成public hnp塞到hap里安装是没问题的。

    image.png(39.56 KB)

添加新回复
回复需要登录