exe4j生成的exe文件反编译记录

exe4j

Exe4j是一款经典的讲java程序打包成一个exe程序的软件,没什么其他好说的。

识别是否exe4j

我是通过程序中报错信息打印出的堆栈信息中含有exe4j包名来判断的,也可以直接通过下面提供的程序处理一下后看看生成的文件能不能用zip解压出java类来判断。

exe4j逆向处理程序代码

直接贴出代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
import java.io.*;
public class gen {
public static void main(String args[]) throws IOException {
FileInputStream fin = new FileInputStream(args[0]);
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();
}
}

  1. 将这个程序保存为gen.java,名字不可以改,通过以下命令来编译:

    1
    2
    javac gen.java
    java gen.class 需要转换的exe文件名 转换后的输出文件名
  2. 使用zip解压软件直接解压输出的文件

  3. 正常解压后会出现java类文件,拖入jd-gui里就可以按照java逆向来走了