不幸的是,我的计算机被盗了,自动云服务备份看起来似乎是自动的,但它已经在几个月前停止了。所以我丢失了所有Android应用程序的Eclipse源文件。
我正在尝试恢复所有这些文件,并希望你能帮助我完成最后的步骤。
所以,我做了什么:
从Play商店下载的Astro文件管理器:https://play.google.com/store/apps/details?id=com.metago.astro&hl=en
使用Astro文件管理器备份我的应用程序,并将它们从我的SD卡复制到计算机。
下载了APK工具:http://code.google.com/p/android-apktool/
(apktool-install-windows-r04-brut1.tar.bz2
和apktool1.4.3.tar.bz2
)并将其提取到c:\windows
文件夹中。
解码apk:apktool d name.apk
到目前为止一切顺利,但在这里我被困住了。因为我对Android编程很陌生:
我收到以下文件夹:res
和smali
res文件夹包含我的所有资源,但是......
我可以看到以前在src
文件夹中的Eclipse中的所有文件现在都在smali
文件夹中并且具有.smali
扩展名,但它们看起来完全不同。
有没有办法让它们恢复“正常”(Java代码)?某种工具/技巧一步一步?
谢谢!
我来到这个博客:http://jack-mannino.blogspot.com.es/2010/09/reversing-android-apps-101.html
但是在解压缩dex2jar文件后,Eclipse无法打开.class文件。有人可以帮忙吗?另外,文件名后面的$ 1,$ 2等是什么意思?
好的,基本上,我做了什么,但我错过了最后一步(我猜):
所以我可以看到所有的源代码,但Manifest似乎缺失了,所以Eclipse仍然不会将它作为项目打开。
有人可以给我最后一个提示吗?非常感谢!
答案 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你必须解压缩文件