我正在尝试制作一个安全的android应用。我已经在我的应用中启用了 proguard 。但是在反编译时它不会隐藏任何xml文件或 list 。它仅更改.java文件。
我尝试使用 apktool 从Play商店反编译另一个应用的apk。然后我得到了以下异常
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.Direc
toryException: java.util.zip.ZipException: error in opening zip file
at brut.androlib.ApkDecoder.hasSources(ApkDecoder.java:199)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:83)
at brut.apktool.Main.cmdDecode(Main.java:146)
at brut.apktool.Main.main(Main.java:77)
Caused by: brut.directory.DirectoryException: java.util.zip.ZipException: error
in opening zip file
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:55)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:38)
at brut.androlib.res.util.ExtFile.getDirectory(ExtFile.java:55)
at brut.androlib.ApkDecoder.hasSources(ApkDecoder.java:197)
... 3 more
Caused by: java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:53)
... 6 more
然后,不会显示xml文件和 list 。我也想这样保护我的应用程序。这怎么可能?
最佳答案
要回答您的问题,完全不可能使APK完全安全。 XML文件为easily parsed without apktool。
我问了Ben Gruver/JesusFreke(开发smali的人),他说不可能完全保护APK文件,但会使他人更难以反编译。只要Android可以读取您项目中的资源/代码,工具也可以。
您尝试反编译Gmail时看到的异常是因为需要为Lollipop(which is actively being working on)更新apktool。
我发现answer by @classc_abc是最好的,它使反编译APK更加困难:
关于android - 反编译apk时发生异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27541166/