问题描述
当尝试使用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 (将#修改为@)