`
m635674608
  • 浏览: 5029236 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

从exe4j生成的exe中抽取jar文件

    博客分类:
  • java
 
阅读更多

现在网络上越来越流行.net和java写的客户端的小应用程序,而且后缀是exe。本文讨论的是如何从exe4j封装的exe文件中将自己想要的jar抽取出来。

exe4j一直是一种比较通用的java exe封装工具,但是其并没有将jar转换为本地文件,而是将jar文件通过特殊处理后,封装成的一个exe文件。因此只要我们了解了exe4j的原理, 就可以将jar文件从exe文件中提取出来,并通过反编译工具来查看程序代码。

1. 分析Exe4J,得知其在添加文件到.exe时,使用0x88将文件内容Xor,所以第一步,我们需要将原始的数据提取出来:

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才行。

分享到:
评论

相关推荐

    可运行项目打包jar到exe应用程序

    在使用exe4j工具前,需要将打包进去的文件抽取出来放在外面。然后,在jar包附近附带一个JRE跟图标,图标可任意更改。 使用exe4j工具时,需要指定我们的自带的JRE版本。在这里,我们选择JRE1.6版本。然后,点击下...

    axis相关jar包

    6. **wsdl4j-1.5.1.jar**:这是一个WSDL解析器,用于解析和操作WSDL文件,使开发者能够轻松地从WSDL定义中生成客户端和服务端代码。 7. **xml-apis.jar**:XML APIs库包含了处理XML的基本API,如DOM、SAX和XML ...

    kettle 7.1.0.0.12 所有可能用到的jar包

    1. **基础库依赖**:Kettle的jar包通常包括基础Java库,如`log4j.jar`用于日志记录,`commons-lang3.jar`提供通用语言功能,`commons-cli.jar`处理命令行参数,以及`slf4j-api.jar`和`slf4j-log4j12.jar`用于日志...

    Java工具_源代码抽取_java-source-code-extract202103.rar

    4. "log4j-1.2.17.jar" - 这是Log4j的日志记录库,用于工具的错误跟踪和日志输出,方便开发者了解工具的运行状态和可能的问题。 5. "commons-io-2.6.jar" - Apache Commons IO库提供了大量的I/O操作函数,工具可能...

    如何反编译Android5.0framework.pdf

    4. **查看源码**:使用`jd-gui`打开刚才生成的.jar文件,可以浏览反编译后的Java源码。虽然不是原始的Java代码,但通常可以理解其逻辑。 需要注意的是,由于Android 5.0引入了ART运行时,反编译流程与之前的Dalvik...

    反编译Android APK 工具

    4. 使用反编译器:将生成的JAR文件导入JD-GUI或其他反编译器,查看和分析原始的Java源代码。 在实际应用中,开发者通常会结合Apktool和Dex2Jar一起使用,先用Apktool解包并提取资源,再用Dex2Jar转换DEX文件,以便...

    基于java swing随机抽签程序

    5. 可执行文件生成(Exe Generation):为了方便非开发人员使用,开发者可能使用第三方工具(如Launch4j)将Java程序打包成Windows下的可执行文件(.exe)。这样,用户无需安装Java环境,只需双击即可运行。 6. JAR...

    润乾报表增强使用增强使用增强使用

    为了集成润乾报表,需要在项目中部署一系列的Jar包,包括barcode.jar、jdom.jar、iTextAsian.jar、jai_codec.jar、jai_core.jar、itext2_rq.jar、log4j_128.jar、poi2.jar以及report4.jar等。确保这些依赖库的正确...

    web-harvest解析及源文件

    将这些JAR文件添加到你的项目类路径中,你就可以在自己的Java程序中直接调用Web-Harvest的API,进行更高级的定制和集成。 此外,压缩包中可能还有JAVA文件,这些可能是自定义的处理器或者扩展,用于增强Web-Harvest...

    JAVA上百实例源码以及开源项目源代码

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    PDFBox工具包

    使用PDFBox时,开发者通常需要先导入相应的JAR文件到项目类路径中,然后通过Java代码调用PDFBox提供的API来执行各种操作。例如,创建一个PDF文档,可以使用`PDDocument`类;添加文本,可以使用`PDPageContentStream...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包6

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包5

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包10

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

Global site tag (gtag.js) - Google Analytics