什么是 com.walkfreestub? (导致 Android 崩溃)

What is com.walkfreestub? (causing crashes on Android)

最近,由于名为 com.walkfreestub 的包中的 NullPointerException,我们的 Android 应用开始崩溃。目前在线上绝对 没有 引用(我们已经尝试了与崩溃相关的各种其他搜索)。关于这个包或可能的原因的任何信息都会很棒。我们最好的猜测是有人反编译了我们的 APK 并修改了原始代码,以便在非官方应用商店中重新发布它。

值得注意的是,这种情况最常发生在印度和尼日利亚,并且经常发生在 小米 2014818 设备上(但这可能只是这些国家/地区的常见设备)。版本主要是 Android 4.2 和 4.4,但在 5.1 和其他版本上也有一些崩溃。

更新:

现在有几个在线论坛,用户抱怨与 com.walkfreecom.walkfreestub 相关的恶意软件。请参阅链接 here, here, and 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.onResponse(WalkPushRequest.java:375)
    at com.walkfreestub.internal.push.WalkPushRequest.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)

对我来说,这发生在诺基亚设备上。我不使用 Volley。所有 HTTP 调用都使用 OkHttp

设备显然已 root 并且 运行 Android 4.1.2。 这是堆栈跟踪:

java.lang.NullPointerException
   at com.xckevin.download.DownloadManager.addDownloadTask(DownloadManager.java:111)
   at com.walkfreestub.internal.download.DownloadControllerForService.download(DownloadControllerForService.java:230)
   at com.walkfreestub.internal.download.DownloadControllerForService.download(DownloadControllerForService.java:201)
   at com.walkfreestub.internal.PushServiceProxy.startDownloadApp(PushServiceProxy.java:435)
   at com.walkfreestub.internal.PushServiceProxy.onActionLoaded(PushServiceProxy.java:525)
   at com.walkfreestub.internal.action.WalkActionRequest.onResponse(WalkActionRequest.java:188)
   at com.walkfreestub.internal.action.WalkActionRequest.onResponse(WalkActionRequest.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:615)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4807)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559)
   at dalvik.system.NativeStart.main(NativeStart.java)

它看起来像是来自扩展 Volley 的第 3 方库的崩溃。 https://github.com/Houny/Downloader

com.walkfreecom.walkfreestub 等软件包似乎来自注入反编译 APK 的特洛伊木马,通过非官方应用商店分发。该木马似乎会在后台下载更多不需要的应用程序,并可能执行其他可疑活动。如果您遇到这些恶意 APK 之一,请将其提交到反病毒网站,例如 Malwarebytes!

查看类似帖子here, here, and here了解更多信息。

我建议使用反射检测 com.walkfreestub.* 类 并通知您的用户。这种注入很可能是通过自动脚本实现的,因此他们不会手动搜索您的检测代码。

我的意思是这里描述的内容 checking whether a package is existent or not

您检查 com.walkfreestub.* 是否存在于类路径中,并通知用户应用程序已被恶意软件破坏,用户应该意识到这一点。

或者,您可以尝试检查 APK 签名。