-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtweak-bak
72 lines (60 loc) · 2.84 KB
/
tweak-bak
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
#import "WeChatRedEnvelop.h"
#import <unistd.h>
static void reloadPrefs() {
// Check if system app (all system apps have this as their home directory). This path may change but it's unlikely.
BOOL isSystem = [NSHomeDirectory() isEqualToString:@"/var/mobile"];
// Retrieve preferences
NSDictionary* prefs = nil;
if(isSystem) {
CFArrayRef keyList = CFPreferencesCopyKeyList(CFSTR("com.chufan.tweak.hongbao"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
if(keyList) {
prefs = (NSDictionary *)CFPreferencesCopyMultiple(keyList, CFSTR("com.chufan.tweak.hongbao"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
if(!prefs) prefs = [NSDictionary new];
CFRelease(keyList);
}
}else {
prefs = [NSDictionary dictionaryWithContentsOfFile:@"/User/Library/Preferences/com.chufan.tweak.hongbao.plist"];
}
}
%ctor {
reloadPrefs();
}
%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];
BOOL isMesasgeFromMe = NO;
if ([wrap.m_nsFromUsr isEqualToString:selfContact.m_nsUsrName]) {
isMesasgeFromMe = YES;
}
if ([wrap.m_nsContent rangeOfString:@"wxpay://"].location != NSNotFound) { // 红包
if ([wrap.m_nsFromUsr rangeOfString:@"@chatroom"].location != NSNotFound ||
(isMesasgeFromMe && [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"];
//slow the click
usleep(2000000);
WCRedEnvelopesLogicMgr *logicMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("WCRedEnvelopesLogicMgr") class]];
[logicMgr OpenRedEnvelopesRequest:params];
}
}
break;
}
default:
break;
}
}
%end