转自:http://www.blogjava.net/cnfree/archive/2010/08/22/329559.html
现在网络上越来越流行.net和java写的客户端的小应用程序,而且后缀是exe。本文讨论的是如何从exe4j封装的exe文件中将自己想要的jar抽取出来。
exe4j一直是一种比较通用的java exe封装工具,但是其并没有将jar转换为本地文件,而是将jar文件通过特殊处理后,封装成的一个exe文件。因此只要我们了解了exe4j的原理,就可以将jar文件从exe文件中提取出来,并通过反编译工具来查看程序代码。
1. 分析Exe4J,得知其在添加文件到.exe时,使用0x88将文件内容Xor,所以第一步,我们需要将原始的数据提取出来:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->import java.io.*;
import java.util.*;
public class gen {
public static void main(String args[]) throws IOException {
FileInputStream fin = new FileInputStream(args[0]); // 可以将整个exe文件解码
FileOutputStream fout = new FileOutputStream(args[1]);
BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(fout);
int in = 0;
do {
in = bin.read();
if (in == -1)
break;
in ^= 0x88;
bout.write(in);
} while (true);
bin.close();
fin.close();
bout.close();
fout.close();
}
}
2.分析提取出来的数据文件,使用WinHex查看其16进制代码。由于Jar文件的开头总是PK开头,并且总包含有manifest.mf文件,并且结尾总是有3个00,同时结尾段有整个Jar包文件的索引,我们可以根据这一特性来分析我们需要的片段。
1、搜索Jar的manifest,然后往前找,找到的第一个PK段,即为一个Jar的开头。
2、查看片段里Jar里的每个class信息,直到最后的文件索引片段。
3、一个Jar的结束片段位于索引片段之后,仍然包含着PK段,并且最后包含着3个00,且这3个00距离PK大概20个字节左右
根据以上3条准则,足以提取整个Jar数据段,然后导入新文件中,并且以zip字段命名,尝试用ZIP解压缩软件打开,看看是否抽取正确。
需要注意的是WinHex非注册版,只能保存280K大小的文件,更大的Jar文件,需要注册版的WinHex才行。
**************
注:可以用 ultraedit来查看十六进制,非常方便
反编译jar可以使用jd-gui:http://java.decompiler.free.fr/?q=jdgui
分享到:
相关推荐
在Android开发过程中,有时我们需要对APK文件进行反编译以了解其内部结构或学习其他应用的实现方式。本文将详细介绍如何查看Android反编译文件,特别是如何查看其中的`.class`文件。 首先,我们需要知道APK文件本质...
Launch4j是一款强大的工具,专为Java开发者设计,可以将Java的JAR文件转换成Windows平台下的可执行程序(EXE)。这个转换过程使得Java应用程序能够脱离Java运行环境(JRE)独立运行,大大提高了软件分发的便利性。...
exe4j是一款功能强大的Java到Windows可执行文件转换器,它允许开发者将Java应用程序打包成原生的Windows EXE文件。这样,用户无需安装Java环境,只需双击.exe文件就能运行Java程序。exe4j提供了简单易用的界面和多种...
6. **安全性与保护**:exe4j提供了加密和混淆选项,以增强程序的安全性和防止反编译。 7. **定制启动画面**:可以设置自定义的启动画面,提升用户体验。 **二、exe4j的使用流程** 1. **安装与启动**:下载并安装...
2. **安全性增强**:通过将Java代码打包成.exe,可以提高程序的安全性,因为直接运行的.exe文件比JAR文件更难以被反编译。这有助于保护代码免受非法访问和篡改。 3. **多配置支持**:exe4j支持创建多个执行配置,...
此外,由于exe4j生成的.exe文件是基于特定Java版本的,因此,目标用户的系统上需要有与之匹配的JRE或JDK版本。 "exe4j_downcc"可能是下载下来的exe4j的压缩包文件,其中可能包含了exe4j的安装程序、文档、示例以及...
4. **安全保护**:考虑到代码安全问题,exe4j支持防止Java类文件被反编译的机制。通过打包成.exe,可以一定程度上增加破解和篡改的难度,保护开发者知识产权。 5. **配置灵活性**:exe4j提供了丰富的选项和配置,...
然而,需要注意的是,由于exe4j生成的exe文件本质上仍然是基于Java,所以它依赖于Java环境,虽然可以包含私有JRE,但对计算机性能有一定影响,且不适用于需要高效运行或跨平台的应用。 总的来说,exe4j是Java开发者...
这将生成一个名为`classes_dex2jar.jar`的文件,这就是反编译后的结果。 3. **查看反编译的代码**:现在,你可以使用JD-GUI这样的工具打开生成的JAR文件。JD-GUI是一个图形界面的Java反编译器,它能够显示反编译出...
1. **仅支持Windows**:由于exe4j生成的是Windows可执行文件,所以它无法在其他操作系统如Linux或macOS上运行。 2. **不支持64位JRE**:早期版本的exe4j可能不支持生成包含64位JRE的可执行文件,但较新版本已解决这...
4. **安全性和隐私保护**:随着网络安全的日益重要,exe4j 4.0可能会集成更强大的安全特性,例如防止反编译或恶意篡改,保护代码不被轻易分析和逆向工程。 5. **性能优化**:4.0版本可能针对启动速度和内存占用进行...
虽然exe4j简化了Java程序在Windows上的分发,但生成的exe文件可能会比原始的jar文件大很多,且可能受到反编译工具的攻击。因此,在使用exe4j时,开发者需要权衡便捷性与安全性的关系,并根据项目需求进行选择。 7....
6. **安全性和反调试**:`exe4j`还提供了防止反编译和调试的选项,可以保护你的代码不被轻易破解。 7. **兼容性**:`exe4j`生成的.exe文件能在各种Windows系统上运行,包括Windows XP到Windows 10,确保了广泛的...
5. **安全性和保护**:exe4j提供了对Java代码的加密和混淆功能,有助于防止反编译和未经授权的修改。 6. **本地化支持**:可以为生成的.exe文件添加多语言支持,使程序更易于国际化。 7. **自解压和安装程序**:...
5. **安全设置**:exe4j提供了一些安全选项,如设置数字签名、防止反编译等,增强程序的安全性。 6. **多语言支持**:该工具还支持多语言设置,帮助你的应用程序更好地适应国际化的用户需求。 7. **调试与测试**:...
6. **安全性**:exe4j提供了一种方法来保护Java代码,防止反编译,增加了软件的安全性。 7. **64位支持**:除了标准的32位版本,exe4j还有64位版本,能够处理更大内存需求的应用,并兼容64位操作系统。 **EJ....
- **安全性**:打包的.exe文件可能会被反编译,因此需要注意保护代码安全,尤其是在处理敏感数据或商业逻辑时。 4. **应用场景** - **桌面应用**:对于希望部署在Windows上的Java桌面应用程序,exe4j是理想的解决...
5. **安全性和保护措施**:exe4j支持对Java代码进行混淆和加密,以防止反编译和非法使用,保护开发者知识产权。 6. **多语言支持**:除了英文,exe4j还支持其他多种语言,方便全球各地的开发者使用。 在压缩包中,...
6. **安全与保护**:exe4j提供了对Java代码的加密和混淆功能,增加程序的保护性,防止未经授权的修改或反编译。 在exe4j 4.5.2版本中,可能包含了以下改进和特性: - **兼容性更新**:确保与最新的Java版本兼容,...
- 使用exe4j生成的可执行文件依赖于内嵌的JRE,因此文件大小可能会显著增加。 - 确保遵守软件的许可协议,未经授权的复制或分发可能会引发法律问题。 - 遵循最佳实践,如定期更新JRE,以确保程序的安全性和兼容性...