2010-06-26 137 views
75

用户是否可以将我的应用程序的apk文件转换回实际的代码? 如果他们这样做 - 有什么办法可以防止这种情况发生?是否可以反编译Android .apk文件?

+1

有几种[反编译APK的方法](http://geeknizer.com/decompile-reverse-engineer-android-apk)。我只是APKTool更经常,它的最好和最强大的。它很容易[修改apk文件](http://www.androidng.com/how-to-modify-android-apk)。 – Taranfx 2011-03-06 17:41:27

+0

我在这里写了一篇博客文章:http://codexplo.wordpress.com/2012/03/15/how-to-decompile-android-apk-to-java-source-code/但是,再次,这将是困难的为混淆代码... – rokonoid 2012-06-18 12:39:28

+1

http://yeblon.com/how-to-decompile-android-apk-app-files - 这可能belsh – 2013-02-05 20:01:25

回答

75

首先,apk file只是一个修改后的jar文件。所以真正的问题是他们可以反编译里面的dex文件。答案是有点。已经有反汇编程序,例如dedexersmali。您可以期望这些只会变得更好,理论上最终应该可以反编译为真正的Java源代码(至少有时)。参见前面的问题decompiling DEX into Java sourcecode

你应该记住的是混淆从来没有工作。选择一个好的执照,并尽力通过法律执行。不要用不可靠的技术手段浪费时间。

+39

永远不要说永远。混淆不会阻止一个坚定的小偷,但它会减缓或威慑其他许多人。使用Proguard进行处理是一种简单且可靠的混淆代码的方式,作为奖励它也会优化它。它包含在Android SDK中,因此得到了Google的认可。 – 2011-07-26 19:39:30

+3

模糊处理绝对有效,但你必须更清楚地定义你的目标是什么。显然,永远保持源代码真正安全的唯一方法是永远不要让任何人访问它,服务器或客户端。请注意,Proguard在XML文件中引用的类上运行得不好。你需要利用手动混淆来解决这个问题。 – MattC 2012-01-03 22:57:53

+0

upvote提醒dex文件 – 2014-05-31 08:02:48

31

Decompilation of APK file is possible. But it might be difficult to understand the code if it is obfuscated.

ApkTool查看资源内APK文件

  • 提取物AndroidManifest.xml中,一切都在res文件夹(布局XML文件,图像,HTMLS上的WebView等使用。)
  • 命令:apktool.bat d sampleApp.apk
  • 注意:您可以通过使用7-zip之类的zip实用程序来实现此目的。但是,它也提取所有.class文件的.smali文件。

使用dex2jar

  • 从生成.apk文件的.jar文件,我们需要JD-GUI从这个的.jar查看源代码。
  • 命令:dex2jar sampleApp.apk

反编译的.jar使用JD-GUI

  • 反编译的.class文件(obfuscated-在Android应用程序的情况下,但可读取的原代码中获得在其他.jar文件的情况下)。即,我们从应用程序中获取.java。
+0

apktool不会吐出java源文件!正如我在回答中所述,只有smali – 2012-04-30 18:43:22

+1

,apktool从.apk创建.jar,我们必须使用JD-GUI类似工具来反编译.jar以实现.java源文件。 – gtiwari333 2012-04-30 19:07:45

+1

你怪我'救了我的命!多棒的贴子!由于SSD失效,我失去了最后两天的代码(遗憾的是,我没有提交git)。不过,我确实拥有apk,现在我有我的来源,介意你,有点不同,但来源! – farcrats 2012-08-21 18:28:46

0

当使用dex2jar/apktool时,有时候会出现破损的代码,尤其是在循环中。为了避免这种情况,请使用jadx,它将dalvik字节码反编译为java源代码,而不是先创建.jar/.class文件,因为dex2jar确实(apktool使用dex2jar,我认为)。它也是开源的,正在积极开发。它甚至还有一个GUI,用于GUI狂热分子。尝试一下!

2

我也可以补充说,现在可以在线反编译Android应用程序,不需要软件!

这里有两个选项供您:

+0

decompileandroid.com处于脱机状态(当您上传apk时,您将再次下载它时出现问题),http://www.javadecompilers.com/apk已将我的apk放入队列很长一段时间。我离线,然后在线,它仍然在队列中。我清除了所有的浏览记录,现在我第二次上传的apk已经排队了。 – iOSAndroidWindowsMobileAppsDev 2016-08-11 07:16:29

1

下载此jadx工具https://sourceforge.net/projects/jadx/files/

将它解压缩,比lib文件夹运行jadx - 桂 - 0.6 .jar文件现在浏览你的apk文件。 完成了。自动apk将反编译并保存按保存按钮。 希望它能为你工作。 谢谢

相关问题