2012-08-27 31 views
4

在使用諸如dex2jar和JD-GUI之類的工具之後,我從APK獲取了Java類。正如大家都知道的那樣,Java字節碼可以轉換回Java類,所以大多數情況下它都是通過一些工具(如ProGuard用於Android的情況下)進行優化和混淆處理,以使其可以與其他人保密。所以我得到的是混淆的代碼,我想使它無錯誤,可讀性強,易於理解,這樣我就可以進一步修改它(僅供我個人使用,我並不意味着違反任何版權)。因此,任何幫助,即建議,工具和幫助材料使這些混淆代碼更接近開發人員編寫的代碼或使其無誤並且易於理解將幫助我很多。目前,我的重點是要扭轉使用ProGuard的喜歡,當我試圖在我自己的項目的逆向工程混淆技術,結果發現:Android如何在通過逆向工程後讀取混淆的Java代碼

  • int資源值可以用ID來改變通過它與產生R文件匹配逆向工程。
  • if/else條件大多轉換爲while(true)和一些continue s和break s。
  • 內部類主要是分手到單獨的文件

因此,任何其他技術和輔料用於上述方式可以描述如何正確地扭轉他們的將是非常有益的。

回答

6

沒有一種神奇的工具可以將混淆代碼重構爲可構建的項目。很可能,您無法反編譯和解除混淆APK以成爲乾淨且可維護的代碼。這是一件好事。

有些工具比dex2jar和jd-gui更好。其中之一是apk-deguard,它聲稱顛倒混淆的過程。從他們對頁面:

DeGuard

DeGuard(http://www.apk-deguard.com)是用於統計 反混淆的Android APK中一個新的系統,在軟件可靠性 實驗室,蘇黎世聯邦理工學院,其開發的同一個小組開發廣泛使用的JSNice 系統。與JSNice類似,DeGuard基於從數千個開源 程序中學到的強大的 概率圖形模型。使用這些模型,DeGuard在Android APK中恢復重要信息 ,包括方法和類名稱以及 第三方庫。 DeGuard可以揭示處理Android惡意軟件中敏感數據的字符串解碼器和類 。

您應該使用Google擁有的Enjarify而不是dex2jar。此外,apktool適用於反編譯APK資源,而不是由dex2jar處理和enjarify。

其他工具包括jadxprocyonfernflowershow-javasmali/baksmali


您將需要一個好的IDE來進行重構。 JEB看起來像是一個重構的好工具。這是Android安全研究人員主要使用的付費工具。

2

這應有助於: DeObfuscator

+0

我試過這個軟件,我選擇文件,當按deobfuscate它並沒有生成任何新的類文件,所以我認爲改變被重寫到相同的類文件,當我打開這個類文件在JD-GUI中查看Java源代碼時,它顯示相同的源代碼以前不是單行更改 –

1

逆向工程是一項艱鉅的任務(我想說的微妙的藝術),主要是碰運氣,尤其是混淆代碼,你可以做的是集中在一些特殊的功能,這似乎很明顯,從那裏開始,重命名和重構類,也是一個好的IDE可以幫助你很多(我個人的建議:NetBeans)。