【问题标题】:Throw exception while apktool try to decompile/unarchive my apk在 apktool 尝试反编译/取消归档我的 apk 时引发异常
【发布时间】:2019-04-02 23:38:40
【问题描述】:

我试图强化我的 APK 以防逆向工程。我知道阻止反编译 APK 是不可能的,但我看到一些 APK 在反编译过程中使用了一种技巧来抛出异常 apktool(不仅仅是 APK 工具,所有像 QARK 这样的反编译器都可以't return a classes.dex APK),所以我决定这样做,以便在逆向工程中花费更长的时间

在这里你可以看到硬化应用的一些结果: winrar:winrar.winrar2

apktool:

    sudo apktool d -f app/TTT.apk --keep-broken-res
    I: Using Apktool 2.3.1-dirty on TTT.apk
I: Loading resource table...
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
W: Multiple types detected!  ignored!
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/lab/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
Exception in thread "main" java.lang.NullPointerException
    at brut.androlib.res.data.value.ResEnumAttr.serializeBody(ResEnumAttr.java:56)
    at brut.androlib.res.data.value.ResAttr.serializeToResValuesXml(ResAttr.java:64)
    at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:555)
    at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:269)
    at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:132)
    at brut.androlib.ApkDecoder.decode(ApkDecoder.java:124)
    at brut.apktool.Main.cmdDecode(Main.java:163)
    at brut.apktool.Main.main(Main.java:72)

请为我解释一下,这怎么可能?(我需要实现细节)

【问题讨论】:

  • 您确定这不仅仅是您正在查看的损坏的 APK 吗?如果 APK 在您尝试在 Android 上安装时确实有效,我发现您不太可能遇到错误。
  • 嗨@JosephSible,回复坦克,是的,我很确定,看看关键应用程序,比如支付目的(apktool 在 98% 的 apk 上运行良好,2% 的 android 应用程序实现了这个技巧)
  • 你能举一个这样的APK的具体例子吗?
  • 那个链接失效了。连接超时。
  • @JosephSible,那个网站限制了IP地址地理,我在这里上传给你,在链接到期之前尽快下载file.io/15kaKt

标签: android reverse-engineering apktool hardening crypto-obfuscator


【解决方案1】:

您链接到的第一个 APK 不是有效的 APK。它只是一个纯文本文件,以下文本一遍又一遍地重复:

HTTP/1.1 200 OK
Date: Sat, 27 Oct 2018 17:35:36 GMT
Strict-Transport-Security: max-age=31536000;includeSubDomains; preload
Last-Modified: Sat, 28 Jul 2018 11:40:03 GMT
ETag: "23b1fe5-5720db0636ac0"
Accept-Ranges: bytes
Content-Length: 37429221
Keep-Alive: timeout=20
Connection: Keep-Alive

显然,只是重复的 HTTP 响应标头不能构成有效的 APK。您的工具在该文件上失败的原因不是它被加密/混淆/加固,而是它根本不是一个真正的 APK,如果您尝试安装它就无法工作。


当我 unzip 它时,您链接到的第二个 APK 可以为我提取。

我的结论是你说的“加固”是不存在的(好像只是混淆了有效和无效的APK),任何安装成功的APK也可以成功解压。

【讨论】:

  • 那么你安装的文件不是你链接的那个。
  • 是的,你说得对,我认为文件在传输时损坏了,但这次我检查了(我从这个链接下载并安装它的工作!),对不起,请重新下载请@ 987654321@(现在可以测试了)
  • @learner 那确实是有效的,而且在我看来它并没有“硬化”。答案已更新。
  • 那么为什么 apktool 会抛出异常或 QARK 知道它是 APK 文件?
  • 你错了,为什么因为当你解压那个 apk 时,你可以看到 classes.dex 没有 res 目录你只能看到一些加密的文件(我认为)所以它变硬了,你不给我正确答案!
【解决方案2】:

这是加密 java 类功能(如 dexgaurd 或 Bangcle kh);这也受到原生库加密 (NLE) + JNI 混淆 (JNI) 的保护,来自 dexprotector 之类的东西(我在动态分析工具中发现了这一点)

以及This 文章和this 的语义学者的许多坦克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-19
    • 2014-07-28
    • 1970-01-01
    • 2015-02-16
    • 2019-08-02
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多