不幸的是我刪除了我的Android源代碼。嘗試使用dex2jar和baksmali來獲取jar,並使用jd-gui來使用我的.apk文件獲取java源文件。是的,我得到的文件,但我的問題是,在更多的地方在java文件中,代碼是字節格式。需要將其轉換爲可讀格式才能讓自己前進。如何從.apk文件中提取java文件
1
A
回答
2
反編譯不是一門完美的科學,你很少會找回你輸入的確切的Java代碼。
當你編譯你的代碼時,會對它進行一系列的優化,如果你打算獲取原始代碼,這會使反編譯變得更加困難。
充其量,你會得到很多體面反編譯的代碼,以及一些字節碼。您應該能夠根據程序中的位置找出替代該字節代碼的Java代碼,並在您編寫原始代碼時進行查看。
對於大多數簡單的應用程序,從頭開始重寫比反編譯更容易,並嘗試修復反編譯的代碼。
tl; dr:別忘了備份你的代碼。永遠。
0
一般而言,如果您的目標是獲得可讀的來源,那麼像JD-Gui這樣的東西是您最好的選擇。但是對於失敗的情況,你可以試試我編寫的反編譯器Krakatau。
Krakatau旨在能夠反編譯類文件,即使它們被混淆或不從Java編譯。然而,結果不像JD-Gui那樣可讀,因爲它沒有利用Java編譯器留下的模式。這並不完美,但我認爲這絕對值得一試。
P.S. Krakatau僅支持JVM字節碼。您需要一種方法將其從Android轉換回Java字節碼,然後才能對其進行反編譯。
相關問題
- 1. 如何從PC中提取apk文件?
- 2. 從.apk提取文件?
- 3. 如何從apk中提取Lua文件(apk由corona生成)
- 4. 從apk文件中提取密鑰庫文件
- 5. 從apk文件讀取Strings.xml文件
- 6. 如何從應用程序中提取後從xml和java文件創建一個apk文件?
- 7. 如何提取從文本文件中的數據在Java中
- 8. Android:.java文件可從.apk文件讀取?
- 9. 如何在java中提取.Z文件?
- 10. 如何從.apk文件獲取源文件?
- 11. 如何從/ bin /文件夾獲取.apk文件?
- 12. Java如何從文本文件中提取單詞?
- 13. 如何從Java中的XML文件提取所有PCDATA(文本)?
- 14. 從java代碼中卸載apk文件
- 15. 如何在eclipse中輸入.apk文件並從輸入的apk文件中讀取類和xml文件?
- 16. 如何從apk文件使用JAVA eclipse獲取應用版本
- 17. 如何在eclipse中獲取apk文件?
- 18. java:從txt文件中提取點
- 19. 在Java從文件中提取數值
- 20. 如何從.java文件中提取.jar(java-> class)
- 21. 如何從文本文件中提取文件路徑
- 22. 從Java Applet中的Jar文件中提取文件
- 23. 從apk中讀取res文件夾
- 24. 如何從filepicker中提取文件?
- 25. 如何從JAR中提取文件夾
- 26. 如何從文件中提取信息
- 27. 如何從.jar文件中提取類?
- 28. 如何從ICO文件中提取BMP?
- 29. 如何從YUV文件中提取幀?
- 30. 如何從MDF中提取aspx文件?
但我最重要的操作和業務邏輯是字節格式。你的意思是沒有辦法讓它回來?我應該從頭開始嗎? – Joseph
@Joseph在線有可用的字節表,如果你真的花時間在上面,你可能會手動將字節碼轉換爲相應的Java,但這需要很長時間。我建議你從頭開始。 –
很多優化? 'Javac'並沒有真正做優化。雖然Android工具鏈可能會。 – Antimony