`
Danker.Dai
  • 浏览: 68511 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

自动修改android模拟器的imei的小程序

 
阅读更多

该程序实现一下功能,

  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 {

 /**
  * @param args
  */
 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("%02X", 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) {  
                }  
            }  
        }  
    }  

}

4
0
分享到:
评论
3 楼 u010484673 2014-04-10  
你好,我按照这段代码运行了,可是在打开的模拟器上查询到的imei号依旧没改变,不知道楼主修改imei号后,有没有手动查询模拟器上的imei号是否是真的变了呢?
2 楼 萧_瑟 2013-10-08  
你好,请问如何直接修改真机上面的imei呢?
String oldFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm.exe ";
     String newFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm1.exe";
这段代码指的是PC上面虚拟机的路径。
如果要直接改真机上面的该怎么做呢?
1 楼 彩虹神 2012-02-02  
很强大的代码

相关推荐

    如何修改Android模拟器的IMSI

    如何修改Android模拟器的IMSI,简单方法。

    真正能修改Andriod 模拟器 IMEI 的控制台程序

    执行上述命令后,程序会修改Android模拟器的配置文件,设置新的IMEI号。请注意,这个过程并不会立即生效,你需要重新启动模拟器才能看到IMEI的变化。启动模拟器时,可以使用以下命令: ```cmd emulator -avd ``` ...

    Android 模拟器建立端口映射

    在开发Android应用程序时,开发者经常需要在模拟器上进行应用调试与测试工作。在某些特定场景下,如需在本地计算机与模拟器之间传输数据(特别是UDP协议的数据包),则需要进行端口映射。本文将详细介绍如何在...

    Android模拟器小技巧

    压缩文件包含:Android模拟器快捷键大全.pdf、 Android模拟器也玩ping.pdf、 gsm call命令向Android模拟器打电话.pdf、 sms send命令向Android模拟器发短信.pdf、 让你的Android模拟器支持Cupcake屏幕键盘.pdf

    android模拟器修改host

    android模拟器修改host.docx

    Android 模拟器中AVD路径的修改(WIN7)

    通过上述步骤,我们可以轻松地更改Android模拟器中AVD的存储路径,从而更好地管理和组织我们的开发资源。这种方法不仅适用于Windows 7系统,对于其他版本的Windows系统也基本适用。当然,如果你在使用过程中遇到任何...

    Android 模拟器永久root工具

    Android 模拟器永久root工具------包含 (android for img.rar、Android SU文件更新包.zip、RootExplorer.apkSuperuser.apk) 1、用android for img.rar里的android for img.exe打开 E:\SDK\platforms\android-8\...

    Android模拟器Ip设置详细操作

    在Android开发过程中,Android模拟器扮演着至关重要的角色,它为开发者提供了一个可以在桌面系统上运行和测试Android应用的环境。然而,由于模拟器的网络配置与开发者的主机系统不一致,这可能导致通信问题,例如...

    android模拟器上应用程序的安装与卸载

    ### Android模拟器上应用程序的安装与卸载 #### 一、引言 随着移动应用开发的日益普及,Android模拟器成为开发者不可或缺的工具之一。它允许开发者在无需真实设备的情况下测试和调试Android应用程序。本文将详细...

    android模拟器系统源码

    android开发所使用的 模拟器系统源码,用于练习时需要跳转到模拟器自带页面时 ,设置隐式意图 , 查看意图过滤器等等。ceshiguo eclipse自带 AVD模拟器 和 genymotion模拟器

    android模拟器启动问题

    2. **重启Eclipse并重建AVD**:更改环境变量后,需要完全关闭并重新启动Eclipse,以确保所有修改生效。随后,建议删除之前创建的AVD,并重新创建一个新的,这样可以避免旧配置引发的潜在问题。 ### 三、总结与建议 ...

    用VNC远程控制android模拟器

    通过VNC远程控制Android模拟器不仅可以提高开发效率,还能帮助开发者在不同环境中测试应用程序的表现。虽然设置过程可能略显复杂,但一旦完成,就能享受到便捷的远程控制体验。希望本文能帮助你更好地理解和掌握这一...

    在Android模拟器上安装软件

    要在Android设备或模拟器上安装一个应用程序,必须将其安装包文件(.apk)传输到设备或模拟器上,并使用相应的安装命令来完成安装过程。 接下来,我们详细说明如何在Android模拟器上安装软件: 1. 下载apk软件文件...

    解决android_模拟器上网问题

    在进行Android应用开发的过程中,开发者经常需要使用Android模拟器来进行应用程序的测试与调试。然而,在某些情况下,模拟器可能会遇到无法联网的问题,这不仅影响了应用的功能测试,还可能对整个开发流程造成阻碍。...

    来电模拟器微信小程序源码 可自定义来电名称归属地铃声等带流量主

    来电模拟器微信小程序源码 可自定义来电名称归属地铃声等带流量主 模拟一个来电电话,可以正常接通,挂断等 让你假装有事,迅速离场,避免尴尬等等! 比如使用场景: 相亲的时候遇到奇葩,想找接口离开. 场价party想...

    模拟器躲避的检测与应对(Android模拟器)

    随着Android模拟器的广泛应用,为了区分模拟器与真实设备,确保应用程序的安全性,开发者和安全公司开发出了多种检测技术。 在用户层行为和数据方面,研究者们会检测是否存在模拟器特有的应用程序,如APIDemos、...

    安装APK文件到Android模拟器

    Android SDK 的 Tools 目录中(点击下载 Android123.apk 文件),使用 cmd 的 cd 命令定位到 Android 模拟器目录 Tools 中,执行 adb install android123.apk 命令,这时模拟器将会自动执行安装。 二、adb 命令的...

    android模拟器安装APK文件

    在Android开发过程中,Android模拟器是一个非常重要的工具,它允许开发者在没有物理设备的情况下测试应用程序。APK(Android Package)是Android系统中的应用程序包文件格式,用于分发和安装移动应用。下面我们将...

    android模拟器java Android

    android模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Android...

    android-imei修改工具

    6. **替代方案**:如果需要临时替换IMEI,例如在测试环境中,可以考虑使用模拟器或设备管理工具,它们提供了虚拟IMEI的功能,而无需实际修改硬件。 7. **设备管理**:对于企业或开发者来说,批量管理大量设备时,...

Global site tag (gtag.js) - Google Analytics