zoukankan      html  css  js  c++  java
  • 修改imei

    引用:http://blog.sina.com.cn/s/blog_4a4f9fb501018xrn.html

    该程序实现一下功能,

      1,修改android模拟器的imei,

      2,自动启动android模拟器

      3,运行开机启动程序,ps:这个开机启动程序apk就没放出来了。

      4,停止android模拟器;

      重复1,2,3过程

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class Test {

     
     public static void main(String[] args) {
      try {
         while(true){//

             eidtEmulator();//修改imei


             Runtime rt = Runtime.getRuntime();  
             String command = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator -avd AVD-10";    
             rt.exec(command);  // 运行android模拟器
             System.out.println("success run");

             Thread.sleep(2*60*1000);//  等待2分钟后,停止android模拟器
             if(findRunningWindowsProcess("emulator-arm.exe")){
                   killRunningWindowsProcess("emulator-arm.exe");
            }
       }
      } catch (IOException e) {
       e.printStackTrace();
      } catch (Exception e) {
       e.printStackTrace();
      }  
     }
     
     public static void eidtEmulator() throws Exception{
         String oldFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm.exe ";
         String newFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm1.exe";
         FileInputStream in = new FileInputStream(oldFilePath);
         FileOutputStream out = new FileOutputStream(newFilePath);
         byte bytes[] = new byte[1];
         byte gsnbytes[] = new byte[3];
         byte imeiBytes[] = new byte[15];
         int count;
         while ((count = in.read(bytes)) != -1) {
               out.write(bytes);
               if (bytes[0] == 0x43) {// if is char 'C'
                        count = in.read(gsnbytes);
                        if (count == -1) {
                             break;
                        }
                        out.write(gsnbytes);
                        if (gsnbytes[0] == 0x47 && gsnbytes[1] == 0x53 && gsnbytes[2] == 0x4E) {//if is char 'GSN'
                             count = in.read(bytes);//read char '.'
                             if (count == -1) {
                                    break;
                              }
                              out.write(bytes);
                              count = in.read(imeiBytes);//read old imei
                             if (count == -1) {
                                     break;
                              }
                              byte[] imeis = getIMEIBytes();
                              out.write(imeis);//write new imei;
                         }
                   }

            }
      in.close();
      out.close();
      File oldFile = new File(oldFilePath);
      oldFile.delete();
      File newFile = new File(newFilePath);
      newFile.renameTo(oldFile);
      

     }

     public static byte[] getIMEIBytes() {//随即生成15位imei号
           StringBuffer bff = new StringBuffer();
           byte imeiBytes[] = new byte[15];
           for(int i=0;i<imeiBytes.length;i++){
                    int num = (int) Math.round(Math.random()*8);
                    bff.append(num);
                    imeiBytes[i] = Byte.parseByte("3"+num, 16);
             }
          //  printArray(imeiBytes);
           System.err.println("start imei: "+bff.toString());
           return imeiBytes;
     }

     public static void printArray(byte bytes[]) {
      StringBuffer buff = new StringBuffer();
      for (byte b : bytes) {
       buff.append(String.format("X", b) + " ");
      }
       System.out.println(buff.toString());
     }
     
     public static boolean killRunningWindowsProcess(String processName){   
            try {   
                Runtime.getRuntime().exec("taskkill /IM " + processName);   
                System.out.println("kill process successful");   
    //            System.out.println("Process " + processName + " was killed. Mission completed.");   
                return true;   
            } catch (Exception ex) {   
                ex.printStackTrace();   
                System.out.println("kill process fail");   
                System.out.println("Misson failed.");   
                return false;   
            }   
        }   
     public static boolean findRunningWindowsProcess(String processName) {   
            BufferedReader bufferedReader = null;   
            Process proc = null;   
            try {   
                proc = Runtime.getRuntime().exec("tasklist /FI "IMAGENAME eq " + processName + """);   
                bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));   
                String line;   
                while ((line = bufferedReader.readLine()) != null) {   
                    if (line.contains(processName)) {   
                        return true;   
                    }   
                }   
                return false;   
            } catch (Exception ex) {   
                ex.printStackTrace();   
                return false;   
            } finally {   
                if (bufferedReader != null) {   
                    try {   
                        bufferedReader.close();   
                    } catch (Exception ex) {   
                    }   
                }   
                if (proc != null) {   
                    try {   
                        proc.destroy();   
                    } catch (Exception ex) {   
                    }   
                }   
            }   
        }  

    }

  • 相关阅读:
    SQL语句-用sql语句得到表中所有字段的名字
    SQL语句-判断数据库中是否有这张表
    Java开发-创建第一个项目hello world
    MFC-一个很简单的程序最小化到托盘,带右键菜单带图标
    Everything SDK-基于名称快速定位文件和文件夹。
    NX二次开发-基于PycharmIDE的NXOpen Python开发环境配置
    手动局域网搭建FTP服务器
    FreeCAD二次开发-基于控制台模式FC外部开发
    FreeCAD二次开发-基于PyQT对话框与FC交互的开发
    实例开发-NX二次开发手动截图工具
  • 原文地址:https://www.cnblogs.com/sode/p/2852351.html
Copyright © 2011-2022 走看看