SHC“参数列表太长”无法通过将堆栈大小增加到无限来解决

问题描述

当尝试使用shc(安装在VMware上运行的Ubuntu 20.04上,内存大小为4 GB)对脚本进行混淆时,我遇到了一个问题,原始脚本(test.sh)的大小为大约462 KB,以shc运行shc -U -f test.sh -o testbin.bin命令后,我以testbin.bin的形式创建了一个大约600 KB的新文件,然后尝试直接如下运行:

user@ubuntu:~/Obfuscate_Script$ sudo ./testbin.bin
./testbin.bin: Argument list too long: /bin/bash

我意识到遇到的问题是在shc man page上,如下所示:
臭虫 编译后可以执行的脚本的最大大小受操作系统配置参数_SC_ARG_MAX限制(请参见sysconf(2))

我尝试遵循一些参考文档,例如“Argument list too long”: How do I deal with it,without changing my command?Increase stack size in Linux with setrlimit,并在下面尝试,首先我将堆栈大小作为无限制值增加ulimit -s unlimited,然后使用{{1 }},它似乎可以正常工作,它可以从认值增加到最大VMware设置内存为4 GB

getconf ARG_MAX

但是当我再次以user@ubuntu:~$ getconf ARG_MAX 2097152 user@ubuntu:~$ ulimit -s unlimited user@ubuntu:~$ getconf ARG_MAX 4611686018427387903 的形式生成二进制文件时,现在它在警告下面显示为:

testbin.bin

然后我再次运行user@ubuntu:~/Obfuscate_Script$ shc -U -f test.sh -o testbin.bin shc: WARNING!! Scripts of length near to (or higher than) the current System limit on "maximum size of arguments to EXEC",Could comprise its binary execution. In the current System the call sysconf(_SC_ARG_MAX) returns -1 bytes and your script "test.sh" is 467776 bytes length. 文件,这并不奇怪,它仍然显示相同的问题,看起来testbin.bin实际上不起作用:

ulimit -s unlimited

我不知道为何再次出现警告消息,因为我已经在虚拟机上手动将堆栈大小增加到最大值。我的Ubuntu 20.04认在VMware 15.5.6上运行,认设置为4 GB内存(我可以增加它的数量,但不应该是根本原因),请让我知道如何克服user@ubuntu:~/Obfuscate_Script$ sudo ./testbin.bin ./testbin.bin: Argument list too long: /bin/bash user@ubuntu:~/Obfuscate_Script$ getconf ARG_MAX 4611686018427387903 参数列表太长的问题了,我们是否需要修改任何配置文件或某些设置来解决警告?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)