2013-12-19 126 views
1

我想查看某個模糊的java應用程序。代碼混淆不清,但足以在執行流程後遇到困難。由於我只想看看它想要發送什麼樣的數據,我還認爲嘗試完全逆向工程應用程序有點矯枉過正。攔截對javax.crypto的調用

我啓動wireshark調試流量,它連接到服務器,獲取二進制blob,似乎做了一些握手,然後做一些查詢完全加密。 通過檢查反編譯的代碼,我知道他使用rsa,blowfish和「sha1andrsa」簽名來簽署一些事情。這使我相信它使用rsa和它從服務器獲得的密鑰(二進制塊)來交換河豚密鑰並從那裏繼續。 這使得通過單純的嗅探來檢查交通幾乎是不可能的。

我想做一個代理dll的java比喻,我想攔截所有調用javax.crypto.cipher,看看它試圖使用什麼密鑰加密哪種數據。我還想提供我自己的河豚密鑰,以便我可以讀取流量(假設所有握手後的流量都是隻有河豚加密的)。

我不能簡單地重新編譯javax.crypto.cipher,因爲這不是在帶有jdk的src.zip中提供的。我還沒有找到關於我想要做什麼的大量文檔,導致我認爲這不是解決這個問題的最佳方式。是否還有某種能夠攔截這些調用的動態java調試器?

編輯: 我去拱,下載OpenJDK的,提取並修改了需要的文件,重新編譯,並把他們安置在改裝成一個目錄。 然後我添加了-Xbootclasspath/p:./ modded -verbose:class到參數,我注意到我的修改後的類沒有從/ modded加載,而是從標準庫中加載。這是一個錯誤?

回答

0

因此,根據我設法弄明白的有用評論。

由jdk給出的src.zip不完整,如果它不包含需要修改的類,請嘗試使用openjdk。

儘管最好的做法是將-Xbootclasspath與目錄一起使用修改後的文件,但它不起作用(或者太過於隱晦)。但是,jce.jar包含javax.crypto,它位於隱藏的jre/lib目錄中。 您應該解壓縮jar文件,替換已編譯的類文件並重新解壓縮所有內容。這終於奏效:D