【问题标题】:Smali - Undeclared static methodSmali - 未声明的静态方法
【发布时间】:2016-12-14 14:42:14
【问题描述】:

在编译了某个 apk 并浏览了 smali 代码后,我在文件 com/name/name/r.smali 中偶然发现了这一行:

invoke-static {v1, v0, v2}, Lcom/name/name/p;->a(Ljava/lang/String;Ljava/util/List;Lcom/name/name/CallbackI;)V

name 在这种情况下是占位符

不幸的是 com/name/name 中不存在 p 和 CallbackI 这两个类,这怎么可能?

【问题讨论】:

    标签: android reverse-engineering smali


    【解决方案1】:

    有几种可能:

    1. 引用这些缺失类的代码是永远不会执行的死代码。
    2. 应用程序在尝试运行该代码时崩溃。
    3. 类在别处定义。应用程序是否使用了多 dex?或者该应用可能使用 DexClassLoader 来加载另一个 dex 文件?

    【讨论】:

    • 多dex是什么意思?
    • Multidex 是一个应用拥有多个 dex 文件的地方。 classes.dex、classes2.dex 等 (developer.android.com/studio/build/multidex.html) 默认情况下,baksmali 仅反汇编 classes.dex。您可以使用 -e 参数在 apk 中指定不同的 dex 文件进行反汇编。例如baksmali test.apk -e classes2.dex
    猜你喜欢
    • 2014-05-12
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多