什么是com.walkfreestub?(在安卓手机上导致崩溃)

13

最近,我们的Android应用程序开始崩溃,原因是一个名为com.walkfreestub的包中出现了NullPointerException。目前在网上没有任何关于这个问题的参考(我们尝试过所有与崩溃相关的搜索)。如果有关于这个包或可能原因的任何信息,那将是非常棒的。我们最好的猜测是,有人反编译了我们的APK,并修改了原始代码,以便在非官方应用商店中重新发布它。

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

更新:

现在有几个论坛上的用户抱怨与com.walkfreecom.walkfreestub相关的恶意软件。请参见此处此处此处的链接。不幸的是,这证实了我们的假设,即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)

看起来这些类 https://android.googlesource.com/platform/frameworks/volley/+/master/src/main/java/com/android/volley 只是克隆并移动了命名空间。 - weston
因为它们被注册为...volley.Response.Listener,所以会被调用.internal.类从那个代码库中排除。 - weston
感谢@weston。我们在应用程序中确实使用了Volley,这可能是崩溃发生的原因。我们希望找出克隆包来自何处,以便确定该怎么做。 - Kevin Cooper
3
我们在自己的一个应用程序中也遇到了这个异常情况。产生此异常的应用程序版本是由不同证书签名的。我怀疑有人对该应用进行了反汇编,添加了这段 walkfreestub 代码并重新构建了该应用程序,然后将其分发到 Google Play 之外。 - uwe
1
谢谢@SnildDolkow提供的链接!我自己也搜索了一些,并添加到描述中。 - Kevin Cooper
显示剩余7条评论
3个回答

4

出现类似com.walkfreecom.walkfreestub的软件包似乎来自于通过非官方应用商店传播的恶意软件木马注入反编译APK文件中。该木马似乎会在后台下载更多的不受欢迎的应用程序,并可能执行其他可疑活动。如果您遇到这些恶意APK,请将其提交给反病毒网站,如Malwarebytes!

有关更多信息,请参见此处此处此处的类似帖子。


2
我建议使用反射来检测 com.walkfreestub.* 类,并通知用户。很可能,这种注入是通过自动化脚本实现的,因此他们不会手动搜索您的检测代码。
我的意思是像这里描述的那样检查包是否存在
您可以检查类路径中是否存在 com.walkfreestub.*,并通知用户应用程序已被恶意软件感染,用户应该注意此事。
作为替代方案,您可以尝试检查 APK 签名。

很不幸的是,这个应用程序被攻击了,但现在我们的责任是确保我们的用户保持安全。@Olexandr 给出了很好的建议。 - Kevin Cooper

0

对我来说,这发生在诺基亚设备上。我不使用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$2.onResponse(WalkActionRequest.java:188)
   at com.walkfreestub.internal.action.WalkActionRequest$2.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的第三方库引起的崩溃。 https://github.com/Houny/Downloader


嗨@esoxjem,你能否发布一份崩溃日志或其他信息?如果您不使用Volley,是否还有其他应用程序崩溃? - Kevin Cooper
@Kevin 更新了答案。希望能对你有所帮助。 - esoxjem
这有帮助吗? - esoxjem
我仍然因为这个问题遇到了许多崩溃。 - esoxjem
看起来像是钓鱼软件。堆栈跟踪中还涉及dex spy相关内容。 - esoxjem
感谢您的评论@esoxjem。请查看被接受的答案以获取解释。 - Kevin Cooper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接