30,000 người dùng Android mua ứng dụng Anti-Virus không có thật

Boy Milano

Hắc Mỹ Nhân
Tham gia
6/4/14
Bài viết
554
Được thích
734
1580 #1

Xuất liện lần đầu tiên trên cửa hàng Play Store và ngày 28 tháng 3. Virus Shield nhanh chóng đứng thứ 3 trong danh sách những ứng dụng phổ biến có tính phí trên thị trường, ứng dụng này được bán với giá $3.99 và quảng cáo là: Virus Shield hỗ trợ điện thoại của bạn tìm kiếm virus và tiêu diệt nó, hoạt động của Virus Shield sẽ không ảnh hướng đến tuổi thọ pin cũng như làm chậm khả năng hoạt động trên điện thoại của bạn. Đánh giá là 5 sao và trong vòng một tuần đã có 30,000 người dùng trả phí để tải về ứng dụng này cho thiết bị của họ. Và cuối cùng, tất cả đã bị lừa.


Mô tả của ứng dụng này cho rằng nó "Ngăn chặn các ứng dụng độc hại được cài đặt trên thiết bị của bạn... quét các ứng dụng, tập tin, các cài đặt, các tập tin âm thanh và hình ảnh theo thời gian thực... đồng thời nó cũng bảo vệ thông tin cá nhân của bạn. Họ cũng khẳng định là có rất ít ảnh hưởng đến tuổi thọ pin và cũng không có quảng cáo. Vấn đề duy nhất là ứng dụng này chỉ có một dấu "X" và sẽ chuyển thành dấu Check sau khi bạn kích hoạt nó. Chỉ có vậy!!!



Một báo cáo được công bố hôm qua cho biết, việc dịch ngược mã nguồn ứng dụng này đã được thực hiện và kết quả là các đoạn mã của ứng dụng nào hoàn toàn vô giá trị. Dưới đây là những đoạn mã của ứng dụng được các lập trình viên dịch người để chứng minh.

Code:
package com.deviant.security.shield;

public final class BuildConfig {
    public static final String BUILD_TYPE = "debug";
    public static final boolean DEBUG;
    public static final String FLAVOR = "";
    public static final String PACKAGE_NAME = "com.deviant.security.shield";
    public static final int VERSION_CODE = 4;
    public static final String VERSION_NAME = "2.2";

    static {
        DEBUG = Boolean.parseBoolean("true");
    }
}
Code:
package com.deviant.security.shield;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import com.deviant.security.shield.utility.NotificationHelper;

public class MainActivity extends ActionBarActivity {
    public static final String PREFS_NAME = "ShieldPrefs";
    public boolean isEnabled;
    private Menu menu;
    SharedPreferences settings;

    public MainActivity() {
        this.isEnabled = false;
    }

    private void toggleShield() {
        ImageView enableButton = (ImageView) findViewById(R.id.enableButton);
        boolean isEnabled = this.settings.getBoolean("isEnabled", false);
        Editor editor = this.settings.edit();
        MenuItem status = this.menu.findItem(R.id.action_status);
        if (isEnabled) {
            editor.putBoolean("isEnabled", false);
            status.setTitle(R.string.action_status_disabled);
            enableButton.setImageResource(R.drawable.shield_disabled);
        } else {
            editor.putBoolean("isEnabled", true);
            status.setTitle(R.string.action_status_enabled);
            enableButton.setImageResource(R.drawable.shield_enabled);
        }
        editor.commit();
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.settings = getSharedPreferences(PREFS_NAME, 0);
        setContentView(R.layout.activity_main);
        ImageView enableButton = (ImageView) findViewById(R.id.enableButton);
        if (this.settings.getBoolean("isEnabled", false)) {
            enableButton.setImageResource(R.drawable.shield_enabled);
        } else {
            enableButton.setImageResource(R.drawable.shield_disabled);
        }
        enableButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                MainActivity.this.toggleShield();
            }
        });
        new NotificationHelper(getApplicationContext()).createNotification();
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        this.menu = menu;
        getMenuInflater().inflate(R.menu.main, menu);
        boolean isEnabled = this.settings.getBoolean("isEnabled", false);
        MenuItem status = menu.findItem(R.id.action_status);
        if (isEnabled) {
            status.setTitle(R.string.action_status_enabled);
        } else {
            status.setTitle(R.string.action_status_disabled);
        }
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == 2131165246) {
            return true;
        } else {
            if (id == 2131165245) {
                toggleShield();
            }
            return super.onOptionsItemSelected(item);
        }
    }
}
Code:
package com.deviant.security.shield.utility;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat.Builder;
import com.deviant.security.shield.R;

public class NotificationHelper {
    private int NOTIFICATION_ID;
    private Builder mBuilder;
    private PendingIntent mContentIntent;
    private CharSequence mContentTitle;
    private Context mContext;
    private Notification mNotification;
    private NotificationManager mNotificationManager;

    public NotificationHelper(Context context) {
        this.NOTIFICATION_ID = 1;
        this.mContext = context;
    }

    public void createNotification() {
        this.mNotificationManager = (NotificationManager) this.mContext.getSystemService("notification");
        this.mBuilder = new Builder(this.mContext);
        this.mBuilder.setContentTitle("Scan in progress").setContentText("Scanning for malicious content").setSmallIcon(R.drawable.shield_notification);
        this.mBuilder.setContentInfo("0%");
        this.mContentIntent = PendingIntent.getActivity(this.mContext, 0, new Intent(), 0);
        this.mBuilder.setContentIntent(this.mContentIntent);
        new Thread(new Runnable() {
            public void run() {
                int incr = 0;
                while (incr <= 100) {
                    NotificationHelper.this.mBuilder.setContentInfo(incr + "%");
                    NotificationHelper.this.mBuilder.setProgress(100, incr, false);
                    NotificationHelper.this.mNotificationManager.notify(NotificationHelper.this.NOTIFICATION_ID, NotificationHelper.this.mBuilder.build());
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    incr++;
                }
                NotificationHelper.this.mBuilder.setContentTitle("Scan complete");
                NotificationHelper.this.mBuilder.setContentText("Your device is secure");
                NotificationHelper.this.mBuilder.setProgress(0, 0, false);
                NotificationHelper.this.mNotificationManager.notify(NotificationHelper.this.NOTIFICATION_ID, NotificationHelper.this.mBuilder.build());
            }
        }).start();
    }
}
Code:
package com.deviant.security.shield;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ToggleButton;

public class Settings extends ActionBarActivity {
    public static final String PREFS_NAME = "ShieldPrefs";
    SharedPreferences settings;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.settings = getSharedPreferences(PREFS_NAME, 0);
        setContentView(R.layout.activity_settings);
        ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);
        if (this.settings.getBoolean("realtime", false)) {
            toggle1.setChecked(true);
        } else {
            toggle1.setChecked(false);
        }
        ToggleButton toggle2 = (ToggleButton) findViewById(R.id.toggle2);
        if (this.settings.getBoolean("scanning", false)) {
            toggle2.setChecked(true);
            return;
        } else {
            toggle2.setChecked(false);
        }
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.settings, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        return item.getItemId() == 2131165250 ? true : super.onOptionsItemSelected(item);
    }

    public void toggleRealtime(View view) {
        Editor editor = this.settings.edit();
        ToggleButton toggle = (ToggleButton) findViewById(R.id.toggle1);
        if (this.settings.getBoolean("realtime", false)) {
            editor.putBoolean("realtime", false);
            toggle.setChecked(false);
        } else {
            editor.putBoolean("realtime", true);
            toggle.setChecked(true);
        }
        editor.commit();
    }

    public void toggleScanning(View view) {
        Editor editor = this.settings.edit();
        ToggleButton toggle = (ToggleButton) findViewById(R.id.toggle2);
        if (this.settings.getBoolean("scanning", false)) {
            editor.putBoolean("scanning", false);
            toggle.setChecked(false);
        } else {
            editor.putBoolean("scanning", true);
            toggle.setChecked(true);
        }
        editor.commit();
    }
}
Ngay sau đó, ứng dụng này đã được gỡ bỏ khỏi Play Store.


Tin mừng là những ai đã trả tiền để mua ứng dụng này sẽ được hoàn lại số tiền của họ.

Boy Milano
Techrum.vn
Theo Android Police
 
Last edited by a moderator:

unit124

New Member
Tham gia
10/2/14
Bài viết
54
Được thích
17
#3
[HASHTAG]#2[/HASHTAG] bức tốp thành công, :shame:
 

Theo dõi Youtube

Thành viên online

Quảng Cáo

Quảng Cáo

Có thể bạn quan tâm

Top Bottom