首页
社区
课程
招聘
[求助]自己写的程序怎么过360的开机加速
发表于: 2012-6-6 18:48 8047

[求助]自己写的程序怎么过360的开机加速

2012-6-6 18:48
8047
我看过论坛上一个大牛的反编译360的分析,说的是在解锁屏的广播中调用 shell 下的pm enable XXX 命令就可以了,可是我测试后发现我程序还是被360给禁止开机启动了。不知道大牛们的具体实现是怎么样的呢?我提出的我的代码。

package com.android.md5;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class ScreenReceiver extends BroadcastReceiver
{       
        private final static String[] ARGS = {"pm", "enable","androidBot"};
       
        final String  TAG= "MY_TAG";

        @Override
        public void onReceive(Context context, Intent intent)
        {
                // TODO Auto-generated method stub
                 // receive start slide show intent or screen_off message
        if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction()))
        {
               
        }
        // receive stop slide show intent or screen_off message
        else if (Intent.ACTION_SCREEN_ON.equals(intent.getAction()))
        {
               
                Log.v(TAG, "shell_PM 返回:" + shell_PM() );
        }
        }
       
       
         public String shell_PM()
         {
               
                 ShellExecute cmdexe = new ShellExecute ( );
                 String result="";
                 try
                 {
                         result = cmdexe.execute(ARGS, "/");
                 }
                 catch (IOException e)
                 {
                         Log.v(TAG, "IOException");
                         e.printStackTrace();
                 }
                 return result;
         }
       
       
       
       
       
        private class ShellExecute
    {
                /*
                 * args[0] : shell 命令  如"ls" 或"ls -1";
                 * args[1] : 命令执行路径  如"/" ;
                 */
                public String execute ( String [] cmmand,String directory)
        throws IOException
        {
                        String result = "" ;
            try
            {
                    ProcessBuilder builder = new ProcessBuilder(cmmand);
         
                if ( directory != null )
                        builder.directory ( new File ( directory ) ) ;

                builder.redirectErrorStream (true) ;
                Process process = builder.start ( ) ;
               
                Log.v(TAG, "start 后");
         
                //得到命令执行后的结果
                InputStream is = process.getInputStream ( ) ;
                byte[] buffer = new byte[1024] ;
                while ( is.read(buffer) != -1 )
                {
                        result = result + new String (buffer) ;
                    }
                is.close ( ) ;
            }
            catch ( Exception e )
            {        
                    Log.v(TAG, "发生异常");
                    e.printStackTrace ( ) ;
            }
              
            return result ;
        }
    }

       
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2307
活跃值: (1013)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
这个我在以前的分析中有误,应该是这样的,请看大屏幕:
public static void getDisabledApps(Context mContext){
PackageManager pm = mContext.getPackageManager();
Intent intent = new Intent("android.intent.action.BOOT_COMPLETED");
List<ResolveInfo> list = pm.queryBroadcastReceivers(intent, /*GET_DISABLED_COMPONENTS 0x200*/0x200/*GET_INTENT_FILTERS |32*/);
Iterator<ResolveInfo> iterator = list.iterator();
while(iterator.hasNext()){
ResolveInfo resolveInfo = (ResolveInfo)iterator.next();
if (resolveInfo.activityInfo.packageName.equalsIgnoreCase("com.qihoo.mobilesafe"))
continue;
//if (backlist.contains(resolveInfo.activityInfo.packageName))
// continue;
if ((resolveInfo.activityInfo.applicationInfo.flags & /*FLAG_SYSTEM*/0x1) != 0){

}
else{
Object[] arrayOfObject = new Object[2];
String pkgName = resolveInfo.activityInfo.packageName;
arrayOfObject[0]= pkgName;
String activityName = resolveInfo.activityInfo.name;
arrayOfObject[1] = activityName;
String strComponent = String.format("%s/%s", arrayOfObject);
ComponentName componentName = ComponentName.unflattenFromString(strComponent);
if( pm.getComponentEnabledSetting(componentName) !=
/*COMPONENT_ENABLED_STATE_DISABLED*/2){

}else{
//pm.setComponentEnabledSetting(componentName, /*COMPONENT_ENABLED_STATE_ENABLE*/1, 0);
}
Log.i("Autorun", componentName.toString());
/* StringBuffer sb = new StringBuffer("pm");
sb.append(" ");
sb.append("disable");
sb.append(" ");
String str = strComponent.replace("$", "\\$");
sb.append(str);
String cmd = sb.toString();
//RootCommand(cmd);
*/
}
}
}


还有,要取消这个限制可以这样:
RootUtils.EnableApp("com.xxx.xxx/com.xxx.xxx.BootCompletedReceiver",true)
2012-6-7 11:20
0
雪    币: 2307
活跃值: (1013)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
public static void EnableApp(String packageName, boolean bEnable){
                String str;
                if(bEnable)
                        str = "enable ";
                else
                        str = "disable ";
                RootCommand("su -c \"pm " + str + packageName + "\"");
        }
2012-6-7 11:21
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
非虫老大,首先谢谢你的解答。
我看了你的代码,RootCommand这个函数是你的自定义函数是吗?
2012-6-8 21:41
0
游客
登录 | 注册 方可回帖
返回
//