我找到了这个工具,当我下载它时,它是一个包含二进制代码的bash可执行文件。
首先,我不知道这是可能的。有谁知道这是谁可以做到的?而且我不确定这通常有多安全,因为我真的不确定bash文件包含什么
这是一个独立的Java程序,它依赖于一些“技巧”:
META-INF/MANIFEST.MF
)的ZIP文件,该清单指定了要启动的Java类。java -jar
给定一个JAR文件,它将查看清单并启动相应的类,并从JAR文件和Java运行时加载任何其他必需的资源(也可以指定要运行的另一个类,但这在此无关紧要);svg2png
JAR文件也是如此,但是带有前置的shell脚本:
#!/bin/sh
exec java -Xmx1G -jar "$0" "$@"
运行时,它将运行一个外壳,然后将其替换为,java -Xmx1G -jar
并将其替换为“脚本”的名称(svg2png
使用任何路径)以及所有参数。-Xmx1G
设置堆大小,并-jar
告诉JVMsvg2png
在这种情况下“运行”给定的JAR文件。其余的svg2png
是JAR文件。特别是,它包含以下清单:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: sterlp
X-Compile-Target-JDK: 1.8
X-Compile-Source-JDK: 1.8
Created-By: Apache Maven 3.3.3
Build-Jdk: 1.8.0_51
Main-Class: org.sterl.svg2png.Main
这指示JVM运行org.sterl.svg2png.Main
该类,从而启动程序。
您将在Wikipedia上找到有关ZIP格式的更多详细信息,特别是结构说明,该结构说明显示了该格式如何在文件开头(以及其他位置)允许任意数据。ZIP文件由其“中央目录”标识,该目录位于文件的末尾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句