2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > imei模拟修改_自动修改android模拟设备号imei的小程序

imei模拟修改_自动修改android模拟设备号imei的小程序

时间:2024-08-05 00:13:53

相关推荐

imei模拟修改_自动修改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;iint 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) {

}

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。