破壳微信之旅

砸壳前期准备

一个越狱设备,一台Mac设备。 1、openssh
修改ssh -> congifure prot 修改ssh的密码

2、adv-cmds cycript 安装在越狱设备上

3、ssh root@192.168.1.8 (设备的IP)

4、ps -e | grep WeChat

1
2
3
4
5
6
Phone:~ root# 825 ??         0:08.66 /var/mobile/Applications/20EC6C4E-F75C-4FA5-8457-DFF4C2C4E9BC/WeChat.app/WeChat
Phone:~ root# 832 ttys000    0:00.01 grep WeChat
  Phone:~ root# cycript -p 825
  cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
  cy#"file:///var/mobile/Applications/20EC6C4E-F75C-4FA5-8457-DFF4C2C4E9BC/Documents/"
  DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/20EC6C4E-F75C-4FA5-8457-DFF4C2C4E9BC/WeChat.app/WeChat

5、砸开 class-dump –arch armv7 WeChat.decrypted -S -s -H -o /Users/Rick/Documents/ios/isere/WeChatHeader

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mach-o decryption dumper

DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.

[+] detected 32bit ARM binary in memory.
[+] offset to cryptid found: @0x15a4c(from 0x15000) = a4c
[+] Found encrypted data at address 00004000 of length 45400064 bytes - type 1.
[+] Opening /private/var/mobile/Applications/20EC6C4E-F75C-4FA5-8457-DFF4C2C4E9BC/WeChat.app/WeChat for reading.
[+] Reading header
[+] Detecting header type
[+] Executable is a FAT image - searching for right architecture
[+] Correct arch is at offset 16384 in the file
[+] Opening WeChat.decrypted for writing.
[+] Copying the not encrypted start of the file
[+] Dumping the decrypted data into the file
[+] Copying the not encrypted remainder of the file
[+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset 4a4c
[+] Closing original file
[+] Closing dump file

看到这些log就能看到砸开所有的文件,下面是我砸开的微信定义函数文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#import "NSObject.h"

@class NSMutableDictionary, NSRecursiveLock;

@interface MMServiceCenter : NSObject
{
    NSMutableDictionary * m_dicService;
    NSRecursiveLock * m_lock;
}

+ (id)defaultCenter;
- (void).cxx_destruct;
- (void)callClearData;
- (void)callEnterBackground;
- (void)callEnterForeground;
- (void)callReloadData;
- (void)callServiceMemoryWarning;
- (void)callTerminate;
- (void)dealloc;
- (id)getService:(Class)arg1;
- (id)init;
- (void)removeService:(Class)arg1;

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#import "CBaseContact.h"

#import "NSCoding.h"
#import "PBCoding.h"

@class ChatRoomData, ChatRoomDetail, NSArray, NSDictionary, NSString, SubscriptBrandInfo;

@interface CContact : CBaseContact <PBCoding, NSCoding>
{
    unsigned long m_uiChatRoomStatus;
    NSString *m_nsChatRoomMemList;
    unsigned long m_uiChatRoomAccessType;
    unsigned long m_uiChatRoomMaxCount;
    unsigned long m_uiChatRoomVersion;
    ChatRoomDetail *m_ChatRoomDetail;
    NSString *m_nsChatRoomData;
    ChatRoomData *m_ChatRoomData;
    NSString *m_nsCountry;
    NSString *m_nsProvince;
    NSString *m_nsCity;
    NSString *m_nsSignature;
    unsigned long m_uiCertificationFlag;
    NSString *m_nsCertificationInfo;
    NSString *m_nsOwner;
    NSString *m_nsFBNickName;
    NSString *m_nsFBID;
    unsigned long m_uiNeedUpdate;
    NSString *m_nsWCBGImgObjectID;
    int m_iWCFlag;
    NSString *m_pcWCBGImgID;
    NSString *m_nsExternalInfo;
    NSString *m_nsBrandSubscriptConfigUrl;
    unsigned long m_uiBrandSubscriptionSettings;
    SubscriptBrandInfo *m_subBrandInfo;
    NSString *m_nsBrandIconUrl;
    BOOL m_isExtInfoValid;
    NSDictionary *externalInfoJSONCache;
    BOOL m_isShowRedDot;
    NSString *m_nsMobileHash;
    NSString *m_nsMobileFullHash;
    NSString *m_nsLinkedInID;
    NSString *m_nsLinkedInName;
    NSString *m_nsLinkedInPublicUrl;
    unsigned long m_uiDeleteFlag;
    NSString *m_nsDescription;
    NSString *m_nsCardUrl;
    NSString *m_nsWorkID;
    NSString *m_nsLabelIDList;
    NSArray *m_arrPhoneItem;
    BOOL _m_bFromNewDB;
    NSString *m_nsWeiDianInfo;
    NSDictionary *_m_dicWeiDianInfo;
    unsigned long _m_uiLastUpdate;
    unsigned long _m_uiMetaFlag;
    unsigned long _m_uiDebugModeType;
    NSString *_m_nsAppId;
    unsigned long _m_uiWxAppOpt;
}

+ (void)HandleChatMemUsrImg:(struct tagMMModChatRoomMember *)arg1 Contatct:(id)arg2 DocPath:(id)arg3;
+ (void)HandleUsrImg:(struct tagMMModContact *)arg1 Contatct:(id)arg2 DocPath:(id)arg3;
+ (void)HandleUsrImgPB:(id)arg1 Contatct:(id)arg2 DocPath:(id)arg3;
+ (id)SubscriptedBrandsFromString:(id)arg1;
+ (id)genChatRoomName:(id)arg1;
+ (id)genChatRoomName:(id)arg1 appendTail:(BOOL)arg2;
+ (id)getChatRoomMember:(id)arg1;
+ (unsigned int)getChatRoomMemberCount:(id)arg1;
+ (id)getChatRoomMemberUserName:(id)arg1;
+ (id)getChatRoomMemberWithoutMyself:(id)arg1;
+ (id)getMicroBlogUsrDisplayName:(id)arg1;
+ (void)initialize;
+ (BOOL)isHeadImgUpdated:(id)arg1 Local:(id)arg2;
+ (BOOL)isWeAppUserName:(id)arg1;
+ (id)parseContactKey:(id)arg1;
- (void).cxx_destruct;
- (BOOL)IsAddFromLbs;
- (BOOL)IsAddFromShake;
- (BOOL)IsUserInChatRoom:(id)arg1;
- (id)bizMenuInfoFromContact;
- (id)brandPrivileges;
- (id)brandUrls;
- (BOOL)canSupportMessageNotify;
- (int)compareForFavourGroup:(id)arg1;
- (BOOL)containKFWorkerInfo;
- (BOOL)copyFieldFromContact:(id)arg1;
- (BOOL)copyPatialFieldFromContact:(id)arg1;
@property(readonly, copy) NSString *description;
- (void)encodeWithCoder:(id)arg1;
- (id)externalInfoJSONCache;
- (BOOL)genContactFromShareCardMsgWrap:(id)arg1;
- (void)genContactFromShareCardMsgWrapContent:(id)arg1;
- (id)getAppBrandInfo;
- (id)getAppBrandSologanImageURL;
- (id)getAppID;
- (int)getAudioPlayType;
- (id)getBrandBusinessScope;
- (int)getBrandContactType;
- (id)getBrandEvaluateCount;
- (id)getBrandMerchantRatings;
- (id)getBrandMerchantSecurity;
- (id)getBrandMerchantSecurityUrl;
- (id)getBrandRegisterSourceBody;
- (id)getBrandRegisterSourceIntroUrl;
- (id)getBrandTrademarkName;
- (id)getBrandTrademarkUrl;
- (id)getBrandVerifySourceDescription;
- (id)getBrandVerifySourceIntroUrl;
- (id)getBrandVerifySourceName;
- (unsigned long)getBrandVerifySourceType;
- (id)getBrandVerifySubTitle;
- (id)getChatRoomMemberDisplayName:(id)arg1;
- (id)getChatRoomMemberNickName:(id)arg1;
- (id)getChatRoomMembrGroupNickName:(id)arg1;
- (id)getChatRoomMembrGroupNickNameForSearch:(id)arg1;
- (unsigned long)getConferenceContactExpireTime;
- (id)getConferenceVerifyButtonTitle;
- (id)getConferenceVerifyPromptTitle;
- (int)getConnectorMsgType;
- (id)getCustomizeMenu;
- (id)getEnterpriseBrandFrozenWording;
- (id)getEnterpriseMainBrandUserName;
- (id)getEnterpriseSubBrandChatExtUrl;
- (unsigned long)getEnterpriseSubBrandChildType;
- (id)getEnterpriseSubBrandUrl;
- (id)getExternalInfoDictionary;
- (unsigned long)getFunctionFlag;
- (int)getInteractiveMode;
- (BOOL)getIsTrademarkProtection;
- (id)getLabelIDList;
- (id)getMainPageUrl;
- (id)getMobileDisplayName;
- (id)getMobileList;
- (id)getMobileNumString;
- (id)getNearFieldDesc;
- (id)getNewChatroomData;
- (id)getNormalContactDisplayDesc;
- (int)getReportLocationType;
- (int)getScanQRCodeType;
- (id)getSpecifyWorkerOpenID;
- (id)getSupportEmoticonLinkPrefix;
- (const map_18e36f99 *)getValueTagIndexMap;
- (id)getValueTypeTable;
- (id)getVerisonMD5;
- (id)getWeAppInfo;
- (BOOL)hasAppBrandInfo;
- (BOOL)hasMatchHashPhone;
- (BOOL)hasWeAppInfo;
- (BOOL)hasWeAppVersionInfo;
- (id)init;
- (id)initWithCoder:(id)arg1;
- (id)initWithModContact:(id)arg1;
- (id)initWithShareCardMsgWrap:(id)arg1;
- (id)initWithShareCardMsgWrapContent:(id)arg1;
- (BOOL)isAccountDeleted;
- (BOOL)isAdmin;
- (BOOL)isBrandContact;
- (BOOL)isChatStatusNotifyOpen;
- (BOOL)isChatroomNeedAccessVerify;
- (BOOL)isContactCanReceiveSpeexVoice;
- (BOOL)isContactFrozen;
- (BOOL)isContactSessionTop;
- (BOOL)isContactTypeShouldDelete;
- (BOOL)isEnterpriseBrand;
- (BOOL)isEnterpriseChatSubBrand;
- (BOOL)isEnterpriseDisableBrand;
- (BOOL)isEnterpriseMainBrand;
- (BOOL)isEnterpriseSubBrand;
- (BOOL)isEnterpriseWebSubBrand;
- (BOOL)isHardDeviceBrand;
- (BOOL)isHardDeviceHideSubtitle;
- (BOOL)isHardDeviceTestBrand;
- (BOOL)isHasMobile;
- (BOOL)isHasWeiDian;
- (BOOL)isHolderContact;
- (BOOL)isIgnoreBrandContat;
- (BOOL)isInternalMyDeviceBrand;
- (BOOL)isInternalSportBrand;
- (BOOL)isLocalizedContact;
- (BOOL)isMyContact;
- (BOOL)isOpenMainPage;
- (BOOL)isShowChatRoomDisplayName;
- (BOOL)isShowHeadImgInMsg;
- (BOOL)isShowLinkedIn;
- (BOOL)isShowToolBarInMsg;
- (BOOL)isSupportPublicWifi;
- (BOOL)isVerified;
- (BOOL)isVerifiedBrandContact;
- (BOOL)isWeAppContact;
@property(retain, nonatomic) ChatRoomData *m_ChatRoomData; // @synthesize m_ChatRoomData;
@property(retain, nonatomic) ChatRoomDetail *m_ChatRoomDetail; // @synthesize m_ChatRoomDetail;
@property(retain, nonatomic) NSArray *m_arrPhoneItem; // @synthesize m_arrPhoneItem;
@property(nonatomic) BOOL m_bFromNewDB; // @synthesize m_bFromNewDB=_m_bFromNewDB;
@property(readonly, nonatomic) NSDictionary *m_dicWeiDianInfo; // @synthesize m_dicWeiDianInfo=_m_dicWeiDianInfo;
@property(nonatomic) int m_iWCFlag; // @synthesize m_iWCFlag;
@property(nonatomic) BOOL m_isExtInfoValid; // @synthesize m_isExtInfoValid;
@property(nonatomic) BOOL m_isShowRedDot; // @synthesize m_isShowRedDot;
@property(copy, nonatomic) NSString *m_nsAppId; // @synthesize m_nsAppId=_m_nsAppId;
@property(retain, nonatomic) NSString *m_nsBrandIconUrl; // @synthesize m_nsBrandIconUrl;
@property(retain, nonatomic) NSString *m_nsBrandSubscriptConfigUrl; // @synthesize m_nsBrandSubscriptConfigUrl;
@property(retain, nonatomic) NSString *m_nsCardUrl; // @synthesize m_nsCardUrl;
@property(retain, nonatomic) NSString *m_nsCertificationInfo; // @synthesize m_nsCertificationInfo;
@property(retain, nonatomic) NSString *m_nsChatRoomData; // @synthesize m_nsChatRoomData;
@property(retain, nonatomic) NSString *m_nsChatRoomMemList; // @synthesize m_nsChatRoomMemList;
@property(retain, nonatomic) NSString *m_nsCity; // @synthesize m_nsCity;
@property(retain, nonatomic) NSString *m_nsCountry; // @synthesize m_nsCountry;
@property(retain, nonatomic) NSString *m_nsDescription; // @synthesize m_nsDescription;
@property(retain, nonatomic) NSString *m_nsExternalInfo; // @synthesize m_nsExternalInfo;
@property(retain, nonatomic) NSString *m_nsFBID; // @synthesize m_nsFBID;
@property(retain, nonatomic) NSString *m_nsFBNickName; // @synthesize m_nsFBNickName;
@property(retain, nonatomic) NSString *m_nsLabelIDList; // @synthesize m_nsLabelIDList;
@property(retain, nonatomic) NSString *m_nsLinkedInID; // @synthesize m_nsLinkedInID;
@property(retain, nonatomic) NSString *m_nsLinkedInName; // @synthesize m_nsLinkedInName;
@property(retain, nonatomic) NSString *m_nsLinkedInPublicUrl; // @synthesize m_nsLinkedInPublicUrl;
@property(retain, nonatomic) NSString *m_nsMobileFullHash; // @synthesize m_nsMobileFullHash;
@property(retain, nonatomic) NSString *m_nsMobileHash; // @synthesize m_nsMobileHash;
@property(retain, nonatomic) NSString *m_nsOwner; // @synthesize m_nsOwner;
@property(retain, nonatomic) NSString *m_nsProvince; // @synthesize m_nsProvince;
@property(retain, nonatomic) NSString *m_nsSignature; // @synthesize m_nsSignature;
@property(retain, nonatomic) NSString *m_nsWCBGImgObjectID; // @synthesize m_nsWCBGImgObjectID;
@property(retain, nonatomic) NSString *m_nsWeiDianInfo; // @synthesize m_nsWeiDianInfo;
@property(retain, nonatomic) NSString *m_nsWorkID; // @synthesize m_nsWorkID;
@property(retain, nonatomic) NSString *m_pcWCBGImgID; // @synthesize m_pcWCBGImgID;
@property(retain, nonatomic) SubscriptBrandInfo *m_subBrandInfo; // @synthesize m_subBrandInfo;
@property(nonatomic) unsigned long m_uiBrandSubscriptionSettings; // @synthesize m_uiBrandSubscriptionSettings;
@property(nonatomic) unsigned long m_uiCertificationFlag; // @synthesize m_uiCertificationFlag;
@property(nonatomic) unsigned long m_uiChatRoomAccessType; // @synthesize m_uiChatRoomAccessType;
@property(nonatomic) unsigned long m_uiChatRoomMaxCount; // @synthesize m_uiChatRoomMaxCount;
@property(nonatomic) unsigned long m_uiChatRoomStatus; // @synthesize m_uiChatRoomStatus;
@property(nonatomic) unsigned long m_uiChatRoomVersion; // @synthesize m_uiChatRoomVersion;
@property(nonatomic) unsigned long m_uiDebugModeType; // @synthesize m_uiDebugModeType=_m_uiDebugModeType;
@property(nonatomic) unsigned long m_uiDeleteFlag; // @synthesize m_uiDeleteFlag;
@property(nonatomic) unsigned long m_uiLastUpdate; // @synthesize m_uiLastUpdate=_m_uiLastUpdate;
@property(nonatomic) unsigned long m_uiMetaFlag; // @synthesize m_uiMetaFlag=_m_uiMetaFlag;
@property(nonatomic) unsigned long m_uiNeedUpdate; // @synthesize m_uiNeedUpdate;
@property(nonatomic) unsigned long m_uiWxAppOpt; // @synthesize m_uiWxAppOpt=_m_uiWxAppOpt;
- (BOOL)needShowUnreadCountOnSession;
- (void)setChatRoomDataWithoutEmojiChange:(id)arg1;
- (void)setChatStatusNotifyOpen:(BOOL)arg1;
- (void)setExternalInfoJSONCache:(id)arg1;
- (void)setSignatureWithoutEmojiChange:(id)arg1;
- (void)tryLoadExtInfo;
- (void)updateWithBizAttrChanged:(id)arg1;
- (id)xmlForMessageWrapContent;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly) unsigned int hash;
@property(readonly) Class superclass;

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#import "MMService.h"

#import "IAcctStorageMgrExt.h"
#import "IBrandAttrMgrExt.h"
#import "IContactProfileMgrExt.h"
#import "IMMLanguageMgrExt.h"
#import "MMService.h"
#import "MessageObserverDelegate.h"
#import "PBMessageObserverDelegate.h"

@class CContactDB, CContactOPLog, NSMutableDictionary, NSRecursiveLock, NSString, NewContactDB;

@interface CContactMgr : MMService <MMService, MessageObserverDelegate, IContactProfileMgrExt, PBMessageObserverDelegate, IAcctStorageMgrExt, IMMLanguageMgrExt, IBrandAttrMgrExt>
{
    NSRecursiveLock *m_oLock;
    unsigned long m_uiLoadedType;
    CContactDB *m_oContactDB;
    NewContactDB *m_oNewContactDB;
    CContactOPLog *m_oContactOPLog;
    NSRecursiveLock *m_oMainControllerLock;
    NSMutableDictionary *m_dicRemark;
    NSMutableDictionary *m_dicLastAccessTime;
    NSMutableDictionary *m_dicContacts;
    NSMutableDictionary *m_dicEncodeContacts;
    NSMutableDictionary *m_mapLastGetTime;
    NSMutableDictionary *m_dicHardCodeUsers;
    unsigned long m_uiDBVersion;
    BOOL m_shouldContactDBMigration;
    BOOL m_bContactDBMigrationFinished;
    unsigned long m_uiMaxStrangerCache;
    BOOL m_bOpenStrangerCache;
}

- (void).cxx_destruct;
- (BOOL)ChangeNotifyStatus:(id)arg1 withStatus:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)ChangeNotifyStatusForChatRoom:(id)arg1 withStatus:(BOOL)arg2 sync:(BOOL)arg3;
- (id)HandleMemContact:(id)arg1;
- (void)MainThread_ReloadMemContact:(id)arg1;
- (void)MessageReturn:(id)arg1 Event:(unsigned long)arg2;
- (void)MessageReturn:(unsigned long)arg1 MessageInfo:(id)arg2 Event:(unsigned long)arg3;
- (BOOL)ModifyNotifyStatus:(id)arg1 withStatus:(unsigned long)arg2;
- (BOOL)RemoveContactFromChatList:(id)arg1;
- (BOOL)SetFriendMetaFlag:(unsigned long)arg1 ForUser:(id)arg2;
- (BOOL)SetLastUpdateTime:(unsigned long)arg1 ForUser:(id)arg2;
- (void)addAddHardcodeContact:(id)arg1 selector:(SEL)arg2;
- (BOOL)addContact:(id)arg1 listType:(unsigned long)arg2;
- (BOOL)addContact:(id)arg1 listType:(unsigned long)arg2 opLog:(BOOL)arg3;
- (void)addContactInternal:(id)arg1;
- (BOOL)addContactToDb:(id)arg1;
- (void)addDictoryDataToCache:(id)arg1 listType:(unsigned long)arg2;
- (BOOL)addFromMobileContact:(id)arg1;
- (BOOL)addFromQQContact:(id)arg1;
- (void)addHardCodeContacts;
- (BOOL)addLocalContact:(id)arg1 listType:(unsigned long)arg2;
- (id)addOrUpdateContactToDB:(id)arg1 listType:(unsigned long)arg2 add:(char *)arg3 modify:(char *)arg4;
- (id)addSelfContactToCache;
- (void)addToGetContactMap:(id)arg1;
- (int)autoreloadContacts:(unsigned long)arg1;
- (int)autoreloadContacts:(unsigned long)arg1 needLoadExt:(BOOL)arg2;
- (void)callModifyContactForCPState:(id)arg1;
- (void)callOnDeleteExt:(id)arg1;
- (void)callOnModifyContactHeadImageExt:(id)arg1;
- (void)callOnModifyExt:(id)arg1;
- (void)callOnRemoveContactFromAddressBook:(id)arg1;
- (BOOL)checkIfForbiddenGetContact:(id)arg1;
- (BOOL)clearDraftForContact:(id)arg1;
- (void)dealloc;
- (BOOL)delayLoadAllContactInBackGround;
- (BOOL)deleteContact:(id)arg1 listType:(unsigned long)arg2;
- (BOOL)deleteContact:(id)arg1 listType:(unsigned long)arg2 andScene:(unsigned long)arg3 sync:(BOOL)arg4;
- (BOOL)deleteContact:(id)arg1 listType:(unsigned long)arg2 sync:(BOOL)arg3;
- (void)fixContactPluginOldData;
- (id)generateOfficialContact:(id)arg1;
- (id)generatePluginContact:(id)arg1;
- (id)generatePluginContact:(id)arg1 uiType:(unsigned long)arg2;
- (id)generatePluginContactNoListContact:(id)arg1;
- (id)getAllBrandContacts;
- (BOOL)getAllContactList:(id)arg1 listType:(unsigned long)arg2;
- (BOOL)getAllContactNoExtInfoList:(id)arg1 listType:(unsigned long)arg2;
- (id)getAllContactUserName;
- (id)getAllEnterpriseMainBrandContacts;
- (BOOL)getAllRemarkList:(id)arg1 listType:(unsigned long)arg2;
- (BOOL)getAllUserName:(id)arg1;
- (id)getContactByName:(id)arg1;
- (id)getContactByNameFromCache:(id)arg1;
- (id)getContactByNameFromDB:(id)arg1;
- (id)getContactForSearchByName:(id)arg1;
- (id)getContactFromDB:(id)arg1;
- (id)getContactFromDic:(id)arg1;
- (id)getContactList:(unsigned long)arg1 contactType:(unsigned long)arg2;
- (id)getContactList:(unsigned long)arg1 contactType:(unsigned long)arg2 needLoadExt:(BOOL)arg3;
- (BOOL)getContactsFromServer:(id)arg1;
- (BOOL)getContactsFromServer:(id)arg1 chatContact:(id)arg2;
- (BOOL)getContactsFromServer:(id)arg1 chatContact:(id)arg2 withScene:(int)arg3 withTicket:(id)arg4 usrData:(id)arg5;
- (BOOL)getContactsFromSvrForTempChat:(id)arg1;
- (id)getGroupCardMemberList:(id)arg1;
- (BOOL)getInviteeContactsFromServer:(id)arg1 withTicket:(id)arg2;
- (id)getSelfContact;
- (void)handleLocalField:(id)arg1 oldContact:(id)arg2;
- (void)handleOfficalContactName:(id)arg1;
- (id)init;
- (void)initDB:(id)arg1 lock:(id)arg2;
- (void)initListen;
- (int)interalReloadContacts:(unsigned long)arg1 needLoadExt:(BOOL)arg2;
- (void)internalDeleteContact:(id)arg1;
- (BOOL)internalGetContactsFromSvr:(id)arg1 chatContact:(id)arg2 usrData:(id)arg3;
- (void)internalModifyContact:(id)arg1;
- (void)internalNewContact:(id)arg1;
- (void)internalUpdateContactLocalDataWithUserName:(id)arg1;
- (BOOL)isBelongToMMContactInCache:(id)arg1;
- (BOOL)isCacheAllLoaded;
- (BOOL)isContactBlack:(id)arg1;
- (BOOL)isContactExistLocal:(id)arg1;
- (BOOL)isContactMatch:(id)arg1 listType:(unsigned long)arg2 contactType:(unsigned long)arg3;
- (BOOL)isHardCodeContact:(id)arg1;
- (BOOL)isHeadImgUpdated:(id)arg1 Local:(id)arg2;
- (BOOL)isInContactList:(id)arg1;
- (BOOL)isOpenStrangerCache;
- (BOOL)isUserNewDB;
- (BOOL)loadContactExtInfo:(id)arg1;
- (void)main_onPushAddContact:(id)arg1;
- (void)main_onPushBatchModContact:(id)arg1;
- (void)main_onPushDeleteContact:(id)arg1;
- (void)main_onPushModifyContact:(id)arg1;
- (void)mergeChatRoomData:(id)arg1 oldContact:(id)arg2;
- (BOOL)migrationContacts:(unsigned long)arg1 first:(BOOL)arg2;
- (void)modifyContactNickName:(id)arg1 nickName:(id)arg2 callMod:(BOOL)arg3;
- (void)onBrandContactModified:(id)arg1 withAttrChanged:(id)arg2;
- (void)onGetContact:(id)arg1;
- (void)onLanguageChange;
- (void)onPushDeleteContact:(id)arg1;
- (void)onPushModifyContact:(id)arg1 updateImage:(BOOL)arg2;
- (void)onServiceClearData;
- (BOOL)onServiceMemoryWarning;
- (void)onServiceReloadData;
- (void)onSettingChange;
- (void)refreshContactLocalData;
- (void)refreshPluginNickName:(BOOL)arg1;
- (void)reloadContact:(id)arg1;
- (id)reloadContact:(id)arg1 mergeImage:(id)arg2;
- (void)reloadContactImageStatus:(id)arg1 Status:(id)arg2 Image:(id)arg3;
- (BOOL)removeContactFromDB:(id)arg1;
- (void)removeContactFromDic:(id)arg1;
- (void)removeListen;
- (void)reportIDKey:(id)arg1 stranger:(id)arg2;
- (void)reportMigrationStat:(unsigned long)arg1 status:(unsigned long)arg2;
- (BOOL)setBlack:(id)arg1;
- (BOOL)setBlack:(id)arg1 blackFlag:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)setBlack:(id)arg1 sync:(BOOL)arg2;
- (BOOL)setContact:(id)arg1 RoomDetail:(id)arg2;
- (BOOL)setContact:(id)arg1 cardDesc:(id)arg2;
- (BOOL)setContact:(id)arg1 cardUrl:(id)arg2;
- (BOOL)setContact:(id)arg1 chatRoomAccessType:(unsigned long)arg2;
- (BOOL)setContact:(id)arg1 chatRoomData:(id)arg2;
- (BOOL)setContact:(id)arg1 chatState:(unsigned long)arg2;
- (BOOL)setContact:(id)arg1 favour:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)setContact:(id)arg1 googleContactName:(id)arg2;
- (BOOL)setContact:(id)arg1 googleContactNickName:(id)arg2;
- (BOOL)setContact:(id)arg1 hideHashPhone:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)setContact:(id)arg1 mobileIdentify:(id)arg2;
- (BOOL)setContact:(id)arg1 nickName:(id)arg2;
- (BOOL)setContact:(id)arg1 notifyOpen:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)setContact:(id)arg1 owner:(id)arg2;
- (BOOL)setContact:(id)arg1 remark:(id)arg2;
- (BOOL)setContact:(id)arg1 remark:(id)arg2 hideHashPhone:(BOOL)arg3;
- (BOOL)setContact:(id)arg1 sessionTop:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)setContact:(id)arg1 snsBlack:(BOOL)arg2;
- (BOOL)setContact:(id)arg1 textTranslateOpen:(BOOL)arg2 sync:(BOOL)arg3;
- (BOOL)setContact:(id)arg1 typeBit:(unsigned long)arg2 set:(BOOL)arg3 sync:(BOOL)arg4;
- (BOOL)setContact:(id)arg1 typeBit:(unsigned long)arg2 set:(BOOL)arg3 sync:(BOOL)arg4 localSet:(BOOL)arg5;
- (BOOL)setContact:(id)arg1 watchContact:(BOOL)arg2 sync:(BOOL)arg3;
- (void)setContactToDic:(id)arg1 forKey:(id)arg2;
- (BOOL)setHDHeadUpdated:(id)arg1;
- (BOOL)setLocalContact:(id)arg1 notifyOpen:(BOOL)arg2;
- (BOOL)setLocalContactToUntopSession:(id)arg1;
- (void)setMigrationFinished;
- (BOOL)setNoBlack:(id)arg1;
- (BOOL)setNoBlack:(id)arg1 sync:(BOOL)arg2;
- (BOOL)setPhone:(id)arg1 Contact:(id)arg2;
- (void)setSelfContactUpdated;
- (BOOL)shouldUpdateContact:(id)arg1;
- (BOOL)splist_migrationContactList:(id)arg1;
- (BOOL)syncAllSXContact;
- (BOOL)thread_BatchModifyContact:(id)arg1;
- (id)thread_HandleMemContact:(id)arg1;
- (void)thread_ReloadMemConact:(id)arg1 ChatRoom:(id)arg2;
- (id)thread_onBatchModifyChatRoomMember:(id)arg1;
- (BOOL)thread_onPushModifyContact:(id)arg1 isInit:(BOOL)arg2;
- (id)thread_onpushBatchModContact:(id)arg1;
- (void)thread_saveContactImageStatus:(id)arg1 Status:(id)arg2 Image:(id)arg3 Url:(id)arg4;
- (void)tryLoadExtInfoForContact:(id)arg1;
- (void)updateCache:(id)arg1;
- (void)updateContactLocalData;
- (BOOL)updateContactToCache:(id)arg1;
- (BOOL)updateContactToDb:(id)arg1;
- (void)updateNewDB:(id)arg1 NewUser:(BOOL)arg2;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned int hash;
@property(readonly) Class superclass;

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#import "MMObject.h"

#import "IAppMsgPathMgr.h"
#import "IMsgExtendOperation.h"
#import "ISysNewXmlMsgExtendOperation.h"
#import "NSCopying.h"

@class AppInnerJumpItem, AppProductItem, AppTVItem, CardTicketItem, EmoticonSharedItem, EmotionDesignerSharedItem, EmotionPageSharedItem, FavoritesItem, HardWareItem, ImageInfo, MMAsset, MMWCPushInfo, MallProductItem, MessageExpItem, NSArray, NSData, NSMutableArray, NSMutableDictionary, NSString, PushMailWrap, WAAppMsgItem, WCCanvasPageItem, WCPayInfoItem, iWatchAppMsgItem;

@interface CMessageWrap : MMObject <IAppMsgPathMgr, ISysNewXmlMsgExtendOperation, IMsgExtendOperation, NSCopying>
{
    BOOL m_bIsSplit;
    BOOL m_bNew;
    unsigned long m_uiMesLocalID;
    long long m_n64MesSvrID;
    NSString *m_nsFromUsr;
    NSString *m_nsToUsr;
    unsigned long m_uiMessageType;
    NSString *m_nsContent;
    unsigned long m_uiStatus;
    unsigned long m_uiImgStatus;
    unsigned long m_uiMsgFlag;
    unsigned long m_uiCreateTime;
    NSString *m_nsPushContent;
    NSString *m_nsMsgSource;
    NSString *m_nsRealChatUsr;
    NSData *m_dtThumbnail;
    unsigned long m_uiSendTime;
    unsigned long m_uiEmojiStatFlag;
    NSString *m_nsPattern;
    BOOL m_bForward;
    BOOL m_bCdnForward;
    unsigned long m_uiPercent;
    unsigned long m_uiDownloadStatus;
    id <IMsgExtendOperation> m_extendInfoWithMsgTypeForBiz;
    id <IMsgExtendOperation> m_extendInfoWithMsgType;
    id <IMsgExtendOperation> m_extendInfoWithFromUsr;
    NSString *m_nsLastDisplayContent;
    BOOL m_isTempSessionMsg;
    BOOL m_isEnterpriseMsg;
    unsigned long m_sequenceId;
    BOOL m_bIsFromBrandSession;
    NSString *m_nsKFWorkerOpenID;
    NSString *m_nsBizClientMsgID;
    NSString *m_nsBizChatId;
    unsigned long m_uiBizChatVer;
    NSString *m_nsAtUserList;
    unsigned int watchMsgSourceType;
    NSString *m_nsDisplayName;
    unsigned long _m_forwardType;
    NSMutableDictionary *_m_dicForwardParas;
}

+ (id)FormMessageWrapFromAddMsg:(id)arg1;
+ (id)FormMessageWrapFromBuffer:(id)arg1;
+ (id)GetCdnDownloadPathOfMsgThumb:(id)arg1;
+ (void)GetPathOfAppData:(id)arg1 LocalID:(unsigned long)arg2 FileExt:(id)arg3 retStrPath:(id *)arg4;
+ (void)GetPathOfAppDataByUserName:(id)arg1 andMessageWrap:(id)arg2 andAttachId:(id)arg3 andAttachFileExt:(id)arg4 retStrPath:(id *)arg5;
+ (void)GetPathOfAppDataByUserName:(id)arg1 andMessageWrap:(id)arg2 retStrPath:(id *)arg3;
+ (void)GetPathOfAppDataTemp:(id)arg1 LocalID:(unsigned long)arg2 AttachId:(id)arg3 retStrPath:(id *)arg4;
+ (void)GetPathOfAppDataTemp:(id)arg1 LocalID:(unsigned long)arg2 retStrPath:(id *)arg3;
+ (void)GetPathOfAppDir:(id)arg1 retStrPath:(id *)arg2;
+ (void)GetPathOfAppImgCacheDir:(id)arg1 retStrPath:(id *)arg2;
+ (void)GetPathOfAppRemindAttach:(id)arg1 retStrPath:(id *)arg2;
+ (void)GetPathOfAppThumb:(id)arg1 LocalID:(unsigned long)arg2 retStrPath:(id *)arg3;
+ (void)GetPathOfMaskedAppThumb:(id)arg1 LocalID:(unsigned long)arg2 retStrPath:(id *)arg3;
+ (id)GetPathOfMaskedSquareMesImgThumbDir:(id)arg1;
+ (id)GetPathOfMesVideoWithMessageWrap:(id)arg1;
+ (id)GetPathOfSquareMesImgThumb:(id)arg1;
+ (id)GetTempPathOfMesShortVideoWithMessageWrap:(id)arg1;
+ (BOOL)IsRecordMsg:(id)arg1;
+ (BOOL)SaveMesImg:(id)arg1 MsgWrap:(id)arg2;
+ (BOOL)SaveMsgThumbWithMsgWrap:(id)arg1;
+ (void)clearLocalImage:(id)arg1;
+ (void)clearLocalMaskedThumbImage:(id)arg1;
+ (id)createMaskedThumbImageForMessageWrap:(id)arg1;
+ (id)getMaskedMsgImgThumb:(id)arg1;
+ (id)getMaskedVideoMsgImgThumb:(id)arg1;
+ (id)getMessageListStatusImage:(unsigned long)arg1;
+ (id)getMsgHDImg:(id)arg1;
+ (id)getMsgHDImgData:(id)arg1;
+ (id)getMsgImg:(id)arg1;
+ (id)getMsgImgData:(id)arg1;
+ (id)getMsgImgThumb:(id)arg1;
+ (id)getOldPathOfMessageImageCache;
+ (id)getPathOfMaskedMsgImgThumb:(id)arg1;
+ (id)getPathOfMaskedVideoMsgImgThumb:(id)arg1;
+ (id)getPathOfMessageImageCache;
+ (id)getPathOfMiddleImgForSender:(id)arg1;
+ (id)getPathOfMsgHDImg:(id)arg1;
+ (id)getPathOfMsgImg:(id)arg1;
+ (id)getPathOfMsgImgThumb:(id)arg1;
+ (id)getPathOfVideoMsgImgThumb:(id)arg1;
+ (id)getUserNameFromMsgWrap:(id)arg1;
+ (void)initialize;
+ (BOOL)isSenderFromMsgWrap:(id)arg1;
- (void).cxx_destruct;
- (void)AddTagToMsgSource:(id)arg1 value:(id)arg2;
- (void)ChangeForBackup;
- (void)ChangeForChatRoom;
- (void)ChangeForDisplay;
- (void)ChangeForMsgSource;
- (id)GetCdnDownloadPathOfVideo;
- (id)GetCdnDownloadThumbPathOfVideo;
- (id)GetChatName;
- (id)GetDisplayContent;
- (id)GetImg;
- (id)GetMsgClientMsgID;
- (id)GetThumb;
- (BOOL)IsAppMessage;
- (BOOL)IsAtMe;
- (BOOL)IsBottleMessage;
- (BOOL)IsChatRoomMessage;
- (BOOL)IsImgMsg;
- (BOOL)IsMassSendMessage;
- (BOOL)IsNeedAddMsgBizExt;
- (BOOL)IsNeedChatExt;
- (BOOL)IsNewInvitation;
- (BOOL)IsNewInvitationApprove;
- (BOOL)IsQQMessage;
- (BOOL)IsRoomAnnouncement;
- (BOOL)IsSameMsg:(id)arg1;
- (BOOL)IsSameMsgWithFullCheck:(id)arg1;
- (BOOL)IsSendBySendMsg;
- (BOOL)IsShortMovieMsg;
- (BOOL)IsSimpleVideoMsg;
- (BOOL)IsSxMessage;
- (BOOL)IsTextMsg;
- (BOOL)IsVideoMsg;
- (void)UpdateMsgSource;
- (BOOL)bIsAppUrlTypeWithCanvas;
- (BOOL)canPlayVideo:(id)arg1;
- (int)compareMessageAscending:(id)arg1;
- (int)compareMessageLocalIDDescending:(id)arg1;
- (int)compareQQAscending:(id)arg1;
- (int)compareSXAscending:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
@property(readonly, copy) NSString *description;
- (void)fillMsgSourceFromContact:(id)arg1 isFromTempSession:(BOOL)arg2;
- (void)forwardInvocation:(id)arg1;
- (id)forwardingTargetForSelector:(SEL)arg1;
- (BOOL)genImageFromMMAssetAndNotify:(id)arg1;
- (void)genMiddleImg:(id)arg1 originImgData:(id)arg2 isSaveOK:(BOOL)arg3 delegate:(id)arg4;
- (id)getMsgExtBizId;
- (id)getNodeBtnList;
- (id)init;
- (id)initWithMsgType:(int)arg1;
- (id)initWithMsgType:(int)arg1 nsFromUsr:(id)arg2;
- (BOOL)isAd;
- (BOOL)isSentOK;
- (BOOL)isShowAppBottomButton;
- (BOOL)isShowAppMessageBlockButton;
- (BOOL)isShowCommentButton;
- (id)keyDescription;
@property(nonatomic) BOOL m_bCdnForward; // @synthesize m_bCdnForward;
@property(nonatomic) BOOL m_bForward; // @synthesize m_bForward;
@property(nonatomic) BOOL m_bIsFromBrandSession; // @synthesize m_bIsFromBrandSession;
@property(nonatomic) BOOL m_bIsSplit; // @synthesize m_bIsSplit;
@property(nonatomic) BOOL m_bNew; // @synthesize m_bNew;
@property(retain, nonatomic) NSMutableDictionary *m_dicForwardParas; // @synthesize m_dicForwardParas=_m_dicForwardParas;
@property(retain, nonatomic) NSData *m_dtThumbnail; // @synthesize m_dtThumbnail;
@property(retain, nonatomic) id <IMsgExtendOperation> m_extendInfoWithFromUsr; // @synthesize m_extendInfoWithFromUsr;
@property(retain, nonatomic) id <IMsgExtendOperation> m_extendInfoWithMsgType; // @synthesize m_extendInfoWithMsgType;
@property(retain, nonatomic) id <IMsgExtendOperation> m_extendInfoWithMsgTypeForBiz; // @synthesize m_extendInfoWithMsgTypeForBiz;
@property(nonatomic) unsigned long m_forwardType; // @synthesize m_forwardType=_m_forwardType;
@property(nonatomic) BOOL m_isEnterpriseMsg; // @synthesize m_isEnterpriseMsg;
@property(nonatomic) BOOL m_isTempSessionMsg; // @synthesize m_isTempSessionMsg;
@property(nonatomic) long long m_n64MesSvrID; // @synthesize m_n64MesSvrID;
@property(retain, nonatomic) NSString *m_nsAtUserList; // @synthesize m_nsAtUserList;
@property(retain, nonatomic) NSString *m_nsBizChatId; // @synthesize m_nsBizChatId;
@property(retain, nonatomic) NSString *m_nsBizClientMsgID; // @synthesize m_nsBizClientMsgID;
@property(retain, nonatomic) NSString *m_nsContent; // @synthesize m_nsContent;
@property(retain, nonatomic) NSString *m_nsDisplayName; // @synthesize m_nsDisplayName;
@property(retain, nonatomic) NSString *m_nsFromUsr; // @synthesize m_nsFromUsr;
@property(retain, nonatomic) NSString *m_nsKFWorkerOpenID; // @synthesize m_nsKFWorkerOpenID;
@property(retain, nonatomic) NSString *m_nsMsgSource; // @synthesize m_nsMsgSource;
@property(retain, nonatomic) NSString *m_nsPattern; // @synthesize m_nsPattern;
@property(retain, nonatomic) NSString *m_nsPushContent; // @synthesize m_nsPushContent;
@property(retain, nonatomic) NSString *m_nsRealChatUsr; // @synthesize m_nsRealChatUsr;
@property(retain, nonatomic) NSString *m_nsToUsr; // @synthesize m_nsToUsr;
@property(nonatomic) unsigned long m_sequenceId; // @synthesize m_sequenceId;
@property(nonatomic) unsigned long m_uiBizChatVer; // @synthesize m_uiBizChatVer;
@property(nonatomic) unsigned long m_uiCreateTime; // @synthesize m_uiCreateTime;
@property(nonatomic) unsigned long m_uiDownloadStatus; // @synthesize m_uiDownloadStatus;
@property(nonatomic) unsigned long m_uiEmojiStatFlag; // @synthesize m_uiEmojiStatFlag;
@property(nonatomic) unsigned long m_uiImgStatus; // @synthesize m_uiImgStatus;
@property(nonatomic) unsigned long m_uiMesLocalID; // @synthesize m_uiMesLocalID;
@property(nonatomic) unsigned long m_uiMessageType; // @synthesize m_uiMessageType;
@property(nonatomic) unsigned long m_uiMsgFlag; // @synthesize m_uiMsgFlag;
@property(nonatomic) unsigned long m_uiPercent; // @synthesize m_uiPercent;
@property(nonatomic) unsigned long m_uiSendTime; // @synthesize m_uiSendTime;
@property(nonatomic) unsigned long m_uiStatus; // @synthesize m_uiStatus;
- (id)methodSignatureForSelector:(SEL)arg1;
- (id)nativeUrl;
- (void)setVideoPlayMode:(BOOL)arg1;
@property(nonatomic) unsigned int watchMsgSourceType; // @synthesize watchMsgSourceType;
- (id)wishingString;
- (unsigned int)yoCount;
- (int)yoType;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly) unsigned int hash;
@property(retain, nonatomic) NSString *m_AttachedContent; // @dynamic m_AttachedContent;
@property(retain, nonatomic) NSString *m_aesKey; // @dynamic m_aesKey;
@property(retain, nonatomic) NSArray *m_arrCustomWrap; // @dynamic m_arrCustomWrap;
@property(retain, nonatomic) NSMutableArray *m_arrInviteeMembers; // @dynamic m_arrInviteeMembers;
@property(retain, nonatomic) NSMutableArray *m_arrMembers; // @dynamic m_arrMembers;
@property(retain, nonatomic) NSArray *m_arrReaderWaps; // @dynamic m_arrReaderWaps;
@property(retain, nonatomic) MMAsset *m_asset; // @dynamic m_asset;
@property(nonatomic) BOOL m_bAppAttachExistInSvr; // @dynamic m_bAppAttachExistInSvr;
@property(nonatomic) BOOL m_bComeInByClick; // @dynamic m_bComeInByClick;
@property(nonatomic) BOOL m_bHasApprove; // @dynamic m_bHasApprove;
@property(nonatomic) BOOL m_bHaveMoovDownload; // @dynamic m_bHaveMoovDownload;
@property(nonatomic) BOOL m_bIsForceUpdate; // @dynamic m_bIsForceUpdate;
@property(nonatomic) BOOL m_bNeedReloadSubView; // @dynamic m_bNeedReloadSubView;
@property(nonatomic) BOOL m_bNewApprove; // @dynamic m_bNewApprove;
@property(nonatomic) BOOL m_bNewInv; // @dynamic m_bNewInv;
@property(nonatomic) BOOL m_bShowRewardTips; // @dynamic m_bShowRewardTips;
@property(nonatomic) BOOL m_bStartPlay; // @dynamic m_bStartPlay;
@property(retain, nonatomic) NSString *m_cdnUrlString; // @dynamic m_cdnUrlString;
@property(retain, nonatomic) NSMutableDictionary *m_dicStatParas; // @dynamic m_dicStatParas;
@property(retain, nonatomic) NSData *m_dtImg; // @dynamic m_dtImg;
@property(retain, nonatomic) NSData *m_dtSenderMidImg; // @dynamic m_dtSenderMidImg;
@property(retain, nonatomic) NSData *m_dtVoice; // @dynamic m_dtVoice;
@property(nonatomic) unsigned long m_duration; // @dynamic m_duration;
@property(retain, nonatomic) NSString *m_encryptUrlString; // @dynamic m_encryptUrlString;
@property(nonatomic) float m_fLatitude; // @dynamic m_fLatitude;
@property(nonatomic) float m_fLongitude; // @dynamic m_fLongitude;
@property(retain, nonatomic) NSString *m_fromChatUserName; // @dynamic m_fromChatUserName;
@property(nonatomic) long long m_i64VoipKey; // @dynamic m_i64VoipKey;
@property(nonatomic) long m_iVoipRoomid; // @dynamic m_iVoipRoomid;
@property(retain, nonatomic) NSString *m_infoUrl; // @dynamic m_infoUrl;
@property(retain, nonatomic) NSString *m_inviterName; // @dynamic m_inviterName;
@property(nonatomic) BOOL m_isCanUpload; // @dynamic m_isCanUpload;
@property(readonly, nonatomic) BOOL m_isContentOriginal; // @dynamic m_isContentOriginal;
@property(nonatomic) BOOL m_isDirectSend; // @dynamic m_isDirectSend;
@property(nonatomic) BOOL m_isForNewYear; // @dynamic m_isForNewYear;
@property(nonatomic) BOOL m_isReaderForbidForward; // @dynamic m_isReaderForbidForward;
@property(nonatomic) double m_latitude; // @dynamic m_latitude;
@property(retain, nonatomic) NSString *m_locationLabel; // @dynamic m_locationLabel;
@property(nonatomic) double m_longitude; // @dynamic m_longitude;
@property(nonatomic) double m_mapScale; // @dynamic m_mapScale;
@property(retain, nonatomic) NSString *m_mapType; // @dynamic m_mapType;
@property(nonatomic) int m_msgInnerType; // @dynamic m_msgInnerType;
@property(nonatomic) long m_nDownloadLimit; // @dynamic m_nDownloadLimit;
@property(retain, nonatomic) NSString *m_newXmlType; // @dynamic m_newXmlType;
@property(retain, nonatomic) NSString *m_nsAesKey; // @dynamic m_nsAesKey;
@property(retain, nonatomic) NSString *m_nsAppAction; // @dynamic m_nsAppAction;
@property(retain, nonatomic) NSString *m_nsAppAttachID; // @dynamic m_nsAppAttachID;
@property(retain, nonatomic) NSString *m_nsAppContent; // @dynamic m_nsAppContent;
@property(retain, nonatomic) NSString *m_nsAppExtInfo; // @dynamic m_nsAppExtInfo;
@property(retain, nonatomic) NSString *m_nsAppFileExt; // @dynamic m_nsAppFileExt;
@property(retain, nonatomic) NSString *m_nsAppID; // @dynamic m_nsAppID;
@property(retain, nonatomic) NSString *m_nsAppMediaDataUrl; // @dynamic m_nsAppMediaDataUrl;
@property(retain, nonatomic) NSString *m_nsAppMediaLowBandDataUrl; // @dynamic m_nsAppMediaLowBandDataUrl;
@property(retain, nonatomic) NSString *m_nsAppMediaLowUrl; // @dynamic m_nsAppMediaLowUrl;
@property(retain, nonatomic) NSString *m_nsAppMediaTagName; // @dynamic m_nsAppMediaTagName;
@property(retain, nonatomic) NSString *m_nsAppMediaUrl; // @dynamic m_nsAppMediaUrl;
@property(retain, nonatomic) NSString *m_nsAppMessageAction; // @dynamic m_nsAppMessageAction;
@property(retain, nonatomic) NSString *m_nsAppMessageExt; // @dynamic m_nsAppMessageExt;
@property(retain, nonatomic) NSString *m_nsAppName; // @dynamic m_nsAppName;
@property(retain, nonatomic) NSString *m_nsAutoDownloadControl; // @dynamic m_nsAutoDownloadControl;
@property(retain, nonatomic) NSString *m_nsCommentUrl; // @dynamic m_nsCommentUrl;
@property(retain, nonatomic) NSString *m_nsDesc; // @dynamic m_nsDesc;
@property(retain, nonatomic) NSString *m_nsDesignerId; // @dynamic m_nsDesignerId;
@property(copy, nonatomic) NSString *m_nsEmoticonBelongToProductID; // @dynamic m_nsEmoticonBelongToProductID;
@property(retain, nonatomic) NSString *m_nsEmoticonMD5; // @dynamic m_nsEmoticonMD5;
@property(retain, nonatomic) NSString *m_nsFileParam; // @dynamic m_nsFileParam;
@property(retain, nonatomic) NSString *m_nsImgHDUrl; // @dynamic m_nsImgHDUrl;
@property(retain, nonatomic) NSString *m_nsImgMidUrl; // @dynamic m_nsImgMidUrl;
@property(retain, nonatomic) NSString *m_nsImgSrc; // @dynamic m_nsImgSrc;
@property(retain, nonatomic) NSString *m_nsInviteReason; // @dynamic m_nsInviteReason;
@property(retain, nonatomic) NSString *m_nsInviteTickets; // @dynamic m_nsInviteTickets;
@property(retain, nonatomic) NSString *m_nsJsAppId; // @dynamic m_nsJsAppId;
@property(retain, nonatomic) NSString *m_nsMsgAttachUrl; // @dynamic m_nsMsgAttachUrl;
@property(retain, nonatomic) NSString *m_nsMsgDataUrl; // @dynamic m_nsMsgDataUrl;
@property(retain, nonatomic) NSString *m_nsMsgMd5; // @dynamic m_nsMsgMd5;
@property(retain, nonatomic) NSString *m_nsMsgThumbAesKey; // @dynamic m_nsMsgThumbAesKey;
@property(retain, nonatomic) NSString *m_nsMsgThumbMd5; // @dynamic m_nsMsgThumbMd5;
@property(retain, nonatomic) NSString *m_nsMsgThumbUrl; // @dynamic m_nsMsgThumbUrl;
@property(retain, nonatomic) NSString *m_nsRemindAttachId; // @dynamic m_nsRemindAttachId;
@property(retain, nonatomic) NSString *m_nsShareOpenUrl; // @dynamic m_nsShareOpenUrl;
@property(retain, nonatomic) NSString *m_nsShareOriginUrl; // @dynamic m_nsShareOriginUrl;
@property(retain, nonatomic) NSString *m_nsSourceDisplayname; // @dynamic m_nsSourceDisplayname;
@property(retain, nonatomic) NSString *m_nsSourceUsername; // @dynamic m_nsSourceUsername;
@property(retain, nonatomic) NSString *m_nsStatExtStr; // @dynamic m_nsStatExtStr;
@property(retain, nonatomic) NSString *m_nsStreamVideoAdUxInfo; // @dynamic m_nsStreamVideoAdUxInfo;
@property(retain, nonatomic) NSString *m_nsStreamVideoPublishId; // @dynamic m_nsStreamVideoPublishId;
@property(retain, nonatomic) NSString *m_nsStreamVideoThumbUrl; // @dynamic m_nsStreamVideoThumbUrl;
@property(retain, nonatomic) NSString *m_nsStreamVideoTitle; // @dynamic m_nsStreamVideoTitle;
@property(retain, nonatomic) NSString *m_nsStreamVideoUrl; // @dynamic m_nsStreamVideoUrl;
@property(retain, nonatomic) NSString *m_nsStreamVideoWebUrl; // @dynamic m_nsStreamVideoWebUrl;
@property(retain, nonatomic) NSString *m_nsStreamVideoWording; // @dynamic m_nsStreamVideoWording;
@property(retain, nonatomic) NSString *m_nsTemplateId; // @dynamic m_nsTemplateId;
@property(retain, nonatomic) NSString *m_nsThumbImgUrl; // @dynamic m_nsThumbImgUrl;
@property(retain, nonatomic) NSString *m_nsThumbUrl; // @dynamic m_nsThumbUrl;
@property(retain, nonatomic) NSString *m_nsTitle; // @dynamic m_nsTitle;
@property(retain, nonatomic) AppInnerJumpItem *m_oAppInnerJumpItem; // @dynamic m_oAppInnerJumpItem;
@property(retain, nonatomic) AppProductItem *m_oAppProductItem; // @dynamic m_oAppProductItem;
@property(retain, nonatomic) AppTVItem *m_oAppTVItem; // @dynamic m_oAppTVItem;
@property(retain, nonatomic) WCCanvasPageItem *m_oCanvasPageItem; // @dynamic m_oCanvasPageItem;
@property(retain, nonatomic) CardTicketItem *m_oCardTicketItem; // @dynamic m_oCardTicketItem;
@property(retain, nonatomic) EmoticonSharedItem *m_oEmoticonSharedItem; // @dynamic m_oEmoticonSharedItem;
@property(retain, nonatomic) EmotionDesignerSharedItem *m_oEmotionDesignerSharedItem; // @dynamic m_oEmotionDesignerSharedItem;
@property(retain, nonatomic) EmotionPageSharedItem *m_oEmotionPageSharedItem; // @dynamic m_oEmotionPageSharedItem;
@property(retain, nonatomic) HardWareItem *m_oHardWareItem; // @dynamic m_oHardWareItem;
@property(retain, nonatomic) ImageInfo *m_oImageInfo; // @dynamic m_oImageInfo;
@property(retain, nonatomic) MallProductItem *m_oMallProductItem; // @dynamic m_oMallProductItem;
@property(retain, nonatomic) MessageExpItem *m_oMsgExpItem; // @dynamic m_oMsgExpItem;
@property(retain, nonatomic) PushMailWrap *m_oPushMailWrap; // @dynamic m_oPushMailWrap;
@property(retain, nonatomic) FavoritesItem *m_oRecordItem; // @dynamic m_oRecordItem;
@property(retain, nonatomic) WAAppMsgItem *m_oWAAppItem; // @dynamic m_oWAAppItem;
@property(retain, nonatomic) WCPayInfoItem *m_oWCPayInfoItem; // @dynamic m_oWCPayInfoItem;
@property(retain, nonatomic) MMWCPushInfo *m_oWebcachePushInfo; // @dynamic m_oWebcachePushInfo;
@property(retain, nonatomic) iWatchAppMsgItem *m_oiWatchMsgItem; // @dynamic m_oiWatchMsgItem;
@property(retain, nonatomic) NSString *m_poiName; // @dynamic m_poiName;
@property(retain, nonatomic) NSString *m_qrCode; // @dynamic m_qrCode;
@property(nonatomic) CMessageWrap *m_refMessageWrap; // @dynamic m_refMessageWrap;
@property(retain, nonatomic) NSString *m_scene; // @dynamic m_scene;
@property(retain, nonatomic) NSString *m_sessionShowContent; // @dynamic m_sessionShowContent;
@property(retain, nonatomic) NSString *m_showContent; // @dynamic m_showContent;
@property(nonatomic) unsigned long m_uiApiSDKVersion; // @dynamic m_uiApiSDKVersion;
@property(nonatomic) unsigned long m_uiAppContentAttributeBitSetFlag; // @dynamic m_uiAppContentAttributeBitSetFlag;
@property(nonatomic) unsigned long m_uiAppDataSize; // @dynamic m_uiAppDataSize;
@property(nonatomic) unsigned long m_uiAppExtShowType; // @dynamic m_uiAppExtShowType;
@property(nonatomic) unsigned long m_uiAppMsgInnerType; // @dynamic m_uiAppMsgInnerType;
@property(nonatomic) unsigned long m_uiAppVersion; // @dynamic m_uiAppVersion;
@property(nonatomic) unsigned long m_uiCameraType; // @dynamic m_uiCameraType;
@property(nonatomic) unsigned int m_uiDownloadMode; // @dynamic m_uiDownloadMode;
@property(nonatomic) unsigned long m_uiDownloadPercent; // @dynamic m_uiDownloadPercent;
@property(nonatomic) unsigned long m_uiEmoticonHeight; // @dynamic m_uiEmoticonHeight;
@property(nonatomic) unsigned long m_uiEmoticonType; // @dynamic m_uiEmoticonType;
@property(nonatomic) unsigned long m_uiEmoticonWidth; // @dynamic m_uiEmoticonWidth;
@property(nonatomic) unsigned long m_uiEncryVer; // @dynamic m_uiEncryVer;
@property(nonatomic) unsigned long m_uiGameContent; // @dynamic m_uiGameContent;
@property(nonatomic) unsigned long m_uiGameType; // @dynamic m_uiGameType;
@property(nonatomic) unsigned long m_uiHDImgSize; // @dynamic m_uiHDImgSize;
@property(nonatomic) unsigned long m_uiMsgThumbHeight; // @dynamic m_uiMsgThumbHeight;
@property(nonatomic) unsigned long m_uiMsgThumbSize; // @dynamic m_uiMsgThumbSize;
@property(nonatomic) unsigned long m_uiMsgThumbWidth; // @dynamic m_uiMsgThumbWidth;
@property(nonatomic) unsigned long m_uiNormalImgSize; // @dynamic m_uiNormalImgSize;
@property(nonatomic) unsigned long m_uiOriginFormat; // @dynamic m_uiOriginFormat;
@property(nonatomic) unsigned long m_uiOriginMsgSvrId; // @dynamic m_uiOriginMsgSvrId;
@property(nonatomic) unsigned int m_uiPlayMode; // @dynamic m_uiPlayMode;
@property(nonatomic) unsigned long m_uiRemindAttachTotalLen; // @dynamic m_uiRemindAttachTotalLen;
@property(nonatomic) unsigned long m_uiRemindFormat; // @dynamic m_uiRemindFormat;
@property(nonatomic) unsigned long m_uiRemindId; // @dynamic m_uiRemindId;
@property(nonatomic) unsigned long m_uiRemindTime; // @dynamic m_uiRemindTime;
@property(nonatomic) unsigned long m_uiScene; // @dynamic m_uiScene;
@property(nonatomic) unsigned long m_uiShowType; // @dynamic m_uiShowType;
@property(nonatomic) unsigned long m_uiStreamVideoTime; // @dynamic m_uiStreamVideoTime;
@property(nonatomic) unsigned long m_uiUploadStatus; // @dynamic m_uiUploadStatus;
@property(nonatomic) unsigned long m_uiVideoLen; // @dynamic m_uiVideoLen;
@property(nonatomic) unsigned long m_uiVideoOffset; // @dynamic m_uiVideoOffset;
@property(nonatomic) unsigned long m_uiVideoSource; // @dynamic m_uiVideoSource;
@property(nonatomic) unsigned long m_uiVideoTime; // @dynamic m_uiVideoTime;
@property(nonatomic) unsigned long m_uiVoiceCancelFlag; // @dynamic m_uiVoiceCancelFlag;
@property(nonatomic) unsigned long m_uiVoiceEndFlag; // @dynamic m_uiVoiceEndFlag;
@property(nonatomic) unsigned long m_uiVoiceFormat; // @dynamic m_uiVoiceFormat;
@property(nonatomic) unsigned long m_uiVoiceForwardFlag; // @dynamic m_uiVoiceForwardFlag;
@property(nonatomic) unsigned long m_uiVoiceTime; // @dynamic m_uiVoiceTime;
@property(nonatomic) unsigned long m_uiVoipInviteType; // @dynamic m_uiVoipInviteType;
@property(nonatomic) unsigned int m_uiVoipRecvTime; // @dynamic m_uiVoipRecvTime;
@property(nonatomic) unsigned long m_uiVoipStatus; // @dynamic m_uiVoipStatus;
@property(retain, nonatomic) NSString *m_url; // @dynamic m_url;
@property(nonatomic) unsigned long m_wordingType; // @dynamic m_wordingType;
@property(readonly) Class superclass;

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#import "WeChatRedEnvelop.h"

%hook CMessageMgr
- (void)AsyncOnAddMsg:(NSString *)msg MsgWrap:(CMessageWrap *)wrap {
	%orig;

	switch(wrap.m_uiMessageType) {
	case 49: { // AppNode

		CContactMgr *contactManager = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CContactMgr") class]];
		CContact *selfContact = [contactManager getSelfContact];


		if ([wrap.m_nsContent rangeOfString:@"wxpay://"].location != NSNotFound) { // 红包
			if ([wrap.m_nsFromUsr rangeOfString:@"@chatroom"].location != NSNotFound ||
				([wrap.m_nsToUsr rangeOfString:@"@chatroom"].location != NSNotFound)) { // 群组红包或群组里自己发的红包

				NSString *nativeUrl = [[wrap m_oWCPayInfoItem] m_c2cNativeUrl];
				nativeUrl = [nativeUrl substringFromIndex:[@"wxpay://c2cbizmessagehandler/hongbao/receivehongbao?" length]];

				NSDictionary *nativeUrlDict = [%c(WCBizUtil) dictionaryWithDecodedComponets:nativeUrl separator:@"&"];

				/** 构造参数 */
				NSMutableDictionary *params = [@{} mutableCopy];
				[params safeSetObject:nativeUrlDict[@"msgtype"] forKey:@"msgType"];
				[params safeSetObject:nativeUrlDict[@"sendid"] forKey:@"sendId"];
				[params safeSetObject:nativeUrlDict[@"channelid"] forKey:@"channelId"];
				[params safeSetObject:[selfContact getContactDisplayName] forKey:@"nickName"];
				[params safeSetObject:[selfContact m_nsHeadImgUrl] forKey:@"headImg"];
				[params safeSetObject:[[wrap m_oWCPayInfoItem] m_c2cNativeUrl] forKey:@"nativeUrl"];
				[params safeSetObject:wrap.m_nsFromUsr forKey:@"sessionUserName"];

				WCRedEnvelopesLogicMgr *logicMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("WCRedEnvelopesLogicMgr") class]];
				[logicMgr OpenRedEnvelopesRequest:params];
			}
		}
		break;
	}
	default:
		break;
	}

}
%end


Comments