013150007698762苹果手机串号查询

回答于: 22:59
你好,iPhone手机的串号、序列号等都是可以修改的,而且还能三码合一,但是一般拥有这种技术的人都会用它赚钱,所以一般淘宝店铺或实体店都会有修改串号、序列号的店,至于修改的方法大概应该就是利用一台国行或者真正未激活的iPhone手机,从电脑上复制下它的序列号等,在把国行或未激活的iPhone手机的序列号,写入到已过保的iPhone手机里,至于串号就比较麻烦了,需要更换字库才可以,所以说不是专门做这个的,串号、序列号还是无法自己写的,如果想要写只能找专业人员,现在除了iPhone5s基本都可以写,至于价格,如果改的比较全面价格可能在200元左右。
提问者对回答的评价:
谢谢您的解答!
其他回答&(共0条)
&(1个回答)&(1个回答)&(1个回答)&(1个回答)&(1个回答)&(1个回答)&(1个回答)&(1个回答)&(1个回答)&(1个回答)
等待您来回答
& IT. All Rights Reserved5095人阅读
(1)机型修改:
其实跟安卓系统有关的一些信息大多在/system/build.prop这个文件中,尤其是跟机型有关的信息。下面是ZTE U960S3这台手机调试输出的信息:
可以看到型号(model),商标(brand),设备(device),名字(name)等等。修改这些其实是修改build.prop文件。前面修改MP0B_001也是替换对应文件。但是安卓系统底层是Linux,/system和/data都需要root权限才能访问,或者你源码辨析获得system权限(这个暂时不谈)。代码中我有相应的修改权限的函数,以chmod开头的函数,修改相应的文件权限,我们可以对之进行修改、替换操作,达到我们的目的。当然,IMEI和机型等的信息需要修改才能生效。
如果您需要修改build.prop的其他信息,izai我的代码基础之上添加其他修改,比如mac地址的等。强烈建议您备份一份build.prop文件,备份的操作可以通过adb shell进行操作,比如上面我备份的文件叫build.back。一旦build.prop文件损坏,我们可以替换回去。
(2)重点说一下文件存放位置:
1. MP0B_001*的系列文件需要存放在SD卡根目录的imei文件夹中,文件名可以变(不是MP0B_001*),但是不能有其他不包含imei信息的文件,否者替换无效,copy文件到imei文件夹的时候请留意是否有无效文件。
2. 包含机型信息的文件需要放置SD卡根目录,文件名为model.txt 。此文件的信息每一行含有两个部分:手机品牌+型号,比如:lenovo A750.中间有一个空格,每一行只有手机品牌和型号之间有空格 多出来的空格无效,多出空格活菏泽无空格会报异常。请输入信息的时候注意是否按要求录入。
关于开机自启动,已经完成,默认会有10s提示。点击取消按钮取消自动写入及重启,变成手动模式。否则软件自动写入新的imei和机型信息然后重新启动,循环下去。下面是修改的结果的部分截图:
(3)软件界面如下:
其中imei1和imei2分别是两个卡对应的imei号,imeis为我们将要替换系统MP0B_001文件的文件名。PC端生成的MP0B_001*文件请拷贝到安卓手机的SD卡的根目录的imei文件夹中。一般是/sdcard/imei路径,注意此文件夹中不要拷贝其他无关文件,写入时默认选取改目录下的第一个文件,写入完成会删除相应文件。重启按钮就是重启手机了,也可以改成写入完成后立即重启。
(4)相关代码如下:
package com.org.mtk_imei_
import java.io.DataOutputS
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import java.lang.reflect.F
import java.lang.reflect.M
import java.util.ArrayL
import java.util.C
import java.util.L
import android.os.B
import android.os.E
import android.os.H
import android.os.M
import android.app.A
import android.app.AlertD
import android.app.D
import android.content.C
import android.content.DialogI
import android.telephony.TelephonyM
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.EditT
import android.widget.TextV
import java.io.*;
public class MainActivity extends Activity {
private EditText imeisEdittext =
private EditText imei1Edittext =
private EditText imei2Edittext =
private EditText modelEdittext =
private Button startWriteBtn =
private Button restartBtn =
int mNegativeCount = 100;
final int TYPE_COUNTERDOWN_COUNTER = 11;
AlertDialog.Builder counterDownD
TextView textView =
private boolean stopHandler =
private int delayTime = 10;
private String TAG = &APP&;
private String targetImeiDir = &/data/nvram/md/NVRAM/NVD_IMEI/&;
private String targetImeiName = targetImeiDir + &MP0B_001&;
private String imeiDataDir = &imei&;
private String tempFilename = &&;
private String dataNvram = &/data/nvram&;
private String modelDataFile = &model.txt&;
private String typeDataFileDir = &/system/build.prop&;
private String tempTypeDataFileDir = &/system/tempbuild.prop&;
private String name = &&;
private String model = &&;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imei1Edittext = (EditText)findViewById(R.id.imei1Edittext);
imei2Edittext = (EditText)findViewById(R.id.imei2Edittext);
imeisEdittext = (EditText)findViewById(R.id.imeisEdittext);
modelEdittext = (EditText)findViewById(R.id.modelEdittext);
startWriteBtn = (Button)findViewById(R.id.startWrite);
restartBtn = (Button)findViewById(R.id.restart);
startWriteBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startWriteBtn.setEnabled(false);
writeImei();
writeModel();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
restoreNVRamImei(dataNvram);
restoreNVRamImei(typeDataFileDir);
restartBtn.setEnabled(true);
restartBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
restart();
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
if(!isRoot()){
AlertDialog.Builder mDialog = new AlertDialog.Builder(MainActivity.this);
mDialog.setTitle(&警告!&);
mDialog.setMessage(&您的手机没有root,程序将自动退出!请root重新操作!&);
mDialog.setPositiveButton(&确定&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
if(!isImeiDataExist()){
AlertDialog.Builder mDialog = new AlertDialog.Builder(MainActivity.this);
mDialog.setTitle(&错误!&);
mDialog.setMessage(&SD卡imei目录为空或者不存在!程序将退出!&);
mDialog.setPositiveButton(&确定&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
chmodNVRamImei(dataNvram);
(!isExist(targetImeiDir)){
AlertDialog.Builder mDialog = new AlertDialog.Builder(MainActivity.this);
mDialog.setTitle(&错误!&);
mDialog.setMessage(&抱歉,不支持您的手机!您的手机没有/data/nvram/md/NVRAM/NVD_IMEI/目录或者已损坏!&);
mDialog.setPositiveButton(&确定&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
getSIMInfo();
chmodNVRamImei(typeDataFileDir);
if(!isModelDataExist()){
AlertDialog.Builder mDialog = new AlertDialog.Builder(MainActivity.this);
mDialog.setTitle(&错误!&);
mDialog.setMessage(&机型数据文件model.txt不错在!&);
mDialog.setPositiveButton(&确定&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
autoInit();
startWriteBtn.setEnabled(true);
private void chmodNVRamImei(String targetImeiDir)
if(isRoot()){
java.lang.P
process = Runtime.getRuntime().exec(&su&);
DataOutputStream os = new DataOutputStream(process.getOutputStream());
String command = &chmod -R 777 &+targetImeiDir+&\n&;
os.writeBytes(command);
os.writeBytes(&exit\n&);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
Log.i(TAG,&The target directory has not been root.&);
private void restoreNVRamImei(String targetImeiDir)
if(isRoot()){
java.lang.P
process = Runtime.getRuntime().exec(&su&);
DataOutputStream os = new DataOutputStream(process.getOutputStream());
String command = &chmod -R 771 &+targetImeiDir+&\n&;
os.writeBytes(command);
os.writeBytes(&exit\n&);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
Log.i(TAG,&The target directory has not been root.&);
public boolean isRoot(){
boolean bool =
if ((!new File(&/system/bin/su&).exists()) && (!new File(&/system/xbin/su&).exists())){
} catch (Exception e) {
e.printStackTrace();
public boolean isExist(String filePath) {
String paths[] = filePath.split(&/&);
String dir = paths[0];
for (int i = 0; i & paths.length - 1; i++) {
dir = dir + &/& + paths[i + 1];
Log.i(TAG,&dir:
File dirFile = new File(dir);
if (!dirFile.exists()) {
public boolean isImeiDataExist(){
File sdDir =
boolean sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
//判断sd卡是否存在
if(sdCardExist)
sdDir = Environment.getExternalStorageDirectory();
tempFilename = sdDir+&/&+ imeiDataD
File dirFile = new File(tempFilename);
if (!dirFile.exists()) {
}else if(dirFile.list().length == 0){
String filename = dirFile.list()[0];
File temp = new File(filename);
imeisEdittext.setText(temp.getName());
public boolean isModelDataExist() throws IOException{
File sdDir =
boolean sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
//判断sd卡是否存在
if(sdCardExist)
sdDir = Environment.getExternalStorageDirectory();
tempFilename = sdDir+&/&+ modelDataF
File dirFile = new File(tempFilename);
if (!dirFile.exists()) {
}else if(dirFile.length()==0){
BufferedReader readerSD =
List&String& listSD = new ArrayList&String&();
readerSD = new BufferedReader(new FileReader(dirFile));
String textSD = readerSD.readLine();
while (textSD != null) {
listSD.add(textSD);
textSD = readerSD.readLine();
readerSD.close();
Calendar calendar = Calendar.getInstance();
int num = (calendar.get(Calendar.MINUTE)*60+calendar.get(Calendar.SECOND))%listSD.size();
Log.i(TAG,&num: &+num+&listSD.size()&+listSD.size());
String modelAndNameString = listSD.get(num);
modelEdittext.setText(modelAndNameString);
model = modelAndNameString.split(& &)[0];
name = modelAndNameString.split(& &)[1];
private void writeModel() throws IOException{
File file = new File(typeDataFileDir);
if(!file.exists()){
AlertDialog.Builder mDialog = new AlertDialog.Builder(MainActivity.this);
mDialog.setTitle(&错误!&);
mDialog.setMessage(&抱歉,您的手机不支持修改机型!&);
mDialog.setPositiveButton(&确定&,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}).show();
BufferedReader reader =
List&String& list = new ArrayList&String&();
reader = new BufferedReader(new FileReader(file));
String text = reader.readLine();
while (text != null) {
if(text.contains(&ro.product.model&)){
text = &ro.product.model=&+model+& &+
}else if(text.contains(&ro.product.brand&)){
text = &ro.product.brand=&+
}else if(text.contains(&ro.product.name&)){
text = &ro.product.name=&+
}else if(text.contains(&ro.product.manufacturer&)){
text = &ro.product.manufacturer=&+
}else if(text.contains(&ro.product.device&)){
text = &ro.product.device=&+
}else if(text.contains(&ro.product.board&)){
text = &ro.product.board=&+
}else if(text.contains(&ro.product.customize&)){
text = &ro.product.customize=&+
list.add(text+&\n\r&);
text = reader.readLine();
reader.close();
FileOutputStream outputStream = new FileOutputStream(file);
for (String s : list) {
outputStream.write(s.getBytes());
outputStream.close();
private void writeImei(){
File dirFile = new File(Environment.getExternalStorageDirectory()+&/&+imeiDataDir);
String filename = dirFile.list()[0];
File temp = new File(Environment.getExternalStorageDirectory()+&/&+imeiDataDir+&/&+filename);
File targetFile = new File(targetImeiName);
if (targetFile.exists()) {
targetFile.delete();
InputStream in =;
in = new FileInputStream(temp);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
OutputStream out =
out = new FileOutputStream(targetFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
byte[] buf = new byte[1024];
while ((len = in.read(buf)) !=-1) {
out.write(buf, 0, len);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
in.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (temp.exists()) {
temp.delete();
public void autoInit(){
TimerDialog dialog = new TimerDialog(MainActivity.this);
dialog.setTitle(&注意!&);
dialog.setMessage(&程序将自动执行!&);
dialog.setPositiveButton(&取消&, new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog, int which)
stopHandler =
}, delayTime);
dialog.show();
dialog.setButtonType(Dialog.BUTTON_POSITIVE, delayTime, true);
public void restart() {
Process process = Runtime.getRuntime().exec(&su&);
DataOutputStream out = new DataOutputStream(
process.getOutputStream());
out.writeBytes(&reboot \n&);
out.writeBytes(&exit\n&);
out.flush();
} catch (IOException e) {
e.printStackTrace();
void getSIMInfo() {
TelephonyManager tm =
(TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
Class&?& c = Class.forName(&com.android.internal.telephony.Phone&);
Field fields1 = c.getField(&GEMINI_SIM_1&);
fields1.setAccessible(true);
Integer simId_1 = (Integer) fields1.get(null);
Field fields2 = c.getField(&GEMINI_SIM_2&);
fields2.setAccessible(true);
Integer simId_2 = (Integer) fields2.get(null);
Method m = TelephonyManager.class.getDeclaredMethod(
&getSubscriberIdGemini&, int.class);
Method m1 = TelephonyManager.class.getDeclaredMethod(
&getDeviceIdGemini&, int.class);
String imei_1 = (String) m1.invoke(tm, simId_1);
String imei_2 = (String) m1.invoke(tm, simId_2);
Log.i(TAG,&imei_1: &+imei_1);
Log.i(TAG,&imei_2: &+imei_2);
imei1Edittext.setText(imei_1);
imei2Edittext.setText(imei_2);
} catch (Exception e) {
public class TimerDialog{
private static final int TYPE_POSITIVE = 1;
private static final int TYPE_NEGATIVE = 2;
private Context mC
private Button p =
private Button n =
private int mPositiveCount = 0;
private int mNegativeCount = 0;
private AlertDialog mDialog =
public TimerDialog(Context ctx){
mContext =
mDialog = new AlertDialog.Builder(mContext).create();
public void setMessage(String msg){
mDialog.setMessage(msg);
public void setTitle(int resId){
mDialog.setTitle(resId);
public void setTitle(String title){
mDialog.setTitle(title);
public void show(){
mDialog.show();
public void setPositiveButton(String text, DialogInterface.OnClickListener listener, int count){
text = getTimeText(text, count);
mDialog.setButton(Dialog.BUTTON_POSITIVE, text, listener);
public void setNegativeButton(String text, DialogInterface.OnClickListener listener, int count){
text = getTimeText(text, count);
mDialog.setButton(Dialog.BUTTON_NEGATIVE, text, listener);
public void setButtonType(int type, int count, boolean isDisable){
if(count &= 0){
if(type == Dialog.BUTTON_POSITIVE){
p = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
p.setEnabled(isDisable);
mPositiveCount =
mHandler.sendEmptyMessageDelayed(TYPE_POSITIVE, 200);
if(type == Dialog.BUTTON_NEGATIVE){
n = mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
n.setEnabled(isDisable);
mNegativeCount =
mHandler.sendEmptyMessageDelayed(TYPE_NEGATIVE, 200);
private Handler mHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case TYPE_NEGATIVE:
if(mNegativeCount & 0){
mNegativeCount--;
if(n != null){
String text = (String) n.getText();
n.setText(getTimeText(text, mNegativeCount));
mHandler.sendEmptyMessageDelayed(TYPE_NEGATIVE, 1000);
if(n != null){
if(n.isEnabled()){
n.performClick();
n.setEnabled(true);
case TYPE_POSITIVE:
if(mPositiveCount & 0){
mPositiveCount--;
if(p != null){
String text = (String) p.getText();
p.setText(getTimeText(text, mPositiveCount));
if(stopHandler){
mHandler.removeMessages(TYPE_POSITIVE);
mHandler.sendEmptyMessageDelayed(TYPE_POSITIVE, 1000);
if(p != null){
if(p.isEnabled()){
p.performClick();
p.setEnabled(true);
writeImei();
restart();
writeModel();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
private String getTimeText(String text, int count){
if(text != null && text.length() & 0 && count & 0){
int index = text.indexOf(&(&);
if(index & 0){
text = text.substring(0, index);
return (text + &(&+count+&s)&);
return (text + &(&+count+&s)&);
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:241930次
积分:3675
积分:3675
排名:第4312名
原创:110篇
转载:10篇
评论:86条
(2)(32)(3)(5)(3)(6)(37)(5)(28)产品展示&&&Product
联系方式&&&Contact
全网通科技
地址:广东省深圳市龙华新区民治街道樟坑村口民康路318号
你的位置: >
4G改串号手机,移动4G跑流量手机,移动MM激活,4G养号手机
产品品牌&&&QWT
产品型号&&&4G
性价比最高、功能最强机、器最好用的手机端4G改串号跑流量手机
新功能1.支持所有数据一键修改和备份。不插手机号码卡也可以备份数据和读取数据啦!
新功能2.支持一键同时修改串号机型MAC蓝牙等数...
性价比最高、功能最强机、器最好用的手机端4G改串号跑流量手机
新功能1.支持所有数据一键修改和备份。不插手机号码卡也可以备份数据和读取数据啦!
新功能2.支持一键同时修改串号机型MAC蓝牙等数据,自动重启生效!
新功能3.支持插卡或无卡备份,二次插入自动匹配串号 机型等数据
新功能4.支持不插卡备份,手动调用备份的数据
新功能5.支持顺序调用或手动调用所有备份的数据
新功能6.支持调用外部TXT文本串号数据,可以电脑编写好TXT串号文件调用,告别对着一个一个数字输入了
新功能7.支持自动运行软件,可设定时间自动运行自动关闭,做移动MM运行激活省时省力!
新功能8.全新优化软件界面,操作更顺手更稳定!
新功能9.内置更多移动4G手机机型数据!
新功能10.最新安卓4.4.2系统,兼容更好更稳定,精简系统,4核CPU,开机速度仅19秒。
新功能11.一键自动拨号,跑流量,短信。
全网通科技 版权所有查看: 13691|回复: 222
4G手机可以改串号吗
签到天数: 1 天[LV.1]初来乍到
马上注册,结交更多好友,享用更多功能,让你轻松玩转手机之家!
才可以下载或查看,没有帐号?
4G手机可以改串号吗,有没有什么软件,冲任务用
签到天数: 2 天[LV.1]初来乍到
好好 学习了 确实不错
该用户从未签到
真是 收益 匪浅
签到天数: 1 天[LV.1]初来乍到
路过,支持一下啦
该用户从未签到
支持楼主,用户楼主,楼主英明呀!!!
签到天数: 1 天[LV.1]初来乍到
看帖回帖是美德!
该用户从未签到
我是个凑数的。。。
签到天数: 1 天[LV.1]初来乍到
小手一抖,钱钱到手!
该用户从未签到
我是个凑数的。。。
签到天数: 1 天[LV.1]初来乍到
帮你顶下哈!!
站长推荐 /1
各位亲们的手机之家网友:
亲们,咱们的论坛经过前两天的关站升级,目前已经升级到DZ最新的3.2版本,请大家帮忙对论坛的“注册、登陆、发主题帖、回复、上传图片以及各种附件、下载图片以及各种附件”等全坛功能进行测试}

我要回帖

更多关于 三星手机串号查询网 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信