从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.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文件的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 消息称 RPG 游戏《博德之门 3》将拥
- 下一篇: 平安口袋银行app怎么解绑银行卡
