用户是否可以将我的应用程序的apk文件转换回实际的代码? 如果他们这样做 - 有什么办法可以防止这种情况发生?是否可以反编译Android .apk文件?
回答
首先,apk file只是一个修改后的jar文件。所以真正的问题是他们可以反编译里面的dex文件。答案是有点。已经有反汇编程序,例如dedexer和smali。您可以期望这些只会变得更好,理论上最终应该可以反编译为真正的Java源代码(至少有时)。参见前面的问题decompiling DEX into Java sourcecode。
你应该记住的是混淆从来没有工作。选择一个好的执照,并尽力通过法律执行。不要用不可靠的技术手段浪费时间。
永远不要说永远。混淆不会阻止一个坚定的小偷,但它会减缓或威慑其他许多人。使用Proguard进行处理是一种简单且可靠的混淆代码的方式,作为奖励它也会优化它。它包含在Android SDK中,因此得到了Google的认可。 – 2011-07-26 19:39:30
模糊处理绝对有效,但你必须更清楚地定义你的目标是什么。显然,永远保持源代码真正安全的唯一方法是永远不要让任何人访问它,服务器或客户端。请注意,Proguard在XML文件中引用的类上运行得不好。你需要利用手动混淆来解决这个问题。 – MattC 2012-01-03 22:57:53
upvote提醒dex文件 – 2014-05-31 08:02:48
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。
apktool不会吐出java源文件!正如我在回答中所述,只有smali – 2012-04-30 18:43:22
,apktool从.apk创建.jar,我们必须使用JD-GUI类似工具来反编译.jar以实现.java源文件。 – gtiwari333 2012-04-30 19:07:45
你怪我'救了我的命!多棒的贴子!由于SSD失效,我失去了最后两天的代码(遗憾的是,我没有提交git)。不过,我确实拥有apk,现在我有我的来源,介意你,有点不同,但来源! – farcrats 2012-08-21 18:28:46
当使用dex2jar
/apktool
时,有时候会出现破损的代码,尤其是在循环中。为了避免这种情况,请使用jadx,它将dalvik字节码反编译为java源代码,而不是先创建.jar
/.class
文件,因为dex2jar
确实(apktool使用dex2jar,我认为)。它也是开源的,正在积极开发。它甚至还有一个GUI,用于GUI狂热分子。尝试一下!
我也可以补充说,现在可以在线反编译Android应用程序,不需要软件!
这里有两个选项供您:
decompileandroid.com处于脱机状态(当您上传apk时,您将再次下载它时出现问题),http://www.javadecompilers.com/apk已将我的apk放入队列很长一段时间。我离线,然后在线,它仍然在队列中。我清除了所有的浏览记录,现在我第二次上传的apk已经排队了。 – iOSAndroidWindowsMobileAppsDev 2016-08-11 07:16:29
下载此jadx工具https://sourceforge.net/projects/jadx/files/
将它解压缩,比lib文件夹运行jadx - 桂 - 0.6 .jar文件现在浏览你的apk文件。 完成了。自动apk将反编译并保存按保存按钮。 希望它能为你工作。 谢谢
- 1. 如何反编译Android .apk文件?
- 2. 反编译.apk文件
- 3. 无法反编译的apk文件
- 4. 在APK上反编译.smali文件
- 5. 是否可以轻松完全反编译python编译(* .pyc)文件?
- 6. Android:是否可以反汇编obb文件
- 7. Android - 如何解码和反编译任何APK文件?
- 8. Android,是否可以合并两个APK文件?
- 9. 反编译保护APK
- 10. 编辑APK反编译的代码
- 11. 应用程序是否可以反编译?
- 12. 是否可以反汇编Visual FoxPro 9.0 exe文件?
- 13. Android,是否可以打包APK文件(由他人创建)以显示广告?
- 14. 哪些类型的可执行文件可以反编译?
- 15. 是否可以导入已编译的python文件?
- 16. 是否可以将nodejs项目编译为单个JavaScript文件?
- 17. AAR归档文件是否可以包含已编译的类?
- 18. Android:是否可以检查该文件是否是一个apk文件,如果没有扩展提供
- 19. 是否可以将java反编译器设置为非常详细的
- 20. 如何用eclipse打开反编译apk文件?
- 21. 如何在反编译apk中获取Google-Service.Json文件?
- 22. gcc是否可以不编译代码?
- 23. 编译器是否只编译可以执行的代码?
- 24. 是否可以用mpif90编译pgplot?
- 25. 是否可以恢复ASP.NET预编译?
- 26. 反编译APK,Catlog“ClassNotFound”错误
- 27. 反编译APK,但缺少一些类?
- 28. 基于编译器反馈的优化是什么?是否可以使用arm gcc编译器?
- 29. 是否可以测试没有源代码的APK文件?
- 30. 是否可以从.apk文件获取Android应用程序类别?
有几种[反编译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
我在这里写了一篇博客文章:http://codexplo.wordpress.com/2012/03/15/how-to-decompile-android-apk-to-java-source-code/但是,再次,这将是困难的为混淆代码... – rokonoid 2012-06-18 12:39:28
http://yeblon.com/how-to-decompile-android-apk-app-files - 这可能belsh – 2013-02-05 20:01:25