2012-10-06 51 views
0

我目前正在处理的是包含可执行文件.jar的Windows .exe文件。我尝试过通过各种.exe和.jar反编译器运行它无济于事。我的问题是,如何获取.jar在被放入.exe之前的状态?从.exe获取.jar

请注意,我没有试图将程序从C++或C#转换为java,而是将.jar打包到一个.exe文件中,并转换回原始的.jar文件。

+4

*** ***如何被它放入一个可执行文件?通过使用什么工具?如果不知道这一点,这可能是一个无法回答的问题。 OTOH,即使你知道这一点,它也许是无法回避的。 –

+0

解决方案取决于它如何在首先放置在exe文件中。如果你不知道,那么你最好的选择是资源黑客工具,http://www.angusj.com/resourcehacker/(这个不再维护,但它曾经为我工作) – gigadot

+0

你可以尝试使用类似7Zip解压文件,不保证它能正常工作 – MadProgrammer

回答

0

不知道有关如何将它打包到exe文件中的任何信息,一种方法是替换rt.jar中的核心ClassLoader并将其写入defineClass方法中的文件。这样,无论何时加载类,它们都将被写入各自的文件。

请注意,这是一个黑客攻击,并有很多陷阱。举个例子,它不会在资源等jar文件中包含其他数据。你最好的选择是找出它的包装方式,就像@HovercraftFullOfEels提到的那样。

的OpenJDK的java.lang.ClassLoader source