diff --git a/FuckMFS.apk b/FuckMFS.apk
index b5f92ec4aa7eb381d7e5510b8cbb7258e0d77f27..c5c830f5f87d62f868f09f3ce58e95c3bb05202f 100644
Binary files a/FuckMFS.apk and b/FuckMFS.apk differ
diff --git a/README.md b/README.md
index a790cd1540d675492cadb49f5f1fa9fc84d88f57..5d2d73c105bcf510da281279ecb27312eda2c3cd 100644
--- a/README.md
+++ b/README.md
@@ -4,14 +4,45 @@
 
 是一个 Xposed 模块 
   
-最近出现了公共场合查手机的事情、收集到一个名为 MFSocket 的取证软件客户端。 副本 : [MFSocket.apk](MFSocket.apk?raw=true)
+最近出现了公共场合查手机的事情、收集到一个名为 MFSocket 的取证软件客户端。
   
 功能 : 阻止读取联系人短信媒体文件和应用信息等并随机设备和网络信息。
 
+## MFSocket 类型 / 版本
+
+目前有三种不同类型的 MFSocket 应用  
+  
+1. com.Android.MFSocket  
+  
+图标为旧版Android默认应用图标 默认安卓签名  
+  
+[查看所有版本](./mfsocket/0)  
+  
+最新版本为 1.1 即某人最近被查手机安装的应用 (虽然没有混淆、看起来很假、但是确实是从被查的手机里提取出来的)  
+
+2. com.Android.MFSocket / com.android.mfsocket  
+  
+图标为放大镜、有meiya的签名
+
+[查看所有版本](./mfsocket/1)  
+
+早期版本包名为 com.Android.MFSocket 后期为 com.android.mfsocket  
+  
+有混淆 比第一版提取了更多数据 : 日历、通话记录等等  还会读取 Telegram的聊天记录
+
+3. com.Android.MFSocket  
+  
+图标为小电脑  
+  
+[所有版本](./mfsocket/2)  
+  
+有混淆 比第二种多了四个二进制程序、貌似还能root手机  
+
 ## æ›´æ–°
 
 06 / 23 : 增加联系人与SIM卡号随机生成、短信返回通知类、图片音频视频信息随机生成、应用列表返回国内白名单应用。  
 06 / 23 : 更新国内应用白名单列表
+06 / 26 : 更新对其他版本的适配 请更新
 
 ## 感谢
 
diff --git a/app/src/main/java/io/kurumi/fuckmfs/FuckMFS.java b/app/src/main/java/io/kurumi/fuckmfs/FuckMFS.java
index 2a6d4559eff80170830b482c4ff2c524aaeebb90..5c27997396876603e4063449db669c04cf6cb484 100644
--- a/app/src/main/java/io/kurumi/fuckmfs/FuckMFS.java
+++ b/app/src/main/java/io/kurumi/fuckmfs/FuckMFS.java
@@ -1,10 +1,12 @@
 package io.kurumi.fuckmfs;
 
+import android.bluetooth.BluetoothAdapter;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
+import android.location.LocationManager;
 import android.net.Uri;
 import android.util.Log;
 import com.sollyu.android.appenv.helper.PhoneHelper;
@@ -12,6 +14,7 @@ import com.sollyu.android.appenv.helper.RandomHelper;
 import de.robv.android.xposed.IXposedHookLoadPackage;
 import de.robv.android.xposed.XC_MethodHook;
 import de.robv.android.xposed.XC_MethodReplacement;
+import de.robv.android.xposed.XposedBridge;
 import de.robv.android.xposed.XposedHelpers;
 import de.robv.android.xposed.callbacks.XC_LoadPackage;
 import java.io.BufferedOutputStream;
@@ -22,738 +25,1004 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.List;
 import org.json.JSONObject;
+import android.telephony.TelephonyManager;
+import de.robv.android.xposed.XC_MethodHook.MethodHookParam;
+import java.net.NetworkInterface;
+import android.net.wifi.WifiManager;
+import java.io.IOException;
 
 public class FuckMFS implements IXposedHookLoadPackage {
 
     public static ClassLoader loader;
 
+	XC_MethodReplacement METHOD_EMPTY = new XC_MethodReplacement() {
+
+		@Override
+		protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+
+			return null;
+
+		}
+
+	};
+
+	final String[] whitePrefix = new String[] {
+
+		"com.android",
+		"com.xiaomi",
+		"com.tencent",
+		"com.sina",
+		"com.baidu",
+		"com.zhihu",
+		"com.alibaba",
+		"com.xunlei",
+		"com.uc",
+		"com.douban",
+		"com.renren",
+		"com.coolapk",
+		"com.microsoft",
+		"cn.wps",
+		"tv.danmaku",
+		"com.sohu",
+		"com.cainiao",
+		"com.qualcomm"
+
+	};
+
     @Override
     public void handleLoadPackage(XC_LoadPackage.LoadPackageParam pkg) throws Throwable {
 
-        if (!"com.Android.MFSocket".equals(pkg.packageName)) {
+		loader = pkg.classLoader;
 
-            return;
+		if ("com.Android.MFSocket".equals(pkg.packageName)) {
 
-        }
+			try {
 
-        loader = pkg.classLoader;
+				Class.forName("com.Android.MFSocket.SystemMsg",false,pkg.classLoader);
 
-        // 阻止SHELL执行
+				// 阻止SHELL执行
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.ShellUtils", false, pkg.classLoader),
-            "execCommand",
-            String[].class, boolean.class, boolean.class,
-            new XC_MethodReplacement() {
+				try {
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.ShellUtils",false,pkg.classLoader),
+						"execCommand",
+						String[].class,boolean.class,boolean.class,
+						new XC_MethodReplacement() {
 
-                    return Class
-                        .forName("com.Android.MFSocket.ShellUtils$CommandResult")
-                        .getConstructor(int.class, String.class, String.class)
-                        .newInstance(-1, null, null);
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-                }
+								return Class
+									.forName("com.Android.MFSocket.ShellUtils$CommandResult")
+									.getConstructor(int.class,String.class,String.class)
+									.newInstance(-1,null,null);
 
-            });
+							}
 
-        XC_MethodReplacement METHOD_EMPTY = new XC_MethodReplacement() {
+						});
 
-            @Override
-            protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+				} catch (ClassNotFoundException e) {}
 
-                return null;
 
-            }
 
-        };
+				// 阻止读取联系人
 
-        // 阻止读取联系人
+				try {
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.ContactsMsgOS20", false, pkg.classLoader),
-            "getContactOS20",
-            BufferedOutputStream.class, StringBuffer.class, int.class,
-            new XC_MethodReplacement() {
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.ContactsMsgOS20",false,pkg.classLoader),
+						"getContactOS20",
+						BufferedOutputStream.class,StringBuffer.class,int.class,
+						new XC_MethodReplacement() {
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
 
-                    BufferedOutputStream out = (BufferedOutputStream) params.args[0];
-                    StringBuffer contatMsg = (StringBuffer) params.args[1];
-                    int oneTimeCount = (int)params.args[2];
+								BufferedOutputStream out = (BufferedOutputStream) params.args[0];
+								StringBuffer contatMsg = (StringBuffer) params.args[1];
+								int oneTimeCount = (int)params.args[2];
 
-                    int contactConts = RandomHelper.getInstance().randomInt(1, 11);
+								int contactConts = RandomHelper.getInstance().randomInt(1,11);
 
-                    StringBuffer count = new StringBuffer();
+								StringBuffer count = new StringBuffer();
 
-                    count.append(contactConts);
+								count.append(contactConts);
 
-                    sendData(out, count.toString());
+								sendData(out,count.toString());
 
-                    int nSendCount = 0;
+								int nSendCount = 0;
 
-                    for (int index = 1;index < contactConts;index ++) {
+								for (int index = 1;index < contactConts;index ++) {
 
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(2, false, false, true), contatMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomTelephonyGetLine1Number(), contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendItem("", contatMsg);
-                        RecordPackage.AppendRecord(contatMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(2,false,false,true),contatMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomTelephonyGetLine1Number(),contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendItem("",contatMsg);
+									RecordPackage.AppendRecord(contatMsg);
 
 
-                        if (nSendCount % oneTimeCount == 0) {
+									if (nSendCount % oneTimeCount == 0) {
 
-                            sendData(out, contatMsg.toString());
-                            contatMsg.setLength(0);
+										sendData(out,contatMsg.toString());
+										contatMsg.setLength(0);
 
-                        }
+									}
 
-                    }
+								}
 
-                    sendData(out, contatMsg.toString());
-                    contatMsg.setLength(0);
+								sendData(out,contatMsg.toString());
+								contatMsg.setLength(0);
 
 
-                    return null;
-                }
+								return null;
+							}
 
-            });
+						});
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.ContactsSIM", false, pkg.classLoader),
-            "getContact",
-            BufferedOutputStream.class, StringBuffer.class, int.class,
-            new XC_MethodReplacement() {
+				} catch (ClassNotFoundException e) {}
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+				try {
 
-                    BufferedOutputStream out = (BufferedOutputStream) params.args[0];
-                    StringBuffer contatMsg = (StringBuffer) params.args[1];
-                    int oneTimeCount = (int)params.args[2];
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.ContactsSIM",false,pkg.classLoader),
+						"getContact",
+						BufferedOutputStream.class,StringBuffer.class,int.class,
+						new XC_MethodReplacement() {
 
-                    int simCount = RandomHelper.getInstance().randomInt(1, 3);
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
 
-                    int nSendCount = 0;
+								BufferedOutputStream out = (BufferedOutputStream) params.args[0];
+								StringBuffer contatMsg = (StringBuffer) params.args[1];
+								int oneTimeCount = (int)params.args[2];
 
-                    StringBuffer count = new StringBuffer();
+								int simCount = RandomHelper.getInstance().randomInt(1,3);
 
-                    count.append(simCount);
+								int nSendCount = 0;
 
-                    sendData(out, count.toString());
+								StringBuffer count = new StringBuffer();
 
+								count.append(simCount);
 
-                    String phonename = RandomHelper.getInstance().randomString(2, true, true, true);
-                    String phoneNo = RandomHelper.getInstance().randomTelephonyGetLine1Number();
+								sendData(out,count.toString());
 
-                    Log.i("PhoneContact", "name: " + phonename + " phone: " + phoneNo);
 
-                    RecordPackage.AppendItem(phonename, contatMsg);
-                    RecordPackage.AppendItem(phoneNo, contatMsg);
-                    RecordPackage.AppendRecord(contatMsg);
+								String phonename = RandomHelper.getInstance().randomString(2,true,true,true);
+								String phoneNo = RandomHelper.getInstance().randomTelephonyGetLine1Number();
 
-                    nSendCount++;
+								Log.i("PhoneContact","name: " + phonename + " phone: " + phoneNo);
 
-                    if (nSendCount % oneTimeCount == 0) {
+								RecordPackage.AppendItem(phonename,contatMsg);
+								RecordPackage.AppendItem(phoneNo,contatMsg);
+								RecordPackage.AppendRecord(contatMsg);
 
-                        sendData(out, contatMsg.toString());
+								nSendCount++;
 
-                        contatMsg.setLength(0);
+								if (nSendCount % oneTimeCount == 0) {
 
-                    }
+									sendData(out,contatMsg.toString());
 
+									contatMsg.setLength(0);
 
-                    sendData(out, contatMsg.toString());
-                    contatMsg.setLength(0);
+								}
 
-                    return null;
 
-                }
-            });
+								sendData(out,contatMsg.toString());
+								contatMsg.setLength(0);
 
-        // 应用信息
+								return null;
 
-        final String[] whitePrefix = new String[] {
+							}
+						});
 
-            "com.android",
-            "com.xiaomi",
-            "com.tencent",
-            "com.sina",
-            "com.baidu",
-            "com.zhihu",
-            "com.alibaba",
-            "com.xunlei",
-            "com.uc",
-            "com.douban",
-            "com.renren",
-            "com.coolapk",
-            "com.microsoft",
-            "cn.wps",
-            "tv.danmaku",
-            "com.sohu",
-            "com.cainiao",
-            "com.qualcomm"
+				} catch (ClassNotFoundException e) {}
 
-        };
+				// 应用信息
 
+				try {
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.AppMsg", false, pkg.classLoader),
-            "GetAppMsg",
-            StringBuffer.class,
-            new XC_MethodReplacement() {
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.AppMsg",false,pkg.classLoader),
+						"GetAppMsg",
+						StringBuffer.class,
+						new XC_MethodReplacement() {
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
 
-                    StringBuffer appMsg = (StringBuffer) params.args[0];
+								StringBuffer appMsg = (StringBuffer) params.args[0];
 
-                    Context mContext = (Context) XposedHelpers.getObjectField(params.thisObject, "mContext");
+								Context mContext = (Context) XposedHelpers.getObjectField(params.thisObject,"mContext");
 
-                    PackageManager pm = mContext.getPackageManager();
-                    List<PackageInfo> packages = pm.getInstalledPackages(12288);
-                    int packageSize = packages.size();
+								PackageManager pm = mContext.getPackageManager();
+								List<PackageInfo> packages = pm.getInstalledPackages(12288);
+								int packageSize = packages.size();
 
-                    next : for (int i = 0; i < packageSize; i++) {
+								next : for (int i = 0; i < packageSize; i++) {
 
-                        PackageInfo packageInfo = (PackageInfo) packages.get(i);
+									PackageInfo packageInfo = (PackageInfo) packages.get(i);
 
-                        String appType = "system";
+									String appType = "system";
 
-                        if ((packageInfo.applicationInfo.flags & 1) == 0) {
+									if ((packageInfo.applicationInfo.flags & 1) == 0) {
 
-                            appType = "user";
+										appType = "user";
 
 
-                        }
+									}
 
-                        String appName = packageInfo.applicationInfo.loadLabel(pm).toString();
-                        String packageName = packageInfo.packageName;
+									String appName = packageInfo.applicationInfo.loadLabel(pm).toString();
+									String packageName = packageInfo.packageName;
 
-                        loop : while (true) {
+									loop : while (true) {
 
-                            for (String prefix : whitePrefix) {
+										for (String prefix : whitePrefix) {
 
-                                if (packageName.startsWith(prefix)) {
+											if (packageName.startsWith(prefix)) {
 
-                                    break loop;
+												break loop;
 
-                                }
+											}
 
-                            }
+										}
 
-                            continue next;
+										continue next;
 
-                        }
+									}
 
-                        String versionName = packageInfo.versionName;
-                        String appDir = packageInfo.applicationInfo.publicSourceDir;
-                        String strDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(30, 2000) * 24 * 60 * 1000)));
-                        String sig = "";
-                        String md5 = "";
-
-                        StringBuffer strPermissionsBuffer = new StringBuffer();
-                        try {
-                            String[] sharedPkgList = pm.getPackageInfo(packageName, 4096).requestedPermissions;
-                            if (sharedPkgList != null) {
-                                for (String append : sharedPkgList) {
-                                    strPermissionsBuffer.append(append);
-                                    strPermissionsBuffer.append(",");
-                                }
-                            }
-                        } catch (Exception e2) {
-                        }
+									String versionName = packageInfo.versionName;
+									String appDir = packageInfo.applicationInfo.publicSourceDir;
+									String strDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(30,2000) * 24 * 60 * 1000)));
+									String sig = "";
+									String md5 = "";
 
+									StringBuffer strPermissionsBuffer = new StringBuffer();
+									try {
+										String[] sharedPkgList = pm.getPackageInfo(packageName,4096).requestedPermissions;
+										if (sharedPkgList != null) {
+											for (String append : sharedPkgList) {
+												strPermissionsBuffer.append(append);
+												strPermissionsBuffer.append(",");
+											}
+										}
+									} catch (Exception e2) {
+									}
 
-                        RecordPackage.AppendItem(appName, appMsg);
-                        RecordPackage.AppendItem(packageName, appMsg);
-                        RecordPackage.AppendItem(versionName, appMsg);
-                        RecordPackage.AppendItem(appType, appMsg);
-                        RecordPackage.AppendItem(0, appMsg);
-                        RecordPackage.AppendItem(strDate, appMsg);
-                        RecordPackage.AppendItem(appDir, appMsg);
-                        RecordPackage.AppendItem(strPermissionsBuffer.toString(), appMsg);
-                        RecordPackage.AppendItem(sig, appMsg);
-                        RecordPackage.AppendItem(md5, appMsg);
-                        RecordPackage.AppendRecord(appMsg);
-
-                    }
-
-                    return null;
-                }
 
-            });
+									RecordPackage.AppendItem(appName,appMsg);
+									RecordPackage.AppendItem(packageName,appMsg);
+									RecordPackage.AppendItem(versionName,appMsg);
+									RecordPackage.AppendItem(appType,appMsg);
+									RecordPackage.AppendItem(0,appMsg);
+									RecordPackage.AppendItem(strDate,appMsg);
+									RecordPackage.AppendItem(appDir,appMsg);
+									RecordPackage.AppendItem(strPermissionsBuffer.toString(),appMsg);
+									RecordPackage.AppendItem(sig,appMsg);
+									RecordPackage.AppendItem(md5,appMsg);
+									RecordPackage.AppendRecord(appMsg);
 
-        // 音频 / 视频
+								}
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.AudioMsg", false, pkg.classLoader),
-            "getAudio",
-            BufferedOutputStream.class, StringBuffer.class, int.class,
-            new XC_MethodReplacement() {
-
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
-
-                    BufferedOutputStream out = (BufferedOutputStream) params.args[0];
-                    StringBuffer audioMsg = (StringBuffer) params.args[1];
-                    int nConfig = (int)params.args[2];
-
-                    boolean bNeedMD5 = false;
+								return null;
+							}
 
-                    switch (nConfig) {
-                            case 0:
-                            bNeedMD5 = false;
-                            break;
-                            case 1:
-                            bNeedMD5 = true;
-                            break;
-                            case 2:
-                            bNeedMD5 = false;
-                            break;
-                            case 3:
-                            bNeedMD5 = true;
-                            break;
-                    }
+						});
 
-                    int count = RandomHelper.getInstance().randomInt(9, 114);
+				} catch (ClassNotFoundException e) {}
 
-                    sendData(out, ((Integer)count).toString());
+				// 音频 / 视频
 
+				try {
 
-                    for (int index = 0;index < count;index ++) {
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.AudioMsg",false,pkg.classLoader),
+						"getAudio",
+						BufferedOutputStream.class,StringBuffer.class,int.class,
+						new XC_MethodReplacement() {
 
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(11, 45), true, true, true) + ".mp3", audioMsg);
-                        RecordPackage.AppendItem("", audioMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(2, 5), true, true, false), audioMsg);
-                        RecordPackage.AppendItem("file:///dev/null", audioMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 100, 30 * 60 * 1000), audioMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 1024, 30 * 1024), audioMsg);
-                        RecordPackage.AppendItem("audio/mp3", audioMsg);
-                        RecordPackage.AppendItem(((Long)System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(10, 30 * 24) * 24 * 60 * 1000)), audioMsg);
-                        RecordPackage.AppendItem(bNeedMD5 ? RandomHelper.getInstance().randomString(16, true, false, true) : "", audioMsg);
-                        RecordPackage.AppendRecord(audioMsg);
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
 
-                        sendData(out, audioMsg.toString());
-                        audioMsg.setLength(0);
+								BufferedOutputStream out = (BufferedOutputStream) params.args[0];
+								StringBuffer audioMsg = (StringBuffer) params.args[1];
+								int nConfig = (int)params.args[2];
 
-                    }
+								boolean bNeedMD5 = false;
 
-                    sendData(out, audioMsg.toString());
-                    audioMsg.setLength(0);
+								switch (nConfig) {
+									case 0:
+										bNeedMD5 = false;
+										break;
+									case 1:
+										bNeedMD5 = true;
+										break;
+									case 2:
+										bNeedMD5 = false;
+										break;
+									case 3:
+										bNeedMD5 = true;
+										break;
+								}
 
-                    return null;
-                }
+								int count = RandomHelper.getInstance().randomInt(9,114);
 
-            });
+								sendData(out,((Integer)count).toString());
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.VideoMsg", false, pkg.classLoader),
-            "getVideo",
-            BufferedOutputStream.class, StringBuffer.class, int.class,
-            new XC_MethodReplacement() {
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+								for (int index = 0;index < count;index ++) {
 
-                    BufferedOutputStream out = (BufferedOutputStream) params.args[0];
-                    StringBuffer videoMsg = (StringBuffer) params.args[1];
-                    int nConfig = (int)params.args[2];
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(11,45),true,true,true) + ".mp3",audioMsg);
+									RecordPackage.AppendItem("",audioMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(2,5),true,true,false),audioMsg);
+									RecordPackage.AppendItem("file:///dev/null",audioMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 100,30 * 60 * 1000),audioMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 1024,30 * 1024),audioMsg);
+									RecordPackage.AppendItem("audio/mp3",audioMsg);
+									RecordPackage.AppendItem(((Long)System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(10,30 * 24) * 24 * 60 * 1000)),audioMsg);
+									RecordPackage.AppendItem(bNeedMD5 ? RandomHelper.getInstance().randomString(16,true,false,true) : "",audioMsg);
+									RecordPackage.AppendRecord(audioMsg);
 
-                    boolean bNeedMD5 = false;
+									sendData(out,audioMsg.toString());
+									audioMsg.setLength(0);
 
-                    switch (nConfig) {
-                            case 0:
-                            bNeedMD5 = false;
-                            break;
-                            case 1:
-                            bNeedMD5 = true;
-                            break;
-                            case 2:
-                            bNeedMD5 = false;
-                            break;
-                            case 3:
-                            bNeedMD5 = true;
-                            break;
-                    }
+								}
 
-                    int count = RandomHelper.getInstance().randomInt(9, 114);
+								sendData(out,audioMsg.toString());
+								audioMsg.setLength(0);
 
-                    sendData(out, ((Integer)count).toString());
+								return null;
+							}
 
+						});
 
-                    for (int index = 0;index < count;index ++) {
+				} catch (ClassNotFoundException e) {}
 
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(11, 45), true, true, true) + ".mp4", videoMsg);
-                        RecordPackage.AppendItem("", videoMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(2, 5), true, true, false), videoMsg);
-                        RecordPackage.AppendItem("file:///dev/null", videoMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 100, 30 * 60 * 1000), videoMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 1024, 30 * 1024), videoMsg);
-                        RecordPackage.AppendItem("video/mp4", videoMsg);
-                        RecordPackage.AppendItem(((Long)System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(10, 30 * 24) * 24 * 60 * 1000)), videoMsg);
-                        RecordPackage.AppendItem(bNeedMD5 ? RandomHelper.getInstance().randomString(16, true, false, true) : "", videoMsg);
-                        RecordPackage.AppendRecord(videoMsg);
+				try {
 
-                        sendData(out, videoMsg.toString());
-                        videoMsg.setLength(0);
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.VideoMsg",false,pkg.classLoader),
+						"getVideo",
+						BufferedOutputStream.class,StringBuffer.class,int.class,
+						new XC_MethodReplacement() {
 
-                    }
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
 
-                    sendData(out, videoMsg.toString());
-                    videoMsg.setLength(0);
+								BufferedOutputStream out = (BufferedOutputStream) params.args[0];
+								StringBuffer videoMsg = (StringBuffer) params.args[1];
+								int nConfig = (int)params.args[2];
 
-                    return null;
-                }
+								boolean bNeedMD5 = false;
 
-            });
+								switch (nConfig) {
+									case 0:
+										bNeedMD5 = false;
+										break;
+									case 1:
+										bNeedMD5 = true;
+										break;
+									case 2:
+										bNeedMD5 = false;
+										break;
+									case 3:
+										bNeedMD5 = true;
+										break;
+								}
 
+								int count = RandomHelper.getInstance().randomInt(9,114);
 
-        // 蓝牙
+								sendData(out,((Integer)count).toString());
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.BtMsg", false, pkg.classLoader),
-            "getBtInfo",
-            StringBuffer.class,
-            METHOD_EMPTY);
 
-        // 此处是取得已配对设备 MAC等在下方systeminfo 可忽略
+								for (int index = 0;index < count;index ++) {
 
-        // 定位
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(11,45),true,true,true) + ".mp4",videoMsg);
+									RecordPackage.AppendItem("",videoMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(2,5),true,true,false),videoMsg);
+									RecordPackage.AppendItem("file:///dev/null",videoMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 100,30 * 60 * 1000),videoMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 1024,30 * 1024),videoMsg);
+									RecordPackage.AppendItem("video/mp4",videoMsg);
+									RecordPackage.AppendItem(((Long)System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(10,30 * 24) * 24 * 60 * 1000)),videoMsg);
+									RecordPackage.AppendItem(bNeedMD5 ? RandomHelper.getInstance().randomString(16,true,false,true) : "",videoMsg);
+									RecordPackage.AppendRecord(videoMsg);
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.GpsMsg", false, pkg.classLoader),
-            "getGpsInfo",
-            StringBuffer.class,
-            METHOD_EMPTY);
+									sendData(out,videoMsg.toString());
+									videoMsg.setLength(0);
 
-        // 位置信息 可忽略
+								}
 
-        // 相册
+								sendData(out,videoMsg.toString());
+								videoMsg.setLength(0);
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.ImageMsg", false, pkg.classLoader),
-            "getImage",
-            BufferedOutputStream.class, StringBuffer.class, int.class,
-            new XC_MethodReplacement() {
+								return null;
+							}
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+						});
 
-                    BufferedOutputStream out = (BufferedOutputStream) params.args[0];
-                    StringBuffer imageMsg = (StringBuffer) params.args[1];
-                    int nConfig = (int)params.args[2];
+				} catch (ClassNotFoundException e) {}
 
-                    boolean bNeedMD5 = false;
 
-                    switch (nConfig) {
-                            case 0:
-                            bNeedMD5 = false;
-                            break;
-                            case 1:
-                            bNeedMD5 = true;
-                            break;
-                            case 2:
-                            bNeedMD5 = false;
-                            break;
-                            case 3:
-                            bNeedMD5 = true;
-                            break;
-                    }
+				// 蓝牙
 
-                    int count = RandomHelper.getInstance().randomInt(9, 114);
+				try {
 
-                    sendData(out, ((Integer)count).toString());
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.BtMsg",false,pkg.classLoader),
+						"getBtInfo",
+						StringBuffer.class,
+						METHOD_EMPTY);
 
-                    for (int index = 0;index < count;index ++) {
+				} catch (ClassNotFoundException e) {}
 
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(11, 45), true, true, true) + ".png", imageMsg);
-                        RecordPackage.AppendItem("", imageMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(2, 5), true, true, false), imageMsg);
-                        RecordPackage.AppendItem("file:///dev/null", imageMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 100, 30 * 60 * 1000), imageMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 1024, 30 * 1024), imageMsg);
-                        RecordPackage.AppendItem("image/png", imageMsg);
-                        RecordPackage.AppendItem(((Long)System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(10, 30 * 24) * 24 * 60 * 1000)), imageMsg);
-                        RecordPackage.AppendItem(bNeedMD5 ? RandomHelper.getInstance().randomString(16, true, false, true) : "", imageMsg);
-                        RecordPackage.AppendRecord(imageMsg);
+				// 此处是取得已配对设备 MAC等在下方systeminfo 可忽略
 
-                        sendData(out, imageMsg.toString());
-                        imageMsg.setLength(0);
+				// 定位
 
-                    }
+				try {
 
-                    sendData(out, imageMsg.toString());
-                    imageMsg.setLength(0);
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.GpsMsg",false,pkg.classLoader),
+						"getGpsInfo",
+						StringBuffer.class,
+						METHOD_EMPTY);
 
-                    return null;
-                }
+				} catch (ClassNotFoundException e) {}
 
-            });
+				// 位置信息 可忽略
 
+				// 相册
 
-        // 短信
+				try {
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.SmsMsg", false, pkg.classLoader),
-            "getSms",
-            BufferedOutputStream.class, StringBuffer.class, int.class,
-            new XC_MethodReplacement() {
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.ImageMsg",false,pkg.classLoader),
+						"getImage",
+						BufferedOutputStream.class,StringBuffer.class,int.class,
+						new XC_MethodReplacement() {
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
 
-                    BufferedOutputStream out = (BufferedOutputStream) params.args[0];
-                    StringBuffer smsMsg = (StringBuffer) params.args[1];
-                    int oneTimeCount = (int)params.args[2];
+								BufferedOutputStream out = (BufferedOutputStream) params.args[0];
+								StringBuffer imageMsg = (StringBuffer) params.args[1];
+								int nConfig = (int)params.args[2];
 
-                    ContentResolver mResolver = (ContentResolver) XposedHelpers.getObjectField(params.thisObject, "mResolver");
+								boolean bNeedMD5 = false;
 
-                    if (mResolver != null) {
-                        Cursor cur;
-                        String[] smsBox = new String[]{"content://sms/inbox", "content://sms/sent", "content://sms/draft", "content://sms/outbox", "content://sms/failed", "content://sms/queued"};
-                        String[] projection = new String[]{"address", "person", "date", "protocol", "read", "type", "subject", "body"};
-                        int smsCount = 0;
-                        for (int i = 0; i < 6; i++) {
-                            cur = mResolver.query(Uri.parse(smsBox[i]), projection, null, null, "date desc");
-                            smsCount += cur.getCount();
-                            cur.close();
-                        }
-                        StringBuffer count = new StringBuffer();
-
-
-                        count.append(smsCount);
-
-                        sendData(out, count.toString());
-
-                        for (int j = 0; j < 6; j++) {
-                            Uri uri = Uri.parse(smsBox[j]);
-                            cur = mResolver.query(uri, projection, null, null, "date desc");
-
-                            if (cur.moveToFirst()) {
-                                int nameIdx = cur.getColumnIndexOrThrow("person");
-                                int addressIdx = cur.getColumnIndexOrThrow("address");
-                                int dateIdx = cur.getColumnIndexOrThrow("date");
-                                int prtclIdx = cur.getColumnIndexOrThrow("protocol");
-                                int readIdx = cur.getColumnIndexOrThrow("read");
-                                int subjectIdx = cur.getColumnIndexOrThrow("subject");
-                                int bodyIdx = cur.getColumnIndexOrThrow("body");
-                                int typeIdx = cur.getColumnIndexOrThrow("type");
-                                do {
-                                    String person = cur.getString(nameIdx);
-                                    String address = cur.getString(addressIdx);
-                                    long date = cur.getLong(dateIdx);
-                                    String subject = cur.getString(subjectIdx);
-                                    String body = cur.getString(bodyIdx);
-                                    int type = cur.getInt(typeIdx);
-                                    int read = cur.getInt(readIdx);
-                                    int protocol = cur.getInt(prtclIdx);
-
-                                    if (!address.startsWith("1069")) {
-
-                                        address = RandomHelper.getInstance().randomTelephonyGetLine1Number();
-
-                                        body = RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(9, 114), true, true, true);
-
-                                    }
-
-                                    RecordPackage.AppendItem(person, smsMsg);
-                                    RecordPackage.AppendItem(address, smsMsg);
-                                    RecordPackage.AppendItem(date, smsMsg);
-                                    RecordPackage.AppendItem(subject, smsMsg);
-                                    RecordPackage.AppendItem(body, smsMsg);
-                                    RecordPackage.AppendItem(type, smsMsg);
-                                    RecordPackage.AppendItem(read, smsMsg);
-                                    RecordPackage.AppendItem(protocol, smsMsg);
-                                    RecordPackage.AppendRecord(smsMsg);
-                                    if (0 % oneTimeCount == 0) {
-                                        sendData(out, smsMsg.toString());
-                                        smsMsg.setLength(0);
-                                    }
-                                } while (cur.moveToNext());
-                            }
-                            sendData(out, smsMsg.toString());
-                            smsMsg.setLength(0);
-                            cur.close();
+								switch (nConfig) {
+									case 0:
+										bNeedMD5 = false;
+										break;
+									case 1:
+										bNeedMD5 = true;
+										break;
+									case 2:
+										bNeedMD5 = false;
+										break;
+									case 3:
+										bNeedMD5 = true;
+										break;
+								}
+
+								int count = RandomHelper.getInstance().randomInt(9,114);
+
+								sendData(out,((Integer)count).toString());
+
+								for (int index = 0;index < count;index ++) {
+
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(11,45),true,true,true) + ".png",imageMsg);
+									RecordPackage.AppendItem("",imageMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(2,5),true,true,false),imageMsg);
+									RecordPackage.AppendItem("file:///dev/null",imageMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 100,30 * 60 * 1000),imageMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomInt(1 * 1024,30 * 1024),imageMsg);
+									RecordPackage.AppendItem("image/png",imageMsg);
+									RecordPackage.AppendItem(((Long)System.currentTimeMillis() - ((long)RandomHelper.getInstance().randomInt(10,30 * 24) * 24 * 60 * 1000)),imageMsg);
+									RecordPackage.AppendItem(bNeedMD5 ? RandomHelper.getInstance().randomString(16,true,false,true) : "",imageMsg);
+									RecordPackage.AppendRecord(imageMsg);
+
+									sendData(out,imageMsg.toString());
+									imageMsg.setLength(0);
+
+								}
+
+								sendData(out,imageMsg.toString());
+								imageMsg.setLength(0);
+
+								return null;
+							}
+
+						});
+
+				} catch (ClassNotFoundException e) {}
+
+
+				// 短信
+
+				try {
+
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.SmsMsg",false,pkg.classLoader),
+						"getSms",
+						BufferedOutputStream.class,StringBuffer.class,int.class,
+						new XC_MethodReplacement() {
+
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+
+								BufferedOutputStream out = (BufferedOutputStream) params.args[0];
+								StringBuffer smsMsg = (StringBuffer) params.args[1];
+								int oneTimeCount = (int)params.args[2];
+
+								ContentResolver mResolver = (ContentResolver) XposedHelpers.getObjectField(params.thisObject,"mResolver");
+
+								if (mResolver != null) {
+									Cursor cur;
+									String[] smsBox = new String[]{"content://sms/inbox", "content://sms/sent", "content://sms/draft", "content://sms/outbox", "content://sms/failed", "content://sms/queued"};
+									String[] projection = new String[]{"address", "person", "date", "protocol", "read", "type", "subject", "body"};
+									int smsCount = 0;
+									for (int i = 0; i < 6; i++) {
+										cur = mResolver.query(Uri.parse(smsBox[i]),projection,null,null,"date desc");
+										smsCount += cur.getCount();
+										cur.close();
+									}
+									StringBuffer count = new StringBuffer();
+
+
+									count.append(smsCount);
+
+									sendData(out,count.toString());
+
+									for (int j = 0; j < 6; j++) {
+										Uri uri = Uri.parse(smsBox[j]);
+										cur = mResolver.query(uri,projection,null,null,"date desc");
+
+										if (cur.moveToFirst()) {
+											int nameIdx = cur.getColumnIndexOrThrow("person");
+											int addressIdx = cur.getColumnIndexOrThrow("address");
+											int dateIdx = cur.getColumnIndexOrThrow("date");
+											int prtclIdx = cur.getColumnIndexOrThrow("protocol");
+											int readIdx = cur.getColumnIndexOrThrow("read");
+											int subjectIdx = cur.getColumnIndexOrThrow("subject");
+											int bodyIdx = cur.getColumnIndexOrThrow("body");
+											int typeIdx = cur.getColumnIndexOrThrow("type");
+											do {
+												String person = cur.getString(nameIdx);
+												String address = cur.getString(addressIdx);
+												long date = cur.getLong(dateIdx);
+												String subject = cur.getString(subjectIdx);
+												String body = cur.getString(bodyIdx);
+												int type = cur.getInt(typeIdx);
+												int read = cur.getInt(readIdx);
+												int protocol = cur.getInt(prtclIdx);
+
+												if (!address.startsWith("1069")) {
+
+													address = RandomHelper.getInstance().randomTelephonyGetLine1Number();
+
+													body = RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(9,114),true,true,true);
+
+												}
+
+												RecordPackage.AppendItem(person,smsMsg);
+												RecordPackage.AppendItem(address,smsMsg);
+												RecordPackage.AppendItem(date,smsMsg);
+												RecordPackage.AppendItem(subject,smsMsg);
+												RecordPackage.AppendItem(body,smsMsg);
+												RecordPackage.AppendItem(type,smsMsg);
+												RecordPackage.AppendItem(read,smsMsg);
+												RecordPackage.AppendItem(protocol,smsMsg);
+												RecordPackage.AppendRecord(smsMsg);
+												if (0 % oneTimeCount == 0) {
+													sendData(out,smsMsg.toString());
+													smsMsg.setLength(0);
+												}
+											} while (cur.moveToNext());
+										}
+										sendData(out,smsMsg.toString());
+										smsMsg.setLength(0);
+										cur.close();
+
+
+										cur.close();
+									}
+
+								}
+
+								return null;
+							}
+						});
+
+				} catch (ClassNotFoundException e) {}
+
+				// 文件Hash
+
+				try {
+
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.MD5Msg",false,pkg.classLoader),
+						"fileMD5",
+						String.class,
+						new XC_MethodReplacement() {
+
+							@Override
+							protected String replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+
+								return "1145141919810FDB1471EF51EC3A32CD";
+
+							}
+						});
+
+				} catch (ClassNotFoundException e) {}
+
+
+
+				String[] networkOperator = new String[] {
+
+					"46000","46002", // 移动
+					"46001", // 联通
+					"46003" , // 电信
+
+				};
+
+				final String no = networkOperator[RandomHelper.getInstance().randomInt(0,4)];
+
+				try {
+
+					StringBuilder json = new StringBuilder();
+
+					BufferedReader reader = new BufferedReader(new InputStreamReader(pkg.classLoader.getResourceAsStream("assets/phone.json")));
+
+					String line;
+
+					while ((line = reader.readLine()) != null) {
+
+						json.append(line + "\n");
+
+					}
 
+					PhoneHelper.getInstance().setPhoneJsonObject(new JSONObject(json.toString()));
+
+				} catch (Exception ex) {}
+
+				try {
+
+					XposedHelpers.findAndHookMethod(
+						Class.forName("com.Android.MFSocket.SystemMsg",false,pkg.classLoader),
+						"getSystemMsg",
+						StringBuffer.class,
+						new XC_MethodReplacement() {
+
+							@Override
+							protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+
+								StringBuffer sysMsg =  (StringBuffer) params.args[0];
+
+								RecordPackage.AppendItem("STAT",sysMsg);
+								RecordPackage.AppendItem(114514,sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("IMEI",sysMsg);
+								RecordPackage.AppendItem(RandomHelper.getInstance().randomTelephonyGetDeviceId(),sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("IMSI",sysMsg);
+								RecordPackage.AppendItem(RandomHelper.getInstance().randomSimSubscriberId(),sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("IMOS",sysMsg);
+								RecordPackage.AppendItem(RandomHelper.getInstance().randomBuildVersionName(),sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("INET",sysMsg);
+								RecordPackage.AppendItem(no,sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("ISIM",sysMsg);
+								RecordPackage.AppendItem(RandomHelper.getInstance().randomTelephonySimSerialNumber(),sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								try {
+									RecordPackage.AppendItem("WIFIMAC",sysMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomWifiInfoMacAddress(),sysMsg);
+									RecordPackage.AppendRecord(sysMsg);
+									RecordPackage.AppendItem("BTMAC",sysMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomWifiInfoMacAddress(),sysMsg);
+									RecordPackage.AppendRecord(sysMsg);
+									RecordPackage.AppendItem("OWNER",sysMsg);
+									RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(1,11),true,true,true),sysMsg);
+									RecordPackage.AppendRecord(sysMsg);
+								} catch (Exception e) {
+									e.printStackTrace();
+								}
+
+								String mf = "HUAWEI";
+								String name = "P10";
+								String model = "VTR-AL00";
+
+
+								try {
+
+
+									ArrayList<String> mfList = PhoneHelper.getInstance().getManufacturerList();
+
+									mf = mfList.get(RandomHelper.getInstance().randomInt(0,mfList.size()));
+
+									HashMap<String, String> modelList = PhoneHelper.getInstance().getModelList(mf);
+
+
+									name = (String) modelList.keySet().toArray()[RandomHelper.getInstance().randomInt(0,modelList.size())];
+									model = modelList.get(name);
+
+								} catch (Exception ex) {}
+
+								RecordPackage.AppendItem("MODEL",sysMsg);
+								RecordPackage.AppendItem(model,sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("MANUFACTURE",sysMsg);
+								RecordPackage.AppendItem(mf,sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("RELEASE",sysMsg);
+								RecordPackage.AppendItem(RandomHelper.getInstance().randomBuildVersionName(),sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+								RecordPackage.AppendItem("NAME",sysMsg);
+								RecordPackage.AppendItem(name,sysMsg);
+								RecordPackage.AppendRecord(sysMsg);
+
+								return null;
+
+							}
+						});
+
+					return;
+
+				} catch (ClassNotFoundException e) {}
+
+			} catch (ClassNotFoundException ex) {}
+
+		}
+
+		if (!"com.android.mfsocket".equals(pkg.packageName))	{
+
+			return;
+
+		} else {
+
+			// 应用信息
+
+			XposedHelpers.findAndHookMethod(
+				PackageManager.class,
+				"getInstalledPackages",
+				int.class,
+				new XC_MethodHook() {
+
+					@Override
+					protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws java.lang.Throwable {
+
+						List<PackageInfo> installedPackages = (List<PackageInfo>) param.getResult();
+
+						List<PackageInfo> result = new LinkedList<>();
+
+						for (PackageInfo app : installedPackages) {
+
+                            for (String prefix : whitePrefix) {
+
+                                if (app.packageName.startsWith(prefix)) {
+
+                                    result.add(app);
+
+                                }
+
+                            }
 
-                            cur.close();
                         }
 
-                    }
+						param.setResult(result);
+
+
+					}
+
+
+				});
+
+			// SHELL
+
+			XposedBridge.hookAllMethods(Runtime.class,"exec",new XC_MethodReplacement() {
+
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
+
+						param.setThrowable(new IOException());
+
+						return null;
+					}
+				});
+
+			// 蓝牙Mac与设备
+
+			XposedHelpers.findAndHookMethod(BluetoothAdapter.class,
+				"getAddress",
+				new XC_MethodReplacement() {
+
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+
+						return RandomHelper.getInstance().randomWifiInfoMacAddress();
+
+					}
+
+
+				});
+
+			// WIFI MAC 与 其他网络信息
+
+			XposedHelpers.findAndHookMethod(WifiManager.class,"getConnectionInfo",METHOD_EMPTY);
+
+			XposedHelpers.findAndHookMethod(NetworkInterface.class,"getNetworkInterfaces",new XC_MethodReplacement() {
+
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+						return new LinkedList<>();
+					}
+
+				});
+
+			XposedHelpers.findAndHookMethod(WifiManager.class,"getConfiguredNetworks",new XC_MethodReplacement() {
+
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+						return new LinkedList();
+					}
+				});
+
+			XposedHelpers.findAndHookMethod(BluetoothAdapter.class,
+				"getBondedDevices",
+				new XC_MethodReplacement() {
+
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+
+						return new LinkedHashSet();
+
+					}
+
+
+				});
+
+			// 因为代码混淆以及内容复杂 且咱没什么时间 这里直接打掉好了 (短信、媒体文件、日历、通话记录等等等...)
+
+			XposedBridge.hookAllMethods(ContentResolver.class,
+				"query",
+				new XC_MethodHook() {
+
+					@Override
+					protected void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
 
-                    return null;
-                }
-            });
+						param.args[0] = Uri.parse("content://null");
 
-        // 文件Hash
+					}
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.MD5Msg", false, pkg.classLoader),
-            "fileMD5",
-            String.class,
-            new XC_MethodReplacement() {
+				});
 
-                @Override
-                protected String replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+			// 定位
 
-                    return "1145141919810FDB1471EF51EC3A32CD";
+			XposedHelpers.findAndHookMethod(LocationManager.class,"getLastKnownLocation",METHOD_EMPTY);
 
-                }
-            });
+			// 设备信息
 
+			XposedBridge.hookAllMethods(TelephonyManager.class,"getDeviceId",new XC_MethodReplacement() {
 
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-        String[] networkOperator = new String[] {
+						return RandomHelper.getInstance().randomTelephonyGetDeviceId();
 
-            "46000","46002", // 移动
-            "46001", // 联通
-            "46003" , // 电信
+					}
+				});
 
-        };
+			XposedBridge.hookAllMethods(TelephonyManager.class,"getImei",new XC_MethodReplacement() {
 
-        final String no = networkOperator[RandomHelper.getInstance().randomInt(0, 4)];
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-        try {
+						return RandomHelper.getInstance().randomTelephonyGetDeviceId();
 
-            StringBuilder json = new StringBuilder();
+					}
+				});
 
-            BufferedReader reader = new BufferedReader(new InputStreamReader(pkg.classLoader.getResourceAsStream("assets/phone.json")));
+			XposedBridge.hookAllMethods(TelephonyManager.class,"getMeid",new XC_MethodReplacement() {
 
-            String line;
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-            while ((line = reader.readLine()) != null) {
+						return RandomHelper.getInstance().randomTelephonyGetDeviceId();
 
-                json.append(line + "\n");
+					}
+				});
 
-            }
+			XposedBridge.hookAllMethods(TelephonyManager.class,"getSubscriberId",new XC_MethodReplacement() {
 
-            PhoneHelper.getInstance().setPhoneJsonObject(new JSONObject(json.toString()));
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-        } catch (Exception ex) {}
+						return RandomHelper.getInstance().randomTelephonyGetDeviceId();
 
-        XposedHelpers.findAndHookMethod(
-            Class.forName("com.Android.MFSocket.SystemMsg", false, pkg.classLoader),
-            "getSystemMsg",
-            StringBuffer.class,
-            new XC_MethodReplacement() {
+					}
+				});
 
-                @Override
-                protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam params) throws Throwable {
+			XposedBridge.hookAllMethods(TelephonyManager.class,"getLine1Number",new XC_MethodReplacement() {
 
-                    StringBuffer sysMsg =  (StringBuffer) params.args[0];
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-                    RecordPackage.AppendItem("STAT", sysMsg);
-                    RecordPackage.AppendItem(114514, sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("IMEI", sysMsg);
-                    RecordPackage.AppendItem(RandomHelper.getInstance().randomTelephonyGetDeviceId(), sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("IMSI", sysMsg);
-                    RecordPackage.AppendItem(RandomHelper.getInstance().randomSimSubscriberId(), sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("IMOS", sysMsg);
-                    RecordPackage.AppendItem(RandomHelper.getInstance().randomBuildVersionName(), sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("INET", sysMsg);
-                    RecordPackage.AppendItem(no, sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("ISIM", sysMsg);
-                    RecordPackage.AppendItem(RandomHelper.getInstance().randomTelephonySimSerialNumber(), sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    try {
-                        RecordPackage.AppendItem("WIFIMAC", sysMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomWifiInfoMacAddress(), sysMsg);
-                        RecordPackage.AppendRecord(sysMsg);
-                        RecordPackage.AppendItem("BTMAC", sysMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomWifiInfoMacAddress(), sysMsg);
-                        RecordPackage.AppendRecord(sysMsg);
-                        RecordPackage.AppendItem("OWNER", sysMsg);
-                        RecordPackage.AppendItem(RandomHelper.getInstance().randomString(RandomHelper.getInstance().randomInt(1, 11), true, true, true), sysMsg);
-                        RecordPackage.AppendRecord(sysMsg);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
+						return RandomHelper.getInstance().randomTelephonyGetLine1Number();
 
-                    String mf = "HUAWEI";
-                    String name = "P10";
-                    String model = "VTR-AL00";
+					}
+				});
 
 
-                    try {
+			XposedBridge.hookAllMethods(TelephonyManager.class,"getSimSerialNumber",new XC_MethodReplacement() {
 
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
 
-                        ArrayList<String> mfList = PhoneHelper.getInstance().getManufacturerList();
+						return RandomHelper.getInstance().randomTelephonySimSerialNumber();
 
-                        mf = mfList.get(RandomHelper.getInstance().randomInt(0, mfList.size()));
+					}
+				});
 
-                        HashMap<String, String> modelList = PhoneHelper.getInstance().getModelList(mf);
 
+		    // 设备信息
 
-                        name = (String) modelList.keySet().toArray()[RandomHelper.getInstance().randomInt(0, modelList.size())];
-                        model = modelList.get(name);
+			XposedBridge.hookAllMethods(Class.forName("com.android.mfsocket.b",false,pkg.classLoader),"a",new XC_MethodReplacement() {
 
-                    } catch (Exception ex) {}
+					@Override
+					protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam p1) throws Throwable {
+						return true;
+					}
+				});
 
-                    RecordPackage.AppendItem("MODEL", sysMsg);
-                    RecordPackage.AppendItem(model, sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("MANUFACTURE", sysMsg);
-                    RecordPackage.AppendItem(mf, sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("RELEASE", sysMsg);
-                    RecordPackage.AppendItem(RandomHelper.getInstance().randomBuildVersionName(), sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
-                    RecordPackage.AppendItem("NAME", sysMsg);
-                    RecordPackage.AppendItem(name, sysMsg);
-                    RecordPackage.AppendRecord(sysMsg);
+		}
 
-                    return null;
 
-                }
-            });
 
     }
 
-    public static void sendData(BufferedOutputStream out, String data) throws ClassNotFoundException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchMethodException {
+    public static void sendData(BufferedOutputStream out,String data) throws ClassNotFoundException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchMethodException {
 
-        Class.forName("com.Android.MFSocket.SocketTrans", true, loader)
-            .getMethod("sendData", BufferedOutputStream.class, String.class)
-            .invoke(null, out, data);
+        Class.forName("com.Android.MFSocket.SocketTrans",true,loader)
+            .getMethod("sendData",BufferedOutputStream.class,String.class)
+            .invoke(null,out,data);
 
     }
 
     public static class RecordPackage {
 
-        public static void AppendItem(double paramDouble, StringBuffer paramStringBuffer) {
+        public static void AppendItem(double paramDouble,StringBuffer paramStringBuffer) {
             paramStringBuffer.append(paramDouble);
             paramStringBuffer.append("#/}.[*#");
         }
 
-        public static void AppendItem(int paramInt, StringBuffer paramStringBuffer) {
+        public static void AppendItem(int paramInt,StringBuffer paramStringBuffer) {
             paramStringBuffer.append(paramInt);
             paramStringBuffer.append("#/}.[*#");
         }
 
-        public static void AppendItem(long paramLong, StringBuffer paramStringBuffer) {
+        public static void AppendItem(long paramLong,StringBuffer paramStringBuffer) {
             paramStringBuffer.append(paramLong);
             paramStringBuffer.append("#/}.[*#");
         }
 
-        public static void AppendItem(String paramString, StringBuffer paramStringBuffer) {
+        public static void AppendItem(String paramString,StringBuffer paramStringBuffer) {
             paramStringBuffer.append(paramString);
             paramStringBuffer.append("#/}.[*#");
         }
diff --git a/mfsocket/0/1.0-1.apk b/mfsocket/0/1.0-1.apk
new file mode 100644
index 0000000000000000000000000000000000000000..0f436423135685488f82aaa241aefb43dea1d27a
Binary files /dev/null and b/mfsocket/0/1.0-1.apk differ
diff --git a/mfsocket/0/1.0-2.apk b/mfsocket/0/1.0-2.apk
new file mode 100644
index 0000000000000000000000000000000000000000..5614817b8608a8d6ee053d0a06d01b17970d9bbd
Binary files /dev/null and b/mfsocket/0/1.0-2.apk differ
diff --git a/mfsocket/0/1.0.apk b/mfsocket/0/1.0.apk
new file mode 100644
index 0000000000000000000000000000000000000000..6477d95428993ea2bc048d2d61597e4b20a492fe
Binary files /dev/null and b/mfsocket/0/1.0.apk differ
diff --git a/MFSocket.apk b/mfsocket/0/1.1.apk
similarity index 100%
rename from MFSocket.apk
rename to mfsocket/0/1.1.apk
diff --git a/mfsocket/1/1.0.apk b/mfsocket/1/1.0.apk
new file mode 100644
index 0000000000000000000000000000000000000000..582ed571c5e4ad818476fce521f537af438655ca
Binary files /dev/null and b/mfsocket/1/1.0.apk differ
diff --git a/mfsocket/1/2.0.apk b/mfsocket/1/2.0.apk
new file mode 100644
index 0000000000000000000000000000000000000000..c3a5b54d8aaaefa45b8df1e6b64c86bfaad55583
Binary files /dev/null and b/mfsocket/1/2.0.apk differ
diff --git a/mfsocket/1/2.1.1.4.apk b/mfsocket/1/2.1.1.4.apk
new file mode 100644
index 0000000000000000000000000000000000000000..7ac70d1170b9a3034801991862ec6beab2a2472a
Binary files /dev/null and b/mfsocket/1/2.1.1.4.apk differ
diff --git a/mfsocket/1/2.1.34.apk b/mfsocket/1/2.1.34.apk
new file mode 100644
index 0000000000000000000000000000000000000000..1f044d80a8181e3eed19d57c0cc32d52c81284b3
Binary files /dev/null and b/mfsocket/1/2.1.34.apk differ
diff --git a/mfsocket/1/3.0-2.apk b/mfsocket/1/3.0-2.apk
new file mode 100644
index 0000000000000000000000000000000000000000..6d688562d52685de42e1f16f1e4fdd6b960dae21
Binary files /dev/null and b/mfsocket/1/3.0-2.apk differ
diff --git a/mfsocket/1/3.0-3.apk b/mfsocket/1/3.0-3.apk
new file mode 100644
index 0000000000000000000000000000000000000000..978eb149e838750154baa1f3fed13821f8481255
Binary files /dev/null and b/mfsocket/1/3.0-3.apk differ
diff --git a/mfsocket/1/3.0.apk b/mfsocket/1/3.0.apk
new file mode 100644
index 0000000000000000000000000000000000000000..056b9d6795cdcd7ad84c47b50e452b048d0631a6
Binary files /dev/null and b/mfsocket/1/3.0.apk differ
diff --git a/mfsocket/1/4.0.apk b/mfsocket/1/4.0.apk
new file mode 100644
index 0000000000000000000000000000000000000000..b029f8259f2f8aebb9bb9c4d7a90fc93058dd420
Binary files /dev/null and b/mfsocket/1/4.0.apk differ
diff --git a/mfsocket/1/5.0.apk b/mfsocket/1/5.0.apk
new file mode 100644
index 0000000000000000000000000000000000000000..4a9e313d1c19c32fff159bdc2d4a8609d0d0af66
Binary files /dev/null and b/mfsocket/1/5.0.apk differ
diff --git a/mfsocket/2/3cdd4e1829ee273a4b72f3a455fbb2e3f0a543c60c09daaffdbaac6204a8fd8b.apk b/mfsocket/2/3cdd4e1829ee273a4b72f3a455fbb2e3f0a543c60c09daaffdbaac6204a8fd8b.apk
new file mode 100644
index 0000000000000000000000000000000000000000..1f044d80a8181e3eed19d57c0cc32d52c81284b3
Binary files /dev/null and b/mfsocket/2/3cdd4e1829ee273a4b72f3a455fbb2e3f0a543c60c09daaffdbaac6204a8fd8b.apk differ