Last active

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

Fake Virus Shield AV

View BuildConfig.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
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");
}
}
View BuildConfig.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
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);
}
}
}
View BuildConfig.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
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();
}
}
View BuildConfig.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
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();
}
}

wtf

Is this source code for Doom 3?

Well, that's an overdesigned toggle of one image if ever there was one.

This reminds me of the "Enterprise Fizzbuzz" written in Java on /r/shittyprogramming

Wow. That's a lot of money for such crap!

How impressively disappointing.

Thats why im not Android User... Crap!

Why i'm try to work so hard for money... the only thing i must do, is to toggle an image file...

Hahaha that serves them right, they kicked me and many others off their crappy market for absolutely nothing. I am personally happy to see them get a black eye like this.

@real-napster: because there are shitty apps available? but if you conseqiently hate apple’s app store and microsoft’s store as well because of the assload of shitty apps there, what do you use?

and what this really points out: fuck antivirus software.

This is a part code of android malware
A fake android anti-virus.

Paste by Android Police
中文>
Virus Shield是由名為Deviant Solutions開發的軟體,宣稱可以防止系統被安裝有害程式、確保個人資訊、即時掃瞄應用、設定及多媒體檔案,還能提升電話效能。它甚至宣稱對電池壽命影響極微、可於背景運作,又能封鎖廣告軟體。

不過Android Police指出,經過程式碼解析發現,其實Virus Shield是100%的詐欺軟體,完全不具備任何防護功能,使用者按下掃瞄鍵,它唯一的動作就是將應用中的「X」改成打勾的符號。Android Police並追蹤到Virus Shield的作者之前曾因在某線上論壇中詐騙線上遊戲寶物而被取消會員資格。Android Police並將該app的程式碼公布在Github上以供證明。

"Your device is secure" - Just like that you receive 5star ratings.

hah

tuky commented

Reminds me of Lisa's tiger repelling rock™.

users XD

That is hilariously sad. I think I need to create an app that does nothing for half the cost. And I would promise to not do anything. Just an icon that launches an on/off toggle screen.

That's a lot of code to do a bunch of sweet fuck all!

woah, so fast!

This app is more useless than red traffic lights in GTA.

What kind of people do star this 'project'? 24 and counting...

such crap, much money, play store, wow!

chymz commented

Changelog

1.0 : One image
2.0 : Two images
2.2 : Can toggle images !

So true @AlekseyKorzun

Amazing app! Your life can change after toggle a button..

it is hilarious

LOL this my friends is classic...

Epic source code is epic!

That is like buying a ticket for this performance - https://www.youtube.com/watch?v=JTEFKFiXSx4

he will have to put random sleep between 1000 and 1200ms

Nice!

proof of concept - snake oil, nothing else. or do you think other anti-malware apps for android doing anything else? ;)

Just sleep for 1000 seconds and say "your device is secure"! Nice!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.