日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从exe4j生成的exe中抽取jar文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

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

轉載于:https://my.oschina.net/xiaominmin/blog/1597872

總結

以上是生活随笔為你收集整理的从exe4j生成的exe中抽取jar文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。