从Android手机恢复APK文件到Eclipse

时间:2012-09-14 16:03:29

标签: eclipse decoding apk smali

不幸的是,我的计算机被盗了,自动云服务备份看起来似乎是自动的,但它已经在几个月前停止了。所以我丢失了所有Android应用程序的Eclipse源文件。

我正在尝试恢复所有这些文件,并希望你能帮助我完成最后的步骤。

所以,我做了什么:

  1. 从Play商店下载的Astro文件管理器:https://play.google.com/store/apps/details?id=com.metago.astro&hl=en

  2. 使用Astro文件管理器备份我的应用程序,并将它们从我的SD卡复制到计算机。

  3. 下载了APK工具:http://code.google.com/p/android-apktool/apktool-install-windows-r04-brut1.tar.bz2apktool1.4.3.tar.bz2)并将其提取到c:\windows文件夹中。

  4. 解码apk:apktool d name.apk

  5. 到目前为止一切顺利,但在这里我被困住了。因为我对Android编程很陌生:

    我收到以下文件夹:ressmali

    res文件夹包含我的所有资源,但是......

    我可以看到以前在src文件夹中的Eclipse中的所有文件现在都在smali文件夹中并且具有.smali扩展名,但它们看起来完全不同。

    有没有办法让它们恢复“正常”(Java代码)?某种工具/技巧一步一步?

    谢谢!

    我来到这个博客:http://jack-mannino.blogspot.com.es/2010/09/reversing-android-apps-101.html

    但是在解压缩dex2jar文件后,Eclipse无法打开.class文件。有人可以帮忙吗?另外,文件名后面的$ 1,$ 2等是什么意思?


    好的,基本上,我做了什么,但我错过了最后一步(我猜):

    • 已安装的Astro文件管理器
    • 备份应用
    • 复制APK并使用dex2jar:'d2j-dex2jar c:\ apk \ myappname.apk'来创建jar文件
    • 使用JD(http://java.decompiler.free.fr/?q=jdgui)创建zipfile
    • 解压缩了zipfile

    所以我可以看到所有的源代码,但Manifest似乎缺失了,所以Eclipse仍然不会将它作为项目打开。

    有人可以给我最后一个提示吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

在这种情况下,您最好的方法是使用dex2jar工具将apk(实际上是dex)转换为jar文件,并使用像jd这样的java反编译器进行检查。

但JD有时会产生误导性的java源代码,因此您可能需要引用可以通过apktool获取的类的smali代码。

这是dalvik操作码:http://s.android.com/tech/dalvik/dalvik-bytecode.html

最后,那些$ 1,$ 2之后的类名意味着在该类中使用的内部类。

答案 1 :(得分:0)

使用axmlprinter 2来解码你的清单(大多数情况下apktool不起作用)所以使用dex 2 jar并使用AXMLprinter2你必须解压缩文件