2011-06-22 55 views
8

我在運行Java應用程序的平臺上工作。這些應用程序經常被混淆,其中大多數使用ProGuard,這使我們的平臺調試問題變得非常困難。反編譯的java字節碼

目前我使用JD(http://java.decompiler.free.fr/)來反編譯這些應用程序。 JD做了一份體面的工作,但有時生成的代碼太難理解了。

這似乎發生的主要原因是模糊處理工具利用JVM字節碼的較少約束規範來生成有效字節碼,該字節碼不會映射回有效Java代碼(例如:積極重載)。

所以,我的問題是:是否有一個反編譯器專門處理混淆字節碼?

+0

你試過http://members.fortunecity.com/neshkov/dj.html –

+0

@ anirudh4444只在Windows上運行。我需要在Ubuntu上運行的東西。 – JoaoHornburg

+0

您可以使用wine/mono在ubuntu上運行它。 –

回答

5

我懷疑任何反編譯器都這麼做。但是,您可以實現自定義字節碼轉換,並使用諸如ASM之類的東西來重命名重載的方法和變量名稱。

5

這裏有一個反編譯器叫Fernflower,由會員開發。它擁有一個專門用於反編譯代碼的反編譯器,但是你可能想要用一點鹽來提出它的要求。 它在這裏上傳: https://github.com/Zidonuke/Bukkit-MinecraftServer/blob/master/tools/fernflower.jar?raw=true

+0

Fernflower不再正式可用,它仍然可以通過相當簡單的控制流轉換來擊敗。 – Antimony

+0

@Antimony謹慎解釋什麼是轉換? AFAIK它甚至可以處理ZKM的不透明謂詞插入,這發生(發生?)是遊戲中最好的流動混淆。 – oldrinb

+0

Fernflower回來了,孩子們! – thomas