package diff.strazzere.anti;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import diff.strazzere.anti.debugger.FindDebugger;
import diff.strazzere.anti.emulator.FindEmulator;
import diff.strazzere.anti.monkey.FindMonkey;
import diff.strazzere.anti.taint.FindTaint;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread() {
@Override
public void run() {
super.run();
isTaintTrackingDetected();
isMonkeyDetected();
isDebugged();
isQEmuEnvDetected();
}
}.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean isQEmuEnvDetected() {
log("Checking for QEmu env...");
log("hasKnownDeviceId : " + FindEmulator.hasKnownDeviceId(getApplicationContext()));
log("hasKnownPhoneNumber : " + FindEmulator.hasKnownPhoneNumber(getApplicationContext()));
log("isOperatorNameAndroid : " + FindEmulator.isOperatorNameAndroid(getApplicationContext()));
log("hasKnownImsi : " + FindEmulator.hasKnownImsi(getApplicationContext()));
log("hasEmulatorBuild : " + FindEmulator.hasEmulatorBuild(getApplicationContext()));
log("hasPipes : " + FindEmulator.hasPipes());
log("hasQEmuDriver : " + FindEmulator.hasQEmuDrivers());
log("hasQEmuFiles : " + FindEmulator.hasQEmuFiles());
log("hasGenyFiles : " + FindEmulator.hasGenyFiles());
log("hasEmulatorAdb :" + FindEmulator.hasEmulatorAdb());
log("hitsQemuBreakpoint : " + FindEmulator.checkQemuBreakpoint());
if (FindEmulator.hasKnownDeviceId(getApplicationContext())
|| FindEmulator.hasKnownImsi(getApplicationContext())
|| FindEmulator.hasEmulatorBuild(getApplicationContext())
|| FindEmulator.hasKnownPhoneNumber(getApplicationContext()) || FindEmulator.hasPipes()
|| FindEmulator.hasQEmuDrivers() || FindEmulator.hasEmulatorAdb()
|| FindEmulator.hasQEmuFiles()
|| FindEmulator.hasGenyFiles()) {
log("QEmu environment detected.");
return true;
} else {
log("QEmu environment not detected.");
return false;
}
}
public boolean isTaintTrackingDetected() {
log("Checking for Taint tracking...");
log("hasAppAnalysisPackage : " + FindTaint.hasAppAnalysisPackage(getApplicationContext()));
log("hasTaintClass : " + FindTaint.hasTaintClass());
log("hasTaintMemberVariables : " + FindTaint.hasTaintMemberVariables());
if (FindTaint.hasAppAnalysisPackage(getApplicationContext()) || FindTaint.hasTaintClass()
|| FindTaint.hasTaintMemberVariables()) {
log("Taint tracking was detected.");
return true;
} else {
log("Taint tracking was not detected.");
return false;
}
}
public boolean isMonkeyDetected() {
log("Checking for Monkey user...");
log("isUserAMonkey : " + FindMonkey.isUserAMonkey());
if (FindMonkey.isUserAMonkey()) {
log("Monkey user was detected.");
return true;
} else {
log("Monkey user was not detected.");
return false;
}
}
public boolean isDebugged() {
log("Checking for debuggers...");
boolean tracer = false;
try {
tracer = FindDebugger.hasTracerPid();
} catch (Exception exception) {
exception.printStackTrace();
}
if (FindDebugger.isBeingDebugged() || tracer) {
log("Debugger was detected");
return true;
} else {
log("No debugger was detected.");
return false;
}
}
public void log(String msg) {
Log.v("AntiEmulator", msg);
}
}