软件资源分享

深入分析最近很火的o泡果奶语音!

小磊 站长闲谈

我发现我们网站还是有很多热爱互联网的小伙伴,今天来讲讲最近很火的o泡果奶语音事件!

那是一节昏昏欲睡的高数课,和平常一样,不愿听课的你拿起了手机,突然发现一位好基友分享了一款神秘软件,你顿时精神抖擞,心想:难道是那种“学习“软件。

于是你临危不乱,果断手机调成最小音量,安装,打开。正当你幻想着”苍老师“向你缓缓走来的时候。。突然,“O泡果奶”的魔性音乐从你的手机以最大音量播出,不论你点击返回,调节音量全都无用!

随后这款恶搞软件(一份礼物)迅速在网络蔓延,甚至上了各大网站排行热榜,网友们也戏称这次事件为1013事件。
深入分析最近很火的o泡果奶语音
之前也有小伙伴问我这样的软件是怎么实现的,为什么会这么反常规,还有它究竟是不是病毒呢?今天我就手把手的带大家详细的分析下这款软件,也希望能给大家带来一点帮助。

俗话说,工欲善其事,必先利其器。这里我就通过MT管理器进行反编译及分析。首先反编译可以看到总体的文件结构,首先我们反编译查看AndroidManifest.xml文件,也就是配置文件。
深入分析最近很火的o泡果奶语音

可以看到软件申请了网络访问权限和存储权限,其中网络访问确实有点可疑,软件入口为com.androlua.LuaApplication,基本可以确定为软件是通过andlua开发的。
深入分析最近很火的o泡果奶语音
然后我们进入它的Welcome类,就是简单的检查版本,然后进入MAIN,没有什么异常,转为java代码如下所示:

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Window;
import com.androlua.LuaApplication;
import com.androlua.LuaBitmap;
import com.androlua.Main;
import com.androlua.NineBitmapDrawable;
import com.androlua.Welcome;
import java.io.IOException;

public class Welcome
extends Activity {
    private boolean a;
    private LuaApplication b;
    private String c;
    private String d;
    private long e;
    private long f;
    private boolean g;
    private String h;
    private String i;

    public boolean checkInfo() {
       //省略了
    }

    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        this.b = (LuaApplication)this.getApplication();
        this.c = this.b.d;
        this.d = this.b.a;
        try {
            Window window = this.getWindow();
            bundle = new NineBitmapDrawable(LuaBitmap.getLocalBitmap((String)this.b.getLuaPath("setup.png")));
            window.setBackgroundDrawable((Drawable)bundle);
        }
        catch (IOException iOException) {
            iOException.printStackTrace();
        }
        if (this.checkInfo()) {//检查版本
            new /* Unavailable Anonymous Inner Class!! */.execute(new Object[0]);
            return;
        }
        this.startActivity();//进入main
    }

    public void startActivity() {
        Intent intent = new Intent((Context)this, Main.class);
        if (this.g) {
            intent.putExtra("isVersionChanged", this.g);
            intent.putExtra("newVersionName", this.h);
            intent.putExtra("oldVersionName", this.i);
        }
        this.startActivity(intent);
        this.finish();
    }
}
接着我们再去它的main 类看下,发现加载了main.lua,主要的逻辑代码都被写在了lua文件中,而且还导入com.baidu.mobstat.StatService,百度查了下是百度统计,也没有异常。
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.androlua.LuaActivity;
import com.baidu.mobstat.StatService;

public class Main
extends LuaActivity {
    private void a(String string, String string2) {
        this.runFunc("onVersionChanged", new Object[]{string, string2});
    }

    public String getLuaDir() {
        return this.getLocalDir();
    }

    public String getLuaPath() {
        this.initMain();
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(this.getLocalDir());
        stringBuilder.append("/main.lua");
        return stringBuilder.toString();
    }

    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        if (bundle == null && this.getIntent().getData() != null) {
            this.runFunc("onNewIntent", new Object[]{this.getIntent()});
        }
        if (this.getIntent().getBooleanExtra("isVersionChanged", false) && bundle == null) {
            this.a(this.getIntent().getStringExtra("newVersionName"), this.getIntent().getStringExtra("oldVersionName"));
        }
        StatService.start((Context)this);//百度统计
    }

    protected void onNewIntent(Intent intent) {
        this.runFunc("onNewIntent", new Object[]{intent});
        super.onNewIntent(intent);
    }
}
接着就是找到main.lua文件进行分析,在assets资源目录下可以找到,除此之外我们也可以发现一个mp3文件,没错就是那个魔性声音的文件。
深入分析最近很火的o泡果奶语音 

但是打开lua 文件会发现已经被加密,但是应该用的旧版的加密,网上已经有详细的解密方法,所以我们先解密。

深入分析最近很火的o泡果奶语音

加密后我们再看就恍然大悟了,解密后的文件如下:

require("import")
import("android.app.*")
import("android.os.*")
import("android.widget.*")
import("android.view.*")
import("android.view.View")
import("android.content.Context")
import("android.media.MediaPlayer")
import("android.media.AudioManager")
import("com.androlua.Ticker")
activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)
activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE)
m = MediaPlayer()
m.reset()
m.setDataSource(activity.getLuaDir() .. "/mc.mp3")
m.prepare()
m.start()
m.setLooping(true)
ti = Ticker()
ti.Period = 10
function ti.onTick()
  activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)
  activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE)
end
ti.start()
function onKeyDown(A0_0, A1_1)
  if string.find(tostring(A1_1), "KEYCODE_BACK") ~= nil then
    activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)
  end
  return true
end

首先会实例化一个MediaPlayer,然后加载播放上图中的assets资源目录的那个MP3文件。

深入分析最近很火的o泡果奶语音


然后下面才是最恶心的,在播放音乐后,软件又实例化一个Ticker,也就是定时器,设置时间为10,(应该是10微秒)。

深入分析最近很火的o泡果奶语音
每次循环10微秒后,软件就会把你的音量提高15,(音量静音为0,最大为100),然后再把你的状态栏和虚拟导航栏进行隐藏。所以无论你怎么调小音量也是无济于事,当然如果你的手速可以快过10微妙或许可以有点效果

 activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)
 activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE)

接下来就是最后一步了,拦截你的返回键,也就是最下面的几行代码,软件通过“KEYCODE_BACK”判断是否按下返回键,当按下返回键后,操作会被软件劫持,再次让你的音量调高15,所以此时返回键就相当于音量调高键了

深入分析最近很火的o泡果奶语音

暂时分析到这,没有发现有类似病毒等的异常行为,只是单纯的一套强制循环播放程序,而申请了网络权限估计应该是为了百度统计。

当然我也不是专业的,所以也可能有的可疑行为没有发现,所以大家还是尽量注意下这类软件,也不要安装一些陌生软件。不过我看网上很多一份礼物的软件都只是简易版,很多功能并没有实现!

标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:6352056@qq.com

同类推荐
评论列表

最新评论
推荐内容
热门文章
随机推荐
资源标签
站长闲谈 深入分析最近很火的o泡果奶语音!
我发现我们网站还是有很多热爱互联网的小伙伴,今天来讲讲最近很火的o泡果奶语音事件! 那是一节昏昏欲睡的高数课,和平常一样,不愿听课的你拿起了手...
扫描二维码阅读原文
QQ技术教程网站_免费分享互qq技术教程-小磊技术网 January, 01
生成社交图 ×