2011-11-25 58 views
3

我在這裏有一個問題..它使我非常緊張。從已編譯的apk中恢復丟失的代碼

我正在研究這個遊戲,它很棒,所以我拿着它在我的筆記本電腦上工作,做一些工作,同時遠離我的電腦。

長話短說,硬盤故障+可憐的備份導致我失去了一個非常重要的課程。

有沒有反編譯apk的方法來檢索丟失的代碼位?它不是太複雜或複雜,只是它不可能在沒有閱讀的情況下重新編寫它。單。線。的。碼。在整個應用程序中,因爲它初始化了很多類並以特定的方式加載了一堆東西。

通過快速谷歌搜索,我找到了apktool,它將其反編譯成一堆.smali文件,我不認爲這些文件是爲人類閱讀而設計的。

我需要恢復的是一個非常大的方法。我發現了包含它的smali文件,我想我找到了它開始的地方。像

。方法公開宣佈同步負載(LCOM/X/X /遊戲/ X;)我

任何人的幫助,將不勝感激,因爲我將不得不放棄整個遊戲沒有這個方法。

+0

這就是爲什麼你使用源代碼管理(顯然是非現場)。 – Femaref

回答

5

快速谷歌導致反編譯的方式(decompile apk to java source)。但是,即使它產生了java代碼,也可能不會有任何變量名稱(只是默認的變量名稱,如param1),因爲在將源代碼編譯爲字節代碼時,這些變量不可恢復地被刪除,也取決於反編譯器, foreach循環將是while循環,因爲編譯器優化,如果/ else塊可能不代表您的原始控制流。

作爲一般建議:使用某種源代碼控制。在你自己的服務器上,使用github的付費賬戶並不重要,但使用源代碼管理。即使你只是一個開發項目的人。它有助於這種情況,它有助於恢復到以前的版本,它有助於找到你引入的錯誤。當這些工具可用時,請使用它們。