`
colorlife
  • 浏览: 132307 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

exe4j生成的exe文件反编译

阅读更多

转自: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

分享到:
评论
4 楼 u148 2013-08-22  
benjamin 写道
如果为了结果有更简单的,运行程序后在temp里面可直接找到jar包

temp里边没有jar包呀 ..
3 楼 benjamin 2013-02-12  
如果为了结果有更简单的,运行程序后在temp里面可直接找到jar包
2 楼 colorlife 2011-01-06  
huansinho 写道
请问你试过成功反编译过吗?

嗯,试过行才会贴出来的啦
1 楼 huansinho 2010-12-31  
请问你试过成功反编译过吗?

相关推荐

    如何查看反编译文件

    在Android开发过程中,有时我们需要对APK文件进行反编译以了解其内部结构或学习其他应用的实现方式。本文将详细介绍如何查看Android反编译文件,特别是如何查看其中的`.class`文件。 首先,我们需要知道APK文件本质...

    Launch4j 把java jar包转化为exe文件 可脱离jre 内附详细文档

    Launch4j是一款强大的工具,专为Java开发者设计,可以将Java的JAR文件转换成Windows平台下的可执行程序(EXE)。这个转换过程使得Java应用程序能够脱离Java运行环境(JRE)独立运行,大大提高了软件分发的便利性。...

    java程序制作exe可执行程序方法

    exe4j是一款功能强大的Java到Windows可执行文件转换器,它允许开发者将Java应用程序打包成原生的Windows EXE文件。这样,用户无需安装Java环境,只需双击.exe文件就能运行Java程序。exe4j提供了简单易用的界面和多种...

    exe4j中文版软件

    6. **安全性与保护**:exe4j提供了加密和混淆选项,以增强程序的安全性和防止反编译。 7. **定制启动画面**:可以设置自定义的启动画面,提升用户体验。 **二、exe4j的使用流程** 1. **安装与启动**:下载并安装...

    java打包exe工具exe4j6.0的64和32位工具

    2. **安全性增强**:通过将Java代码打包成.exe,可以提高程序的安全性,因为直接运行的.exe文件比JAR文件更难以被反编译。这有助于保护代码免受非法访问和篡改。 3. **多配置支持**:exe4j支持创建多个执行配置,...

    exe4j_windows-x64

    此外,由于exe4j生成的.exe文件是基于特定Java版本的,因此,目标用户的系统上需要有与之匹配的JRE或JDK版本。 "exe4j_downcc"可能是下载下来的exe4j的压缩包文件,其中可能包含了exe4j的安装程序、文档、示例以及...

    exe4j安装包

    4. **安全保护**:考虑到代码安全问题,exe4j支持防止Java类文件被反编译的机制。通过打包成.exe,可以一定程度上增加破解和篡改的难度,保护开发者知识产权。 5. **配置灵活性**:exe4j提供了丰富的选项和配置,...

    exe4j最新版,附注册码

    然而,需要注意的是,由于exe4j生成的exe文件本质上仍然是基于Java,所以它依赖于Java环境,虽然可以包含私有JRE,但对计算机性能有一定影响,且不适用于需要高效运行或跨平台的应用。 总的来说,exe4j是Java开发者...

    dex2jar反编译dex文件

    这将生成一个名为`classes_dex2jar.jar`的文件,这就是反编译后的结果。 3. **查看反编译的代码**:现在,你可以使用JD-GUI这样的工具打开生成的JAR文件。JD-GUI是一个图形界面的Java反编译器,它能够显示反编译出...

    exe4j可执行工具

    1. **仅支持Windows**:由于exe4j生成的是Windows可执行文件,所以它无法在其他操作系统如Linux或macOS上运行。 2. **不支持64位JRE**:早期版本的exe4j可能不支持生成包含64位JRE的可执行文件,但较新版本已解决这...

    exe4j4.0版本

    4. **安全性和隐私保护**:随着网络安全的日益重要,exe4j 4.0可能会集成更强大的安全特性,例如防止反编译或恶意篡改,保护代码不被轻易分析和逆向工程。 5. **性能优化**:4.0版本可能针对启动速度和内存占用进行...

    exe4j中文版.zip

    虽然exe4j简化了Java程序在Windows上的分发,但生成的exe文件可能会比原始的jar文件大很多,且可能受到反编译工具的攻击。因此,在使用exe4j时,开发者需要权衡便捷性与安全性的关系,并根据项目需求进行选择。 7....

    exe4j_windows安装包

    6. **安全性和反调试**:`exe4j`还提供了防止反编译和调试的选项,可以保护你的代码不被轻易破解。 7. **兼容性**:`exe4j`生成的.exe文件能在各种Windows系统上运行,包括Windows XP到Windows 10,确保了广泛的...

    java生成exe打包工具exe4j

    5. **安全性和保护**:exe4j提供了对Java代码的加密和混淆功能,有助于防止反编译和未经授权的修改。 6. **本地化支持**:可以为生成的.exe文件添加多语言支持,使程序更易于国际化。 7. **自解压和安装程序**:...

    exe4j_windows 打包程序

    5. **安全设置**:exe4j提供了一些安全选项,如设置数字签名、防止反编译等,增强程序的安全性。 6. **多语言支持**:该工具还支持多语言设置,帮助你的应用程序更好地适应国际化的用户需求。 7. **调试与测试**:...

    exe4j工具\exe4j工具\exe4j工具

    6. **安全性**:exe4j提供了一种方法来保护Java代码,防止反编译,增加了软件的安全性。 7. **64位支持**:除了标准的32位版本,exe4j还有64位版本,能够处理更大内存需求的应用,并兼容64位操作系统。 **EJ....

    exe4j jar转exe工具

    - **安全性**:打包的.exe文件可能会被反编译,因此需要注意保护代码安全,尤其是在处理敏感数据或商业逻辑时。 4. **应用场景** - **桌面应用**:对于希望部署在Windows上的Java桌面应用程序,exe4j是理想的解决...

    exe4j_windows-x64_6_0_2.zip

    5. **安全性和保护措施**:exe4j支持对Java代码进行混淆和加密,以防止反编译和非法使用,保护开发者知识产权。 6. **多语言支持**:除了英文,exe4j还支持其他多种语言,方便全球各地的开发者使用。 在压缩包中,...

    exe4j_windows_4_5_2

    6. **安全与保护**:exe4j提供了对Java代码的加密和混淆功能,增加程序的保护性,防止未经授权的修改或反编译。 在exe4j 4.5.2版本中,可能包含了以下改进和特性: - **兼容性更新**:确保与最新的Java版本兼容,...

    exe4j 64位 带注册码及转换说明

    - 使用exe4j生成的可执行文件依赖于内嵌的JRE,因此文件大小可能会显著增加。 - 确保遵守软件的许可协议,未经授权的复制或分发可能会引发法律问题。 - 遵循最佳实践,如定期更新JRE,以确保程序的安全性和兼容性...

Global site tag (gtag.js) - Google Analytics