exe怎么解压成文件 电脑上强力卸载的软件找回方法

我讲过如何通过JAVA把JAR做成一个自解压的exe文件。现在,需求收到了:用户下载exe时,会自动在exe文件中添加或覆盖某个文件。想法:1.由于自解压exe文件由sfx、config.txt和7z压

本文最后更新时间:  2023-02-25 23:47:49

我讲过如何通过JAVA把JAR做成一个自解压的exe文件。现在,需求收到了:用户下载exe时,会自动在exe文件中添加或覆盖某个文件。

想法:

1.由于自解压exe文件由sfx、config.txt和7z压缩文件组成。因此,不能直接打开SevenZFile。

2.从exe文件中,找到config.txt末尾标记的位置(pos ).

3.将exe文件反汇编成两个临时文件:sfx+config.txt文件和z7.7z压缩包文件。

4.调用SevenZFile,添加中覆盖率文件,形成新的压缩文件newz7.7z压缩包。

5.将sfx+config.txt文件和newz7.7z压缩包合并成exe raw和解压文件。

代码如下:

其中:d:\ test \ 7z self-extracting.exe是一个自解压的exe文件。

/** * 查找文件中的config.txt结尾位置 * * @throws IOException */@Testpublic void getConfigEndPosTest() throws IOException {final File exeFile = new File("d:\test\7z自解压.exe");final byte[] configEnd= ";!@InstallEnd@!".getBytes("ISO-8859-1");final BufferedInputStream exeBis = new BufferedInputStream(new FileInputStream(exeFile));// sfx假定大于124928exeBis.skip(124928);int b;long pos = 124928;int macth = 0;while ((b = exeBis.read()) != -1) {pos++;if (configEnd[macth] == b) {macth++;} else {macth = 0;}if (macth == 15) {System.out.print(pos);break;}}exeBis.close();}/** * 自解压文件拆分成: sfx+config, 7z两个临时文件 * * @throws IOException */@Testpublic void splitFileTest() throws IOException {final File exeFile = new File("d:\test\7z自解压.exe");final FileInputStream exeIn = new FileInputStream(exeFile);final File sfxFile = new File("d:\test\sfx.tmp");sfxFile.createNewFile();final FileOutputStream sfxOs = new FileOutputStream(sfxFile);// 125070 第一步求得的posbyte[] buffer = new byte[125070];int length;length = exeIn.read(buffer);sfxOs.write(buffer, 0, length);sfxOs.close();final File z7File = new File("d:\test\z7.7z");z7File.createNewFile();final FileOutputStream z7Os = new FileOutputStream(z7File);while ((length = exeIn.read(buffer)) > 0) {z7Os.write(buffer, 0, length);}z7Os.close();exeIn.close();}/** * 添加或覆盖的文件到7z * * @throws IOException */@Testpublic void writeFileTo7z() throws IOException { //略,7z文件处理}/** * sfx+config + 新的7z文件成exe. * @throws IOException */@Testpublic void mergeFile() throws IOException {//略, 参考前一篇的《JAVA JAR制作可自运行的EXE包》}

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。