【发布时间】:2015-11-11 20:41:59
【问题描述】:
最近,由于 NullPointerException 位于名为 com.walkfreestub 的包中,我们的 Android 应用开始崩溃。目前在网上绝对没有引用此内容(我们已经尝试了与崩溃相关的各种其他搜索)。有关此软件包或可能原因的任何信息都会很棒。我们最好的猜测是有人反编译了我们的 APK 并修改了原始代码,以便在非官方应用商店中重新发布。
值得注意的是,这种情况最常发生在印度和尼日利亚,并且经常发生在 Xiaomi 2014818 设备上(但这可能只是这些国家/地区的常见设备)。版本主要是 Android 4.2 和 4.4,但也有一些在 5.1 和其他版本上崩溃。
更新:
现在有几个在线论坛,用户抱怨与com.walkfree 和com.walkfreestub 相关的恶意软件。请参阅链接 here、here 和 here。不幸的是,这证实了我们的假设,即 APK 确实在非官方应用商店中被恶意软件修改。
完整的堆栈跟踪:
java.lang.NullPointerException: replacement == null
at java.lang.String.replace(String.java:1348)
at com.walkfreestub.trace.ReferrerTrack.checkTrackUrl(ReferrerTrack.java:158)
at com.walkfreestub.internal.PushServiceProxy.startDownloadApp(PushServiceProxy.java:454)
at com.walkfreestub.internal.PushServiceProxy.notifyToDownload(PushServiceProxy.java:239)
at com.walkfreestub.internal.PushServiceProxy.notifyMessage(PushServiceProxy.java:274)
at com.walkfreestub.internal.PushServiceProxy.onMessageLoaded(PushServiceProxy.java:342)
at com.walkfreestub.internal.push.WalkPushRequest$6.onResponse(WalkPushRequest.java:375)
at com.walkfreestub.internal.push.WalkPushRequest$6.onResponse(WalkPushRequest.java:1)
at com.walkfreestub.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
at com.walkfreestub.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:1)
at com.walkfreestub.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5136)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:740)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
看起来这里的一些类 android.googlesource.com/platform/frameworks/volley/+/master/… 只是克隆并移动了命名空间
-
调用
.internal.类是因为它们已注册...volley.Response.Listeners,因此它们不在该存储库中。 -
谢谢@weston。我们确实在我们的应用程序中使用了 Volley,这可能就是发生这种崩溃的原因。我们想弄清楚这个克隆包的来源,以便我们确定如何处理它。
-
我们在我们的一个应用程序中也看到了这个异常。产生此异常的应用程序版本使用不同的证书进行签名。我怀疑有人反汇编了应用程序,添加了这个 walkfreestub 代码并再次构建它,然后将其分发到 Google Play 之外。
-
感谢@SnildDolkow 的链接!我搜索了自己,发现了更多。添加了描述链接。