shc 对 arm 设备不兼容,如何解决?

2024-01-03 23:26:15 +08:00
 lirunext
一句话描述:通过 shc 和交叉编译链把脚本编译为可执行文件,在 arm 设备不能正常运行

楼主想要:解决这个问题,或者有其他的把 sh 脚本加密成二进制或其它方式可以在 arm 设备运行的方法



楼主写了一个.sh 脚本文件在某 arm 设备运行正常,需要共享出去使用,但涉及设备的某些私有接口因此需要加密,使用 shc 加密为.c 格式文件,在 x86 电脑使用交叉编译链编译为 arm 平台的可执行文件,在 arm 设备运行提示:./xxxx: ▒▒▒AP▒h▒▒▒4F▒kK▒,▒


为了验证是交叉编译链的问题,还是脚本的问题,或者又是 shc 这个工具对 ARM 平台的兼容问题,做了以下验证:

1 ,写了一个最简易的 c 文件,只包含显示 hello world 。在 x86 电脑直接使用 gcc 编译,在 x86 设备可以正常运行;在 x86 电脑交叉编译后,在 arm 设备也可以正常运行;————说明交叉编译链没问题

2 ,写了一个最简易的脚本 testsh.sh ,只包含显示 hello world ,使用 shc 加密为.c 文件和编译,在 x86 设备可以正常运行;使用交叉编译链编译.c 文件,在 arm 设备运行会报错:./testsh: Ʈ▒▒{▒▒-▒0M:1▒t(————说明脚本也没问题,是 shc 对 ARM 平台的兼容问题
1989 次点击
所在节点    Linux
23 条回复
hpc4you
351 天前
@liberize 感谢.
dev 分支可以解决问题. 实际操作中, scriptB 需要提示用户输入部分内容. 使用 dev 分支后, 运行负荷预期.

默认 master 分支, 会跳过读取输入操作.

输入读取采用的是`read -p`, 非常简陋的 bash SHELL.

再次感谢.
liberize
351 天前
@hpc4you 提醒一下,应该选一个 glibc 版本尽量低的系统运行 ssc ,这样生成的二进制文件依赖的 glibc 版本比较低,在老系统上也能运行
hpc4you
351 天前
@liberize 多谢提醒.

经过测试确认, dev branch, 可以处理屏幕输入, 目前看来符合我的应用场景.

经过测试, 在 centOS7.9, 编译的二进制, 可以顺利在 Rocky8.8, AlmaLinux9.0, centOS7.9 运行.
推测, 在 Ubuntu Focal, Jammy 也是可以运行的.

再次感谢.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX