假设我有一个 .jar 文件,并使用任意数量的免费实用程序将其包装到 .exe 中,例如JSmooth。
仅凭 .exe,是否有可能判断它是否是使用 .jar 文件中的一个此类实用程序生成的?
假设我有一个 .jar 文件,并使用任意数量的免费实用程序将其包装到 .exe 中,例如JSmooth。
仅凭 .exe,是否有可能判断它是否是使用 .jar 文件中的一个此类实用程序生成的?
我用 JSmooth 做了一个快速测试,它只是将整个 .jar 文件放在一个资源中。您可以通过使用Resource Hacker打开一个 JSmooth 可执行文件轻松看到这一点,如下面的屏幕截图所示(我使用了 java lib 文件夹中的 sun 的 deploy.jar):
对于其他实用程序,它可能会有所不同,但您可以使用binwalk 之类的工具来查找 exe 中的 jar/zip 签名。
如果可执行文件本身没有打包或混淆,您通常可以通过在解压缩实用程序(例如 7-zip)中打开它来找到 jar 或类文件。
exe 可能只是一个小的附加组件,它将在一组打包类上执行 java 解释器。我不知道有关他们如何开展工作的更多详细信息,但是 jar 文件很有可能在生成的 exe 中未修改
您可以使用十六进制查看器查看生成的文件,您很有可能会找到 jar 签名(要找出创建一个小 jar 文件,使用十六进制查看器查看它,将其打包并搜索特定内容)来自打包文件中的原始 jar)
您可以简单地 grep 文件以获取 " javaw.exe
" 或java.exe
... 这通常是一个很好的指标,该程序是否是 Java 包装器。
archenoth@Hathor ~/apps/Minecraft $ grep javaw.exe /host/Windows/notepad.exe
archenoth@Hathor ~/apps/Minecraft $ grep javaw.exe ./Minecraft.exe
Binary file ./Minecraft.exe matches
archenoth@Hathor ~/apps/Minecraft $
这是因为包装器通常包含以下内容: