Skip to content

Latest commit

 

History

History
89 lines (54 loc) · 4.79 KB

论自习室多起“不可描述声音”是如何产生的.md

File metadata and controls

89 lines (54 loc) · 4.79 KB

论自习室多起“不可描述声音”是如何产生的

绪论

16号晚上图书馆等自习室相继传来某不可告人的声音。据传这是某号称QQ匿名聊天查看器干的好事。从某群里面弄到安装包后自己在宿舍一个人测试了下:

  • 启动后,可以退回主屏幕或手机其它界面,但不定期会回到APP的界面
  • 可以调节音量,但立刻被调回最大值
  • 过了一会,系统提示“QQ匿名聊天查看器已停止工作”,空气突然安静:doge:

本论

既然已经钦定了,那么于是简单地逆向了一下,发现

😓居然没有混淆!

真开心。同时,由于这玩意没混淆,那么可以合情推理一下:

一般那些涉及XX的XX交易的恶意软件都是各种加壳混淆反逆向反XX的,

因此,看来这个APP只是个恶作剧APP而已。Naïve

不过,讲道理,这种大段大段往代码里塞中文的,总感觉在哪里见过:smirk:

img

当然你要说Swift支持用emoji写代码我也没意见:trollface:

既然看到了一个东西叫runtime,那么推测这个应该是某个运行时类库,希望这是公开的

还果然是

img

OK,让我脑补一下一个刚毕业的高中生用易语言写恶作剧应用的场景:doge:

既然现在情况慢慢明朗了起来,我们不如再看看第二个问题,那就是这玩意是咋工作的

img

看来这个易安卓框架也照搬了易语言里面的窗口的概念。那么我们再来看看com.o.主窗口里面是个啥东西

img

img

看得出来这里做了3件事情:

  • 调大音量,播放XX音频
  • 注册自定义广播后台服务广播
  • 开启闹钟,每0.5秒给后台服务发送“闹钟”消息(这一点是翻易安卓的反编译结果+自己的瞎猜得到的:joy:此处省略100字)

那么后台服务收到闹钟消息之后做了啥呢

img

这个作者果然不是以一个好人的心态来写这个恶作剧的:每0.5秒开启一个无限循环,在每个无限循环里面不停地发送自定义广播后台服务广播

但是,这个作者还是需要学习一个:Android里面的每个服务默认只有一个主线程,那么在上面的服务处理过程函数执行完之前后面的闹钟消息是不会被响应的。因此,实际的效果是,只有一个无限循环,在这个无限循环里面不停地发送自定义广播后台服务广播😒还是很恶劣的

收到后台服务广播之后,那么

img

调大音量,把APP窗口放到前台,并且屏幕解锁

PS:一开始我以为音量属于系统设置,那么我可以通过禁掉这个APP的修改系统设置的权限来避免它修改音量。然而修改音量用的是android.media.AudioManager.html#setStreamVolume,然而权限管理限制的是android.provider.Settings.System。毕竟还是图样啊

结论

  • 这只是个简单的恶作剧软件,没有其它危害
  • 但是这个软件通过滥用系统资源来达到目的
  • 作者估计初学Android开发
  • 很惭愧,只做了一些微小的贡献,谢谢大家

参考文献

原文链接

CC0
To the extent possible under law, the person who associated CC0 with this work has waived all copyright and related or neighboring rights to this work.