是否可以反编译Android .apk文件?

ary*_*axt 83 obfuscation android decompiling apk dex

用户是否能够将我的应用程序的apk文件转换回实际代码?如果他们这样做 - 有什么办法可以阻止这种情况吗?

Mat*_*hen 79

首先,apk文件只是一个修改过的jar文件.所以真正的问题是他们可以反编译里面的dex文件.答案是那样的.已有反汇编程序,如dedexersmali.你可以期望这些只会变得更好,理论上最终应该可以反编译为实际的Java源代码(至少有时候).请参阅上一个将DEX反编译为Java源代码的问题.

你应该记住的是混淆永远不会起作用.选择一个好的许可证,并尽力通过法律强制执行.不要用不可靠的技术措施浪费时间.

  • 永远不要把话说绝了.混淆不会阻止一个坚定的小偷,但它会减慢或阻止许多其他人.使用Proguard处理是一种简单且可靠的方式来混淆您的代码,作为奖励,它也会优化它.它包含在Android SDK中,因此得到了Google的认可. (43认同)
  • 混淆绝对有效,但你必须更清楚地定义你的目标是什么.显然,保持源代码真正安全的唯一方法是永远不要让任何人访问它,服务器或客户端.请注意,Proguard在XML文件中具有引用的类上不能很好地工作.您需要利用手动混淆来解决这个问题. (3认同)

gti*_*333 33

可以对APK文件进行反编译.但如果代码被混淆,可能很难理解代码.

ApkTool查看APK文件中的资源

  • 提取AndroidManifest.xml和res文件夹中的所有内容(布局xml文件,图像,webview上使用的htmls等)
  • 命令: apktool.bat d sampleApp.apk
  • 注意:您可以使用7-zip等zip实用程序来实现此目的.但是,它还提取所有.class文件的.smali文件.

使用dex2jar

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

使用JD-GUI反编译.jar

  • 反编译.class文件(在android应用程序的情况下是混淆的,但在其他.jar文件的情况下获得可读的原始代码).也就是说,我们从应用程序中获取.java.

  • 你他妈的救了我的命!多么棒的帖子啊!由于 SSD 故障,我丢失了最后两天的代码(遗憾的是,我没有提交到 git)。不过,我确实有 apk,现在我有了我的源代码,请注意,有点不同,但是源代码! (2认同)