android代码块,Android 流氓代码块

开机自启动(小米需要在安全中心设置自启动)

//在广播中声明

String action = intent.getAction();

if (action.equals("android.intent.action.BOOT_COMPLETED")) {

Intent activity = new Intent(context, SecondActivity.class);

activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(activity);

}

//权限

复制代码

静默安装(需要root)

public static boolean installUseRoot(String filePath) {

if (TextUtils.isEmpty(filePath))

throw new IllegalArgumentException("Please check apk file path!");

boolean result = false;

Process process = null;

OutputStream outputStream = null;

BufferedReader errorStream = null;

try {

process = Runtime.getRuntime().exec("su");

outputStream = process.getOutputStream();

String command = "pm install -r " + filePath + "\n";

outputStream.write(command.getBytes());

outputStream.flush();

outputStream.write("exit\n".getBytes());

outputStream.flush();

process.waitFor();

errorStream = new BufferedReader(new InputStreamReader(process.getErrorStream()));

StringBuilder msg = new StringBuilder();

String line;

while ((line = errorStream.readLine()) != null) {

msg.append(line);

}

Log.d(TAG, "install msg is " + msg);

if (!msg.toString().contains("Failure")) {

result = true;

}

} catch (Exception e) {

Log.e(TAG, e.getMessage(), e);

} finally {

try {

if (outputStream != null) {

outputStream.close();

}

if (errorStream != null) {

errorStream.close();

}

} catch (IOException e) {

outputStream = null;

errorStream = null;

process.destroy();

}

}

return result;

}复制代码

关机代码块(root)

public static void closeOs(Context context) {

try {

Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot -p"});

} catch (IOException e) {

e.printStackTrace();

}

}复制代码

双守护线程保活

public class DaemonService extends Service {

String TAG = "DaemonService";

private DaemonBinder mDaemonBinder;

private DaemonServiceConnection mDaemonServiceConn;

public DaemonService() {

}

@Override

public void onCreate() {

super.onCreate();

mDaemonBinder = new DaemonBinder();

if (mDaemonServiceConn == null) {

mDaemonServiceConn = new DaemonServiceConnection();

}

Log.i(TAG, TAG + " onCreate");

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

super.onStartCommand(intent, flags, startId);

Log.i(TAG, TAG + " onStartCommand");

bindService(new Intent(this, RemoteService.class), mDaemonServiceConn, Context.BIND_IMPORTANT);

return START_STICKY;

}

@Nullable

@Override

public IBinder onBind(Intent intent) {

return mDaemonBinder;

}

/**

* 通过AIDL实现进程间通信

*/

class DaemonBinder extends IProcessService.Stub {

@Override

public String getServiceName() throws RemoteException {

return TAG;

}

}

/**

* 连接远程服务

*/

class DaemonServiceConnection implements ServiceConnection {

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

try {

IProcessService process = IProcessService.Stub.asInterface(service);

Log.i(TAG, "连接" + process.getServiceName() + "服务成功");

} catch (RemoteException e) {

e.printStackTrace();

}

}

@Override

public void onServiceDisconnected(ComponentName name) {

startService(new Intent(DaemonService.this, RemoteService.class));

bindService(new Intent(DaemonService.this, RemoteService.class), mDaemonServiceConn, Context.BIND_IMPORTANT);

}

}

}

public class RemoteService extends Service {

String TAG = "RemoteService";

private ServiceBinder mServiceBinder;

private RemoteServiceConnection mRemoteServiceConn;

@Override

public void onCreate() {

super.onCreate();

mServiceBinder = new ServiceBinder();

if (mRemoteServiceConn == null) {

mRemoteServiceConn = new RemoteServiceConnection();

}

Log.i(TAG, TAG + " onCreate");

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

super.onStartCommand(intent, flags, startId);

Log.i(TAG, TAG + " onStartCommand");

bindService(new Intent(this, DaemonService.class), mRemoteServiceConn, Context.BIND_IMPORTANT);

return START_STICKY;

}

@Nullable

@Override

public IBinder onBind(Intent intent) {

return mServiceBinder;

}

/**

* 通过AIDL实现进程间通信

*/

class ServiceBinder extends IProcessService.Stub {

@Override

public String getServiceName() throws RemoteException {

return "RemoteService";

}

}

/**

* 连接远程服务

*/

class RemoteServiceConnection implements ServiceConnection {

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

try {

IProcessService process = IProcessService.Stub.asInterface(service);

Log.i(TAG, "连接" + process.getServiceName() + "服务成功");

} catch (RemoteException e) {

e.printStackTrace();

}

}

@Override

public void onServiceDisconnected(ComponentName name) {

startService(new Intent(RemoteService.this, DaemonService.class));

bindService(new Intent(RemoteService.this, DaemonService.class), mRemoteServiceConn, Context.BIND_IMPORTANT);

}

}

}复制代码

//aidl 文件

package com.android.process.aidl;

interface IProcessService {

/**

* Demonstrates some basic types that you can use as parameters

* and return values in AIDL.

*/

String getServiceName();

}复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值