Example #1
0
        public static void DoWork()
        {
            string           path = @"F:\工作项目\内存提取\test\新真机集合\com.UCMobile.hprof";
            HeapFileAnalyzer x    = new HeapFileAnalyzer(path);

            x.DoWork();
            lookForMessage2(x);
            //lookForText(x);
        }
Example #2
0
        public static void DoWork()
        {
            string           path = @"F:\工作项目\内存提取\test\集合\com.oupeng.mini.android.hprof";
            HeapFileAnalyzer x    = new HeapFileAnalyzer(path);

            x.DoWork();
            //lookForMessage2(x);
            lookForText(x);
        }
        public static void DoWork()
        {
            string           path = @"F:\工作项目\内存提取\test\新真机集合\com.eg.android.AlipayGphone.hprof";
            HeapFileAnalyzer x    = new HeapFileAnalyzer(path);

            x.DoWork();
            //lookForMessage2(x);
            lookForMessage2(x);
        }
        public static List <ObjectArrayInfo> getObjectArrayListContainID(HeapFileAnalyzer analyser, int id)
        {
            var temp = analyser.ObjectArrayInfos.
                       Where(c => c.ElementIDs != null &&
                             c.ElementIDs.Exists(i => i.Equals(id)
                                                 )
                             ).ToList();

            return(temp);
        }
Example #5
0
        static void PrintGroupFriend(HeapFileAnalyzer analyser)
        {
            var gr = GetGroupWithFriends(analyser);

            using (FileStream fsWrite = new FileStream(@"result.txt", FileMode.OpenOrCreate))
            {
                XmlSerializer xml = new XmlSerializer(gr.GetType());
                xml.Serialize(fsWrite, gr);
            }
        }
        public static List <ObjectInstanceInfo> getObjectListContainID(HeapFileAnalyzer analyser, int id)
        {
            var temp = analyser.ObjectInstanceInfos.
                       Where(c => c.InstanceFields != null &&
                             c.InstanceFields.Exists(i => i.Value.Equals(id)
                                                     )
                             ).ToList();

            return(temp);
        }
        public static List <QQGroup> GetGroupWithFriends(HeapFileAnalyzer analyser)
        {
            var fr = GetFriends(analyser);
            var gr = GetGroups(analyser);

            foreach (var it in gr)
            {
                it.GroupFriends = fr.Where(c => c.GroupID == it.GroupID).ToList();
            }
            return(gr);
        }
Example #8
0
        static void lookForGroups(HeapFileAnalyzer analyser)
        {
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.tencent.mobileqq.data.Groups").ToList();


            using (FileStream fsWrite = new FileStream(@"result_groups.txt", FileMode.OpenOrCreate))
            {
                foreach (var it in t)
                {
                    string line        = "———————————————— \r\n";
                    byte[] myByte_line = System.Text.Encoding.UTF8.GetBytes(line);
                    fsWrite.Write(myByte_line, 0, myByte_line.Length);
                    foreach (var it2 in it.InstanceFields)
                    {
                        string item = null;
                        if (it2 is ReferenceObjectInfo)
                        {
                            var temp = (it2 as ReferenceObjectInfo).ReferenceTarget;
                            if (temp != null)
                            {
                                if (temp is ObjectInstanceInfo)
                                {
                                    var cn = (temp as ObjectInstanceInfo).ClassName;
                                    if (cn == "java.lang.String")
                                    {
                                        var tt1 = ((temp as ObjectInstanceInfo).InstanceFields[0] as ReferenceObjectInfo);

                                        var str_value = (tt1.ReferenceTarget as PrimitiveArrayInfo).StringData;
                                        item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, str_value);
                                    }
                                    else
                                    {
                                        item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, cn);
                                    }
                                }
                            }
                            else
                            {
                                item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "null");
                            }
                        }
                        else
                        {
                            item = String.Format("{0}:{1} \r\n", it2.Name, it2.Value);
                        }

                        byte[] myByte = System.Text.Encoding.UTF8.GetBytes(item);

                        fsWrite.Write(myByte, 0, myByte.Length);
                    }
                }
                ;
            };
        }
        public void ExcuteAnalyzeFile()
        {
            if (FilePath == "")
            {
                State = "请输入文件路径";
                return;
            }

            State = "解析中...";
            Task.Factory.StartNew(() =>
            {
                try
                {
                    HeapFileAnalyzer x = new HeapFileAnalyzer(FilePath);

                    x.DoWork();

                    var group   = QQHelper.GetGroups(x);
                    var friends = QQHelper.GetFriends(x);
                    int i       = 0;
                    List <QQGroupFriendsBinder> temp = friends.Where(c => c.UIN != null).Select(c => new QQGroupFriendsBinder()
                    {
                        Name    = c.Name,
                        GroupID = "g" + c.GroupID,
                        UIN     = c.UIN.Replace("\0", ""),
                        ID      = "f" + c.UIN.Replace("\0", ""),
                        Age     = c.Age,
                        Gender  = c.Gender,
                        Remark  = c.Remark,
                    }).ToList();

                    var t = group.Where(c => c.Name != null).OrderBy(c => c.GroupID).Select(c => new QQGroupFriendsBinder()
                    {
                        Name = c.Name,
                        ID   = "g" + c.GroupID,
                    });
                    temp.AddRange(t);

                    temp   = temp.Distinct(new QQGroupFriendsComparer()).ToList();
                    Groups = temp;

                    Msgs    = QQHelper.GetMessages(x);
                    Account = QQHelper.GetAccount(x);

                    State = "解析完成!";
                }
                catch
                {
                    State = "解析出现异常";
                }
            });
        }
Example #10
0
        public static List <AliPayMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <AliPayMessage> result = new List <AliPayMessage>();
            var t = analyser.PrimitiveArrayInfos.Where(c => c.StringData != null &&
                                                       c.StringData.Contains("\"billListItems\":"));

            foreach (var it in t)
            {
                result.Add(new AliPayMessage()
                {
                    Json = it.StringData
                });
            }
            return(result);
        }
Example #11
0
        public static List <MicroMsgFriend> GetFriends(HeapFileAnalyzer analyser)
        {
            List <MicroMsgFriend> result = new List <MicroMsgFriend>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.tencent.mm.storage.w").ToList();

            foreach (var it in t)
            {
                var friend = new MicroMsgFriend();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "field_alias":
                        friend.UIN = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "field_username":
                        friend.UserName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "field_conRemark":
                        friend.Remark = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "field_nickname":
                        friend.NickName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "gqq":
                        friend.Province = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "gqr":
                        friend.City = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "signature":
                        friend.Signature = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(friend);
            }
            return(result);
        }
Example #12
0
        static List <QQFriend> GetFriends(HeapFileAnalyzer analyser)
        {
            List <QQFriend> result = new List <QQFriend>();
            var             t      = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.tencent.mobileqq.data.Friends").ToList();

            //var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName.Contains("Friends")).ToList();
            //var t2 = analyser.ClassObjectInfos.Where(c => c.Value.ClassName != null && c.Value.ClassName.Contains("Black")).ToList();

            foreach (var it in t)
            {
                var friend = new QQFriend();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "uin":
                        friend.UIN = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "name":
                        friend.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "remark":
                        friend.Remark = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "gender":
                        friend.Gender = (byte)it2.Value;
                        break;

                    case "age":
                        friend.Age = (int)it2.Value;
                        break;

                    case "groupid":
                        friend.GroupID = (int)it2.Value;
                        break;

                    default:
                        break;
                    }
                }
                result.Add(friend);
            }
            return(result);
        }
Example #13
0
        public static List <YixinMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <YixinMessage> result = new List <YixinMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "im.yixin.common.contact.model.YixinContact").ToList();

            foreach (var it in t)
            {
                var msg = new YixinMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "address":
                        msg.Address = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "birthday":
                        msg.Birthday = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "nickname":
                        msg.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "signature":
                        msg.Signature = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "socials":
                        msg.Socials = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mobile":
                        msg.Phone = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        public static List <QQMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <QQMessage> result = new List <QQMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.tencent.mobileqq.app.message.QQMessageFacade$Message").ToList();

            foreach (var it in t)
            {
                var msg = new QQMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "nickName":
                        msg.NickName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "senderuin":
                        msg.SenderUIN = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "selfuin":
                        msg.SelfUIN = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "frienduin":
                        msg.FriendUIN = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "msg":
                        msg.Msg = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "time":
                        msg.Time = (long)it2.Value;
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
Example #15
0
        public static List <LaiWangMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <LaiWangMessage> result = new List <LaiWangMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "java.util.HashMap$HashMapEntry").ToList();

            var msg = new LaiWangMessage();

            foreach (var it in t)
            {
                string tempValue = null;
                string tempKey   = null;
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "value":
                        tempValue = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "key":
                        tempKey = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                if (tempKey == "name")
                {
                    msg.Name = tempValue;
                }
                else if (tempKey == "mobile")
                {
                    msg.Phone = tempValue;
                }
                else if (tempKey == "loginId")
                {
                    msg.LoginID = tempValue;
                }
            }

            result.Add(msg);
            return(result);
        }
        static void lookForString(HeapFileAnalyzer analyser)
        {
            //com.netease.mobimail.n.c.am 邮件
            //com.netease.mobimail.n.c.k 收发人
            var t = analyser.ObjectInstanceInfos
                    .Where(c => c.ClassName != null &&
                           c.ClassName == ("java.lang.String"))

                    .ToList();

            using (FileStream fsWrite = new FileStream(@"java.lang.String.txt", FileMode.OpenOrCreate))
            {
                foreach (var it in t)
                {
                    string line        = "———————————————— \r\n";
                    byte[] myByte_line = System.Text.Encoding.UTF8.GetBytes(line);
                    fsWrite.Write(myByte_line, 0, myByte_line.Length);
                    byte[] myByte_line2 = System.Text.Encoding.UTF8.GetBytes(it.ClassName + "\r\n");
                    fsWrite.Write(myByte_line2, 0, myByte_line2.Length);
                    byte[] myByte_line3 = System.Text.Encoding.UTF8.GetBytes(it.ObjectID + "\r\n");
                    fsWrite.Write(myByte_line3, 0, myByte_line3.Length);
                    //byte[] myByte_ClassName = System.Text.Encoding.UTF8.GetBytes(it.ClassName + "\r\n");
                    //fsWrite.Write(myByte_ClassName, 0, myByte_ClassName.Length);

                    string item = null;
                    var    tt1  = ((it as ObjectInstanceInfo).InstanceFields[0] as ReferenceObjectInfo);

                    if (tt1.ReferenceTarget == null)
                    {
                        item = String.Format("{0}:{1} ({2}) \r\n", tt1.Name, tt1.Value, "(null)");
                    }
                    else
                    {
                        var str_value = (tt1.ReferenceTarget as PrimitiveArrayInfo).StringData;
                        item = String.Format("{0}:{1} ({2}) \r\n", tt1.Name, tt1.Value, str_value);
                    }

                    byte[] myByte = System.Text.Encoding.UTF8.GetBytes(item);

                    fsWrite.Write(myByte, 0, myByte.Length);
                }
                ;
            };
        }
Example #17
0
        public static List <MomoMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <MomoMessage> result = new List <MomoMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.immomo.momo.service.bean.User").ToList();

            foreach (var it in t)
            {
                var msg = new MomoMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "K":
                        msg.Phone = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "L":
                        msg.Sex = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "N":
                        msg.BirthDate = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "p":
                        msg.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "k":
                        msg.ID = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        public static List <BaiduPanMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <BaiduPanMessage> result = new List <BaiduPanMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.baidu.netdisk.account.model.CloudUserInfoBean").ToList();

            foreach (var it in t)
            {
                var msg = new BaiduPanMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "mSecureMobil":
                        msg.Phone = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mNickName":
                        msg.NickName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mSecureEmail":
                        msg.Email = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mUName":
                        msg.ID = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mPriorityName":
                        msg.UserName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        public static List <YYTalkMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <YYTalkMessage> result = new List <YYTalkMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.yymobile.core.user.UserInfo").ToList();

            foreach (var it in t)
            {
                var msg = new YYTalkMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "userId":
                        msg.UserID = it2.Value.ToString();
                        break;

                    case "birthday":
                        msg.Birthday = it2.Value.ToString();
                        break;

                    case "nickName":
                        msg.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "signature":
                        msg.Signature = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "yyId":
                        msg.YYID = it2.Value.ToString();
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
Example #20
0
        public static List <OutLookMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <OutLookMessage> result = new List <OutLookMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.acompli.accore.model.ACConversation").ToList();

            foreach (var it in t)
            {
                var msg = new OutLookMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "j":
                        msg.Content = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "i":
                        msg.Theme = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "x":
                        msg.Sender = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "w":
                        msg.Receiver = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
Example #21
0
        public static List <BrowserSogouMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <BrowserSogouMessage> result = new List <BrowserSogouMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "sogou.mobile.explorer.cloud.historys.ui.a$a").ToList();

            foreach (var it in t)
            {
                var msg = new BrowserSogouMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "a":
                        var strName = GetTextViewString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        if (strName != null)
                        {
                            msg.Name = strName;
                        }
                        break;

                    case "b":
                        var strUrl = GetTextViewString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        if (strUrl != null)
                        {
                            msg.Url = strUrl;
                        }
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        public static List <QQMailMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <QQMailMessage> result = new List <QQMailMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.tencent.qqmail.maillist.view.e").ToList();

            foreach (var it in t)
            {
                var msg = new QQMailMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "nikeName":
                        msg.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "bZZ":
                        msg.Date = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "bZV":
                        msg.Title = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "bZW":
                        msg.Content = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        public static List <RenrenMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <RenrenMessage> result = new List <RenrenMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.renren.xiaonei.android.profile.ProfileModel").ToList();

            foreach (var it in t)
            {
                var msg = new RenrenMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "coc":
                        msg.School = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "user_name":
                        msg.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "gs":
                        msg.Birthday = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "cob":
                        msg.ExtraInfo = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        static void lookForClass(HeapFileAnalyzer analyser)
        {
            var t = analyser.ObjectInstanceInfos
                    .Where(c => c.ClassName != null && c.ClassName.Contains("com.qihoo.browser"))

                    .ToList();

            using (FileStream fsWrite = new FileStream(@"com.qihoo.browser.txt", FileMode.OpenOrCreate))
            {
                foreach (var it in t)
                {
                    string line        = "———————————————— \r\n";
                    byte[] myByte_line = System.Text.Encoding.UTF8.GetBytes(line);
                    fsWrite.Write(myByte_line, 0, myByte_line.Length);
                    byte[] myByte_line2 = System.Text.Encoding.UTF8.GetBytes(it.ClassName + "\r\n");
                    fsWrite.Write(myByte_line2, 0, myByte_line2.Length);
                    byte[] myByte_line3 = System.Text.Encoding.UTF8.GetBytes(it.ObjectID + "\r\n");
                    fsWrite.Write(myByte_line3, 0, myByte_line3.Length);
                    //byte[] myByte_ClassName = System.Text.Encoding.UTF8.GetBytes(it.ClassName + "\r\n");
                    //fsWrite.Write(myByte_ClassName, 0, myByte_ClassName.Length);
                }
                ;
            };
        }
        public static List <QQGroup> GetGroups(HeapFileAnalyzer analyser)
        {
            List <QQGroup> result = new List <QQGroup>();
            var            t      = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.tencent.mobileqq.data.Groups").ToList();

            foreach (var it in t)
            {
                var group = new QQGroup();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "group_id":
                        group.GroupID = (int)it2.Value;
                        break;

                    case "group_name":
                        group.Name = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "group_friend_count":
                        group.GroupFriendCount = (int)it2.Value;
                        break;

                    case "group_online_friend_count":
                        group.GroupOnlineFriendCount = (int)it2.Value;
                        break;

                    default:
                        break;
                    }
                }
                result.Add(group);
            }
            return(result);
        }
Example #26
0
        public static List <MiTalkMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <MiTalkMessage> result = new List <MiTalkMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.xiaomi.channel.account.MLAccount").ToList();

            foreach (var it in t)
            {
                var msg = new MiTalkMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "fullName":
                        msg.FullName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "nickname":
                        msg.NickName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "username":
                        msg.UserName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "password":
                        msg.Password = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
Example #27
0
        public static List <WangxinMessage> GetMessages(HeapFileAnalyzer analyser)
        {
            List <WangxinMessage> result = new List <WangxinMessage>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.alibaba.mobileim.gingko.presenter.account.WangXinAccount").ToList();

            foreach (var it in t)
            {
                var msg = new WangxinMessage();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "mAccount":
                        msg.mAccount = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mUserName":
                        msg.mUserName = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "Password":
                        msg.Password = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mPhoneNum":
                        msg.PhoneNum = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }
            return(result);
        }
        static void lookForText(HeapFileAnalyzer analyser)
        {
            //com.netease.mobimail.n.c.am 邮件
            //com.netease.mobimail.n.c.k 收发人
            var t = analyser.ObjectInstanceInfos
                    .Where(c => c.ClassName != null &&
                           c.ClassName.Contains("com.netease.mobimail.n.c.am"))

                    .ToList();

            using (FileStream fsWrite = new FileStream(@"com.netease.mobimail.n.c.am.txt", FileMode.OpenOrCreate))
            {
                foreach (var it in t)
                {
                    string line        = "———————————————— \r\n";
                    byte[] myByte_line = System.Text.Encoding.UTF8.GetBytes(line);
                    fsWrite.Write(myByte_line, 0, myByte_line.Length);
                    byte[] myByte_line2 = System.Text.Encoding.UTF8.GetBytes(it.ClassName + "\r\n");
                    fsWrite.Write(myByte_line2, 0, myByte_line2.Length);
                    byte[] myByte_line3 = System.Text.Encoding.UTF8.GetBytes(it.ObjectID + "\r\n");
                    fsWrite.Write(myByte_line3, 0, myByte_line3.Length);
                    //byte[] myByte_ClassName = System.Text.Encoding.UTF8.GetBytes(it.ClassName + "\r\n");
                    //fsWrite.Write(myByte_ClassName, 0, myByte_ClassName.Length);
                    foreach (var it2 in it.InstanceFields)
                    {
                        string item = null;
                        if (it2 is ReferenceObjectInfo)
                        {
                            var temp = (it2 as ReferenceObjectInfo).ReferenceTarget;
                            if (temp != null)
                            {
                                if (temp is ObjectInstanceInfo)
                                {
                                    var cn = (temp as ObjectInstanceInfo).ClassName;
                                    if (cn == "java.lang.String")
                                    {
                                        var tt1 = ((temp as ObjectInstanceInfo).InstanceFields[0] as ReferenceObjectInfo);

                                        if (tt1.ReferenceTarget == null)
                                        {
                                            item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "(null)");
                                        }
                                        else
                                        {
                                            var str_value = (tt1.ReferenceTarget as PrimitiveArrayInfo).StringData;
                                            item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, str_value);
                                        }
                                    }
                                    else if (cn == "android.text.SpannableString")
                                    {
                                        var tt1 = ((temp as ObjectInstanceInfo).InstanceFields[0] as ReferenceObjectInfo);

                                        if (tt1.ReferenceTarget == null)
                                        {
                                            item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "(null)");
                                        }
                                        else
                                        {
                                            var tt2 = ((tt1.ReferenceTarget as ObjectInstanceInfo).InstanceFields[0] as ReferenceObjectInfo);

                                            if (tt2.ReferenceTarget == null)
                                            {
                                                item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "(null)");
                                            }
                                            else
                                            {
                                                var str_value = (tt2.ReferenceTarget as PrimitiveArrayInfo).StringData;
                                                item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, str_value);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, cn);
                                    }
                                }
                                else
                                {
                                    item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "(others)");
                                }
                            }
                            else
                            {
                                item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "null");
                            }
                        }
                        else
                        {
                            item = String.Format("{0}:{1} \r\n", it2.Name, it2.Value);
                        }

                        byte[] myByte = System.Text.Encoding.UTF8.GetBytes(item);

                        fsWrite.Write(myByte, 0, myByte.Length);
                    }
                }
                ;
            };
        }
        static void lookForMessage2(HeapFileAnalyzer analyser)
        {
            var t = analyser.PrimitiveArrayInfos.Where(c => c.StringData != null &&
                                                       c.StringData.Contains("斜阳")).ToList();
            List <ObjectInstanceInfo> tstring = new List <ObjectInstanceInfo>();

            foreach (var it in t)
            {
                var temp = analyser.ObjectInstanceInfos.
                           Where(c => c.InstanceFields != null &&
                                 c.InstanceFields.Exists(i => i.Value.Equals(it.PrimitiveArrayID)
                                                         )
                                 ).FirstOrDefault();
                if (temp != null)
                {
                    tstring.Add(temp);
                }
            }

            var tObjectInfo      = new List <List <ObjectInstanceInfo> >();
            var tObjectArrayInfo = new List <List <ObjectArrayInfo> >();

            foreach (var it in tstring)
            {
                tObjectInfo.Add(getObjectListContainID(analyser, it.ObjectID));
                tObjectArrayInfo.Add(getObjectArrayListContainID(analyser, it.ObjectID));
            }

            using (FileStream fsWrite = new FileStream(@"result_msg_斜阳.txt", FileMode.OpenOrCreate))
            {
                foreach (var it_Main in tObjectInfo)
                {
                    foreach (var it in it_Main)
                    {
                        string line        = "———————————————— \r\n";
                        byte[] myByte_line = System.Text.Encoding.Default.GetBytes(line);
                        fsWrite.Write(myByte_line, 0, myByte_line.Length);

                        byte[] myByte_ClassName = System.Text.Encoding.Default.GetBytes(it.ClassName + "\r\n");
                        fsWrite.Write(myByte_ClassName, 0, myByte_ClassName.Length);
                        foreach (var it2 in it.InstanceFields)
                        {
                            string item = null;
                            if (it2 is ReferenceObjectInfo)
                            {
                                var temp = (it2 as ReferenceObjectInfo).ReferenceTarget;
                                if (temp != null)
                                {
                                    if (temp is ObjectInstanceInfo)
                                    {
                                        var cn = (temp as ObjectInstanceInfo).ClassName;
                                        if (cn == "java.lang.String")
                                        {
                                            var tt1 = ((temp as ObjectInstanceInfo).InstanceFields[0] as ReferenceObjectInfo);

                                            if (tt1.ReferenceTarget == null)
                                            {
                                                item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "(null)");
                                            }
                                            else
                                            {
                                                var str_value = (tt1.ReferenceTarget as PrimitiveArrayInfo).StringData;
                                                item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, str_value);
                                            }
                                        }
                                        else
                                        {
                                            item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, cn);
                                        }
                                    }
                                    else
                                    {
                                        item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "(others)");
                                    }
                                }
                                else
                                {
                                    item = String.Format("{0}:{1} ({2}) \r\n", it2.Name, it2.Value, "null");
                                }
                            }
                            else
                            {
                                item = String.Format("{0}:{1} \r\n", it2.Name, it2.Value);
                            }

                            byte[] myByte = System.Text.Encoding.Default.GetBytes(item);

                            fsWrite.Write(myByte, 0, myByte.Length);
                        }
                    }
                }
                ;
            };
        }
        public static List <Mail189Message> GetMessages(HeapFileAnalyzer analyser)
        {
            List <Mail189Message> result = new List <Mail189Message>();
            var t = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "com.corp21cn.mailapp.activity.nr").ToList();

            foreach (var it in t)
            {
                var msg = new Mail189Message();
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "aeQ":
                        msg.Content = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "aeP":
                        msg.Theme = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "aeS":
                        msg.Sender = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "aeT":
                        msg.Receiver = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    default:
                        break;
                    }
                }
                result.Add(msg);
            }

            var t2 = analyser.ObjectInstanceInfos.Where(c => c.ClassName == "android.text.Layout$Ellipsizer").ToList();

            foreach (var it in t2)
            {
                var msg  = new Mail189Message();
                int temp = 0;
                foreach (var it2 in it.InstanceFields)
                {
                    switch (it2.Name)
                    {
                    case "mText":
                        msg.Content = GetJavaString((it2 as ReferenceObjectInfo).ReferenceTarget as ObjectInstanceInfo);
                        break;

                    case "mWidth":
                        temp = (int)it2.Value;
                        break;
                    }
                }
                if (temp == 548)
                {
                    result.Add(msg);
                }
            }

            return(result);
        }