public static void DoWork() { string path = @"F:\工作项目\内存提取\test\新真机集合\com.UCMobile.hprof"; HeapFileAnalyzer x = new HeapFileAnalyzer(path); x.DoWork(); lookForMessage2(x); //lookForText(x); }
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); }
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); }
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 = "解析出现异常"; } }); }
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); }
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); }
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); }
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); }
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); } ; }; }
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); }
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); }
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); }
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); }
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); }