From 25a3f7f760ff196dab181cd4af0cc1f8a04bdd04 Mon Sep 17 00:00:00 2001 From: DKJone <1136165636@qq.com> Date: Fri, 16 Oct 2020 15:09:43 +0800 Subject: [PATCH] =?UTF-8?q?[v1.0.6](https://github.com/DKWechatHelper/DKWe?= =?UTF-8?q?chatHelper/releases/tag/1.0.6)=20/=202020-10-16=20what's=20new?= =?UTF-8?q?=20*=20=E6=9C=8B=E5=8F=8B=E5=9C=88=E8=BD=AC=E5=8F=91=20*=20?= =?UTF-8?q?=E6=94=AF=E6=8C=817.0.17=20*=20=E6=9B=B4=E6=96=B0=E8=B6=8A?= =?UTF-8?q?=E7=8B=B1=E5=8C=857.0.17=20*=20=E6=9B=B4=E6=96=B0=E5=B7=B2?= =?UTF-8?q?=E6=B3=A8=E5=85=A5=E5=8A=A9=E6=89=8B=E7=9A=847.0.17=E6=9C=AA?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E5=8C=85=20*=20=E6=9B=B4=E6=96=B0=E8=B6=8A?= =?UTF-8?q?=E7=8B=B1=E6=BA=90=E5=AE=89=E8=A3=85=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + CHANGELOG.md | 14 +- IMG_0031.JPG | Bin 0 -> 14583 bytes README.md | 11 +- dkhelper/dkhelper.xcodeproj/project.pbxproj | 4 +- dkhelper/dkhelper/Info.plist | 387 ------------------ .../dkhelperDylib/DKHelperSettingController.m | 24 +- dkhelper/dkhelperDylib/Logos/dkhelperDylib.mm | 60 ++- dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm | 64 ++- .../dkhelperDylib/MyUtils/DKHelperConfig.h | 3 + .../wechatHeaders/WCUIAlertView.h | 16 + .../wechatHeaders/WechatHeaders.h | 41 +- 12 files changed, 211 insertions(+), 414 deletions(-) create mode 100644 IMG_0031.JPG delete mode 100644 dkhelper/dkhelper/Info.plist diff --git a/.gitignore b/.gitignore index 62e3708..84c7f35 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ dkhelper/dkhelper/TargetApp/ dkhelper/dkhelper/tmp/ dkhelper/LatestBuild dkhelper/dkhelper/WeChat_Headers/ +Info.plist diff --git a/CHANGELOG.md b/CHANGELOG.md index b8fb22c..efde262 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # DKWechatHelper ChangeLog -[v1.0.5](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.4) / 2020-09-29 +[v1.0.6](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.6) / 2020-10-16 +what's new +* 朋友圈转发 +* 支持7.0.17 +* 更新越狱包7.0.17 +* 更新已注入助手的7.0.17未签名包 +* 更新越狱源安装包 + +# DKWechatHelper ChangeLog +[v1.0.5](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.5) / 2020-09-29 what's new * 新增好友关系检测 * 新增自动收取个人红包 @@ -7,7 +16,8 @@ what's new * 支持7.0.15 * 更新越狱包7.0.15 * 更新已注入助手的7.0.15未签名包 -* 更新越狱源安装包 +* 更新越狱源安装包 + [v1.0.4](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.4) / 2020-07-07 what's new * 新增集赞助手 diff --git a/IMG_0031.JPG b/IMG_0031.JPG new file mode 100644 index 0000000000000000000000000000000000000000..f03ad3829338392a2ce57faeb754cdfdf3586078 GIT binary patch literal 14583 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 TwEo3m`>W&jf9s!?Jn=sOxO@b+ literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 70444ce..280b64b 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ 不止于抢红包,功能丰富的微信插件。本软件已成功运行在(iphone7-iphone11、iPad) 给个⭐️不迷路↗️ +[v1.0.6](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.5)适用微信7.0.17 [v1.0.5](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.5)适用微信7.0.15 [v1.0.4](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.4)适用微信7.0.14 [v1.0.3](https://github.com/DKWechatHelper/DKWechatHelper/releases/tag/1.0.3)适用微信7.0.13 @@ -28,11 +29,13 @@ * [x] CallKit锁屏接视频语音 * [x] 集赞助手 * [x] 好友关系检测 +* [x] 朋友圈转发 安装后在微信设置中点击“微信小助手” 更多请查看下图: ![IMG_0223](./IMG_0223.png) +![IMG_0223](./IMG_0031.JPG) ## 使用: 1.源码学习 @@ -42,8 +45,9 @@ * [7.0.8-*提取码:h54d*](https://pan.baidu.com/s/11VoUXPC4vb5zg8HzP3kC0Q) * [7.0.11-*提取码: 2igg*](https://pan.baidu.com/s/1mU_mezsWhqL2-AY0PB-vVg) * [7.0.13-*提取码: nx4m*](https://pan.baidu.com/s/1rqB0pV4zMEB6Z3VJTsTa8Q) -* [7.0.14](https://n802.com/file/24576815-452231690) -* [7.0.15](https://n802.com/file/24576815-463029595) +* [7.0.14](https://n802.com/file/24576815-452231690) +* [7.0.15](https://n802.com/file/24576815-463029595) +* [7.0.17](https://n802.com/file/24576815-467161527) 将下载的微信放到'/dkhelper/dkhelper/TargetApp/'目录下该目录下有一个空白文件’put ipa or app here‘,和它放在同一文件夹下即可,修改项目BundleId及签名信息,选择真机设备运行即可 @@ -54,7 +58,8 @@ * [未签名版7.0.11-*提取码: fe9f*](https://pan.baidu.com/s/1sOPCqnCPxSdIKq7TKuHK9g) * [未签名版7.0.13-*提取码: fhes*](https://pan.baidu.com/s/1DgSl5u0Gip3cNdqZmRFEWw) * [未签名版7.0.14](https://n802.com/file/24576815-452232682) -* [未签名版7.0.15](https://n802.com/file/24576815-463034104) +* [未签名版7.0.15](https://n802.com/file/24576815-463034104) +* [未签名版7.0.17](https://n802.com/file/24576815-467161662) 注:推荐使用[ios-app-signer](https://github.com/DanTheMan827/ios-app-signer)签名,使用方法自行百度 3.普通用户: diff --git a/dkhelper/dkhelper.xcodeproj/project.pbxproj b/dkhelper/dkhelper.xcodeproj/project.pbxproj index cd99b32..ab80041 100644 --- a/dkhelper/dkhelper.xcodeproj/project.pbxproj +++ b/dkhelper/dkhelper.xcodeproj/project.pbxproj @@ -804,7 +804,7 @@ DEVELOPMENT_TEAM = NL54V6A3P5; ENABLE_BITCODE = NO; INFOPLIST_FILE = dkhelper/Info.plist; - MARKETING_VERSION = 7.0.14; + MARKETING_VERSION = 7.0.17; MONKEYDEV_ADD_SUBSTRATE = YES; MONKEYDEV_CLASS_DUMP = NO; MONKEYDEV_DEFAULT_BUNDLEID = YES; @@ -826,7 +826,7 @@ DEVELOPMENT_TEAM = NL54V6A3P5; ENABLE_BITCODE = NO; INFOPLIST_FILE = dkhelper/Info.plist; - MARKETING_VERSION = 7.0.14; + MARKETING_VERSION = 7.0.17; MONKEYDEV_ADD_SUBSTRATE = YES; MONKEYDEV_CLASS_DUMP = NO; MONKEYDEV_DEFAULT_BUNDLEID = YES; diff --git a/dkhelper/dkhelper/Info.plist b/dkhelper/dkhelper/Info.plist deleted file mode 100644 index a8a4ff3..0000000 --- a/dkhelper/dkhelper/Info.plist +++ /dev/null @@ -1,387 +0,0 @@ - - - - - BuildMachineOSBuild - 19F101 - CFBundleDevelopmentRegion - zh_CN - CFBundleDisplayName - 微信 - CFBundleDocumentTypes - - - CFBundleTypeName - officeopenxml - LSHandlerRank - Alternate - LSItemContentTypes - - org.openxmlformats.openxml - - - - CFBundleTypeName - data - LSHandlerRank - Alternate - LSItemContentTypes - - public.data - - - - CFBundleTypeName - ppt - LSHandlerRank - Alternate - LSItemContentTypes - - com.microsoft.powerpoint.ppt - - - - CFBundleTypeName - doc - LSHandlerRank - Alternate - LSItemContentTypes - - com.microsoft.word.doc - - - - CFBundleTypeName - xls - LSHandlerRank - Alternate - LSItemContentTypes - - com.microsoft.excel.xls - - - - CFBundleTypeName - pdf - LSHandlerRank - Alternate - LSItemContentTypes - - com.adobe.pdf - - - - CFBundleTypeName - archive - LSHandlerRank - Alternate - LSItemContentTypes - - org.gnu.gnu-tar-archive - - - - CFBundleTypeName - audivideo - LSHandlerRank - Alternate - LSItemContentTypes - - public.audiovisual-content - - - - CFBundleTypeName - image - LSHandlerRank - Alternate - LSItemContentTypes - - public.image - - - - CFBundleTypeName - txt - LSHandlerRank - Alternate - LSItemContentTypes - - public.text - - - - CFBundleExecutable - WeChat - CFBundleIconFiles - - dkhelper/icon.png - - CFBundleIcons - - CFBundlePrimaryIcon - - CFBundleIconFiles - - AppIcon60x60 - - CFBundleIconName - AppIcon - - - CFBundleIcons~ipad - - CFBundlePrimaryIcon - - CFBundleIconFiles - - AppIcon60x60 - AppIcon76x76 - AppIcon83.5x83.5 - - CFBundleIconName - AppIcon - - - CFBundleIdentifier - com.tencent.xin - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - WeChat - CFBundlePackageType - APPL - CFBundleShortVersionString - 7.0.15 - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - iPhoneOS - - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLName - com.tencent.xin - CFBundleURLSchemes - - wexinVideoAPI - weixin - weixinapp - fb290293790992170 - wechat - QQ41C152CF - prefs - wx703 - weixinULAPI - wx7015 - - - - CFBundleVersion - 7.0.15.33 - DTAppStoreToolsBuild - 11E707 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 17F65 - DTPlatformName - iphoneos - DTPlatformVersion - 13.5 - DTSDKBuild - 17F65 - DTSDKName - iphoneos13.5 - DTXcode - 1150 - DTXcodeBuild - 11E608c - FacebookAppID - 290293790992170 - FacebookAutoInitEnabled - - FacebookAutoLogAppEventsEnabled - - ITSDRMScheme - v2 - LSApplicationQueriesSchemes - - qqnews - weixinbeta - qqnewshd - qqmail - whatsapp - wxwork - wxworklocal - wxcphonebook - mttbrowser - mqqapi - mqzonev2 - qqmusic - tenvideo2 - tenvideohd - qnreading - weread - sosomap - comgooglemaps - iosamap - baidumap - sgmap - fbauth2 - wx76fc280041c16519 - wx3bef52104e238bff - rijvideo - wx95a3a4d7c627e07d - wx44b60f3ea0534cd7 - wxacbfe7e1bb3e800f - wxfdab5af74990787a - wx58164a91f1821369 - wxd477edab60670232 - wx82dd7436af5db835 - qqstock - openApp.jdMobile - openapp.toplife - qmkege - mqzonex - txvp - sybapp - wx5a4a8ac0fd48303a - qqsports - qqcar - tencentedu - wemusic - qqmap - mqq - webank - weiyun - weishi - wemeet - - LSRequiresIPhoneOS - - LSSupportsOpeningDocumentsInPlace - - MidasConfig - - HideLoading - - - MinimumOSVersion - 13.0 - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSBluetoothAlwaysUsageDescription - Allow WeChat Use Bluetooth Peripheral. - NSBluetoothPeripheralUsageDescription - Allow WeChat Use Bluetooth Peripheral. - NSCameraUsageDescription - Use your Camera to record video, using VoIP features. - NSContactsUsageDescription - Allow WeChat Use your Contact. - NSFaceIDUsageDescription - Allow WeChat Use FaceID. - NSHealthShareUsageDescription - Allow WeChat Use Health Share. - NSHealthUpdateUsageDescription - Allow WeChat Use Health Update. - NSLocationAlwaysUsageDescription - Allow WeChat Use your Location always. - NSLocationUsageDescription - Allow WeChat Use your Location. - NSLocationWhenInUseUsageDescription - Allow WeChat Use your Location when in use. - NSMicrophoneUsageDescription - Use your Microphone to record voice messages, using VoIP features. - NSMotionUsageDescription - Allow WeChat Use Motion. - NSPhotoLibraryAddUsageDescription - Allow WeChat Save Photo. - NSPhotoLibraryUsageDescription - Allow WeChat Use your PhotoLibrary. - NSSiriUsageDescription - Allow WeChat Use Siri. - NSUserActivityTypes - - com.tencent.xin - com.tencent.xin.watch - - UIAppFonts - - WeChatSansStd-Bold.ttf - WeChatSansStd-Medium.ttf - WeChatSansStd-Regular.ttf - WeChatSansSuperscript-Bold.ttf - WeChatSansSuperscript-Regular.ttf - WeChatSansSuperscript-Medium.ttf - - UIBackgroundModes - - location - audio - fetch - voip - remote-notification - network-authentication - - UIDeviceFamily - - 1 - 2 - - UILaunchStoryboardName - Launch Screen - UIPrerenderedIcon - - UIRequiredDeviceCapabilities - - arm64 - - UIStatusBarHidden - - UIStatusBarStyle - UIStatusBarStyleBlackOpaque - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown - - UISupportsDocumentBrowser - - UIViewControllerBasedStatusBarAppearance - - WeChatBundleVersion - 7.0.15.33 - WeChatFeatureIdentifier - release_appstore_7.0.15 - build_time - 2020-08-03 23:07:27 - by - wx_ios_code_helper - path - release_appstore_7.0.15_2020_7_30_23_1_0 - rev - 8a2d4b8b37a11de738ace1ec126991085c057907 - tag - release_appstore_7.0.15 #29 - uuid - 2ccd1b78fb963cb1af6f0e1ec2864066 - ver - 0x17000f21 - - diff --git a/dkhelper/dkhelperDylib/DKHelperSettingController.m b/dkhelper/dkhelperDylib/DKHelperSettingController.m index b1343a0..9f3ec23 100644 --- a/dkhelper/dkhelperDylib/DKHelperSettingController.m +++ b/dkhelper/dkhelperDylib/DKHelperSettingController.m @@ -12,6 +12,8 @@ #import "DKGroupFilterController.h" #import "DKCleanFriendsController.h" #import +#import +#import @interface DKHelperSettingController (){ WCTableViewManager * manager; MMUIViewController *helper; @@ -66,7 +68,7 @@ [super viewDidAppear:animated]; if(DKHelperConfig.hasShowTips){return;} - [DKHelper showAlertWithTitle:@"重要提示" message:@"本软件完全免费,插件功能仅供学习,由本软件产生的任何利益纠纷须有使用者自行承担。在收到微信团队\"非法客户端提示后\"继续使用可能有封号风险,需使用者自行承担。如遇到提醒,请卸载本软件,更换官方微信客户端" btnTitle:@"我明白了" handler:^(UIButton *sender) { + [DKHelper showAlertWithTitle:@"重要提示" message:@"本软件完全免费,插件功能仅供学习,由本软件产生的任何利益纠纷须有使用者自行承担。在收到微信团队\"非法客户端提示后\"继续使用可能有封号风险,需使用者自行承担。如遇到提醒,请卸载本软件,更换官方微信客户端!\n插件开发占用了作者的大量业余时间,同时部分越狱软件源盗用插件,甚至修改插件名称,如果在使用后觉得有用还请支持!" btnTitle:@"我明白了" handler:^(UIButton *sender) { DKHelperConfig.hasShowTips = true; } btnTitle:@"有风险我不使用了" handler:^(UIButton *sender) { exit(0); @@ -138,20 +140,25 @@ WCTableViewCellManager *callKitCell = [DKHelper switchCellWithSel:@selector(callKitEnable:) target:self title:@"使用CallKit" switchOn:[DKHelperConfig callKitEnable]]; [toBeNO1Section addCell:callKitCell]; + WCTableViewCellManager *timelineForwardCell = [DKHelper switchCellWithSel:@selector(forwardTimeline:) target:self title:@"朋友圈转发" switchOn:[DKHelperConfig timeLineForwardEnable]]; + [toBeNO1Section addCell:timelineForwardCell]; + //MARK: 支持作者 WCTableViewSectionManager *supportAuthorSection = [DKHelper sectionManage]; supportAuthorSection.headerTitle = @"支持作者"; [manager addSection:supportAuthorSection]; - WCTableViewNormalCellManager * payMeCell = [DKHelper cellWithSel:@selector(payForMe) target:self title:@"请作者喝杯咖啡"]; + WCTableViewNormalCellManager * payMeCell = [DKHelper cellWithSel:@selector(payForMe) target:self title:@"给作者倒一杯卡布奇诺"]; [supportAuthorSection addCell:payMeCell]; - WCTableViewNormalCellManager *myBlogCell = [DKHelper cellWithSel:@selector(openBlog) target:self title:@"我的博客"]; + WCTableViewNormalCellManager *myBlogCell = [DKHelper cellWithSel:@selector(openBlog) target:self title:@"关于本软件"]; [supportAuthorSection addCell:myBlogCell]; WCTableViewNormalCellManager *myGitHubCell = [DKHelper cellWithSel:@selector(openGitHub) target:self title:@"本项目GitHub" rightValue:@"请给个⭐️" accessoryType:1]; [supportAuthorSection addCell:myGitHubCell]; + WCTableViewNormalCellManager *joinGroupCell = [DKHelper cellWithSel:@selector(joinGroup) target:self title:@"加入交流群"]; + [supportAuthorSection addCell:joinGroupCell]; //MARK: 积攒助手 @@ -255,6 +262,10 @@ DKHelperConfig.preventRevoke = sender.isOn; } +- (void)forwardTimeline:(UISwitch *)sender{ + DKHelperConfig.timeLineForwardEnable = sender.isOn; +} + - (void)changedSteps:(UISwitch *)sender{ DKHelperConfig.changeSteps = sender.isOn; [self reloadTableData]; @@ -325,6 +336,13 @@ item.codeUrl = @"m0E25xJo038.ran,NI96(j"; [scMgr retryRequetScanResult:item viewController:self]; } +- (void)joinGroup{ + ScanQRCodeResultsMgr *scMgr = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("ScanQRCodeResultsMgr") class]]; + ScanCodeHistoryItem *item = [[objc_getClass("ScanCodeHistoryItem") alloc] init]; + item.type = @"QR_CODE"; + item.codeUrl = @"https://weixin.qq.com/g/AQYAAHh7lIFHinAoS0lK9bf4Ew4iQs_looYQ8idimgU-BlwZh-agX8grDS1Gwvuq"; + [scMgr retryRequetScanResult:item viewController:self]; +} - (void)openBlog{ NSURL *blogUrl = [NSURL URLWithString:@"https://www.jianshu.com/p/8f3eae328a20"]; diff --git a/dkhelper/dkhelperDylib/Logos/dkhelperDylib.mm b/dkhelper/dkhelperDylib/Logos/dkhelperDylib.mm index 2496a51..fb16dd4 100644 --- a/dkhelper/dkhelperDylib/Logos/dkhelperDylib.mm +++ b/dkhelper/dkhelperDylib/Logos/dkhelperDylib.mm @@ -35,9 +35,9 @@ #define _LOGOS_RETURN_RETAINED #endif -@class CContactMgr; @class CContact; @class MMServiceCenter; @class WCTimelineMgr; @class VoipCXMgr; @class MicroMessengerAppDelegate; @class CMessageWrap; @class CMessageMgr; @class NewSettingViewController; @class WCTableViewNormalCellManager; @class CGroupMgr; @class WCBizUtil; @class MMContext; @class MMTipsViewController; @class WCRedEnvelopesLogicMgr; @class WCDeviceStepObject; @class UIViewController; -static id _logos_meta_method$_ungrouped$MMServiceCenter$defaultCenter(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$)(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void _logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void (*_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$)(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void _logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void (*_logos_orig$_ungrouped$NewSettingViewController$reloadTableData)(_LOGOS_SELF_TYPE_NORMAL NewSettingViewController* _LOGOS_SELF_CONST, SEL); static void _logos_method$_ungrouped$NewSettingViewController$reloadTableData(_LOGOS_SELF_TYPE_NORMAL NewSettingViewController* _LOGOS_SELF_CONST, SEL); static void _logos_method$_ungrouped$NewSettingViewController$setting(_LOGOS_SELF_TYPE_NORMAL NewSettingViewController* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$)(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static void _logos_method$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static void (*_logos_orig$_ungrouped$CMessageMgr$onRevokeMsg$)(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, CMessageWrap *); static void _logos_method$_ungrouped$CMessageMgr$onRevokeMsg$(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, CMessageWrap *); static void (*_logos_orig$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$)(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static void _logos_method$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static NSInteger (*_logos_orig$_ungrouped$WCDeviceStepObject$m7StepCount)(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static NSInteger _logos_method$_ungrouped$WCDeviceStepObject$m7StepCount(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static NSInteger (*_logos_orig$_ungrouped$WCDeviceStepObject$hkStepCount)(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static NSInteger _logos_method$_ungrouped$WCDeviceStepObject$hkStepCount(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$)(_LOGOS_SELF_TYPE_NORMAL WCRedEnvelopesLogicMgr* _LOGOS_SELF_CONST, SEL, HongBaoRes *, HongBaoReq *); static void _logos_method$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$(_LOGOS_SELF_TYPE_NORMAL WCRedEnvelopesLogicMgr* _LOGOS_SELF_CONST, SEL, HongBaoRes *, HongBaoReq *); static unsigned int _logos_method$_ungrouped$WCRedEnvelopesLogicMgr$calculateDelaySeconds(_LOGOS_SELF_TYPE_NORMAL WCRedEnvelopesLogicMgr* _LOGOS_SELF_CONST, SEL); static BOOL (*_logos_meta_orig$_ungrouped$VoipCXMgr$isCallkitAvailable)(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static BOOL _logos_meta_method$_ungrouped$VoipCXMgr$isCallkitAvailable(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static BOOL (*_logos_meta_orig$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable)(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static BOOL _logos_meta_method$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$UIViewController$viewWillAppear$)(_LOGOS_SELF_TYPE_NORMAL UIViewController* _LOGOS_SELF_CONST, SEL, BOOL); static void _logos_method$_ungrouped$UIViewController$viewWillAppear$(_LOGOS_SELF_TYPE_NORMAL UIViewController* _LOGOS_SELF_CONST, SEL, BOOL); static NSString * _logos_method$_ungrouped$MMTipsViewController$text(_LOGOS_SELF_TYPE_NORMAL MMTipsViewController* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$WCTimelineMgr$modifyDataItem$notify$)(_LOGOS_SELF_TYPE_NORMAL WCTimelineMgr* _LOGOS_SELF_CONST, SEL, WCDataItem *, BOOL); static void _logos_method$_ungrouped$WCTimelineMgr$modifyDataItem$notify$(_LOGOS_SELF_TYPE_NORMAL WCTimelineMgr* _LOGOS_SELF_CONST, SEL, WCDataItem *, BOOL); static void (*_logos_orig$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$)(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static void _logos_method$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static void (*_logos_orig$_ungrouped$CGroupMgr$addCreateMsg$ContactList$)(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static void _logos_method$_ungrouped$CGroupMgr$addCreateMsg$ContactList$(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static BOOL (*_logos_orig$_ungrouped$CContact$isEqual$)(_LOGOS_SELF_TYPE_NORMAL CContact* _LOGOS_SELF_CONST, SEL, CContact *); static BOOL _logos_method$_ungrouped$CContact$isEqual$(_LOGOS_SELF_TYPE_NORMAL CContact* _LOGOS_SELF_CONST, SEL, CContact *); -static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$WCTableViewNormalCellManager(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("WCTableViewNormalCellManager"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$MMServiceCenter(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("MMServiceCenter"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$WCBizUtil(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("WCBizUtil"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$MMContext(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("MMContext"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$CContactMgr(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("CContactMgr"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$CMessageWrap(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("CMessageWrap"); } return _klass; } +@class WCRedEnvelopesLogicMgr; @class MMServiceCenter; @class WCTableViewNormalCellManager; @class CMessageWrap; @class WCBizUtil; @class WCDeviceStepObject; @class CGroupMgr; @class MMContext; @class VoipCXMgr; @class MicroMessengerAppDelegate; @class WCTimelineMgr; @class UIViewController; @class MMTipsViewController; @class CMessageMgr; @class WCOperateFloatView; @class CContactMgr; @class NewSettingViewController; +static id _logos_meta_method$_ungrouped$MMServiceCenter$defaultCenter(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$)(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void _logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void (*_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$)(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void _logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$(_LOGOS_SELF_TYPE_NORMAL MicroMessengerAppDelegate* _LOGOS_SELF_CONST, SEL, UIApplication *); static void (*_logos_orig$_ungrouped$NewSettingViewController$reloadTableData)(_LOGOS_SELF_TYPE_NORMAL NewSettingViewController* _LOGOS_SELF_CONST, SEL); static void _logos_method$_ungrouped$NewSettingViewController$reloadTableData(_LOGOS_SELF_TYPE_NORMAL NewSettingViewController* _LOGOS_SELF_CONST, SEL); static void _logos_method$_ungrouped$NewSettingViewController$setting(_LOGOS_SELF_TYPE_NORMAL NewSettingViewController* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$)(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static void _logos_method$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static void (*_logos_orig$_ungrouped$CMessageMgr$onRevokeMsg$)(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, CMessageWrap *); static void _logos_method$_ungrouped$CMessageMgr$onRevokeMsg$(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, CMessageWrap *); static void (*_logos_orig$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$)(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static void _logos_method$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$(_LOGOS_SELF_TYPE_NORMAL CMessageMgr* _LOGOS_SELF_CONST, SEL, NSString *, CMessageWrap *); static NSInteger (*_logos_orig$_ungrouped$WCDeviceStepObject$m7StepCount)(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static NSInteger _logos_method$_ungrouped$WCDeviceStepObject$m7StepCount(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static NSInteger (*_logos_orig$_ungrouped$WCDeviceStepObject$hkStepCount)(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static NSInteger _logos_method$_ungrouped$WCDeviceStepObject$hkStepCount(_LOGOS_SELF_TYPE_NORMAL WCDeviceStepObject* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$)(_LOGOS_SELF_TYPE_NORMAL WCRedEnvelopesLogicMgr* _LOGOS_SELF_CONST, SEL, HongBaoRes *, HongBaoReq *); static void _logos_method$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$(_LOGOS_SELF_TYPE_NORMAL WCRedEnvelopesLogicMgr* _LOGOS_SELF_CONST, SEL, HongBaoRes *, HongBaoReq *); static unsigned int _logos_method$_ungrouped$WCRedEnvelopesLogicMgr$calculateDelaySeconds(_LOGOS_SELF_TYPE_NORMAL WCRedEnvelopesLogicMgr* _LOGOS_SELF_CONST, SEL); static BOOL (*_logos_meta_orig$_ungrouped$VoipCXMgr$isCallkitAvailable)(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static BOOL _logos_meta_method$_ungrouped$VoipCXMgr$isCallkitAvailable(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static BOOL (*_logos_meta_orig$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable)(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static BOOL _logos_meta_method$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable(_LOGOS_SELF_TYPE_NORMAL Class _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$UIViewController$viewWillAppear$)(_LOGOS_SELF_TYPE_NORMAL UIViewController* _LOGOS_SELF_CONST, SEL, BOOL); static void _logos_method$_ungrouped$UIViewController$viewWillAppear$(_LOGOS_SELF_TYPE_NORMAL UIViewController* _LOGOS_SELF_CONST, SEL, BOOL); static NSString * _logos_method$_ungrouped$MMTipsViewController$text(_LOGOS_SELF_TYPE_NORMAL MMTipsViewController* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$WCTimelineMgr$modifyDataItem$notify$)(_LOGOS_SELF_TYPE_NORMAL WCTimelineMgr* _LOGOS_SELF_CONST, SEL, WCDataItem *, BOOL); static void _logos_method$_ungrouped$WCTimelineMgr$modifyDataItem$notify$(_LOGOS_SELF_TYPE_NORMAL WCTimelineMgr* _LOGOS_SELF_CONST, SEL, WCDataItem *, BOOL); static void (*_logos_orig$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$)(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static void _logos_method$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static void (*_logos_orig$_ungrouped$CGroupMgr$addCreateMsg$ContactList$)(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static void _logos_method$_ungrouped$CGroupMgr$addCreateMsg$ContactList$(_LOGOS_SELF_TYPE_NORMAL CGroupMgr* _LOGOS_SELF_CONST, SEL, id, id); static UIButton * _logos_method$_ungrouped$WCOperateFloatView$m_shareBtn(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST, SEL); static UIImageView * _logos_method$_ungrouped$WCOperateFloatView$m_lineView2(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST, SEL); static void (*_logos_orig$_ungrouped$WCOperateFloatView$showWithItemData$tipPoint$)(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST, SEL, id, struct CGPoint); static void _logos_method$_ungrouped$WCOperateFloatView$showWithItemData$tipPoint$(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST, SEL, id, struct CGPoint); static void _logos_method$_ungrouped$WCOperateFloatView$forwordTimeLine$(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST, SEL, id); +static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$WCBizUtil(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("WCBizUtil"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$CMessageWrap(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("CMessageWrap"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$MMContext(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("MMContext"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$WCTableViewNormalCellManager(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("WCTableViewNormalCellManager"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$CContactMgr(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("CContactMgr"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$MMServiceCenter(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("MMServiceCenter"); } return _klass; } #line 16 "/Users/zhudekun/mycode/github/DKWechatHelper/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm" @@ -454,8 +454,53 @@ static void _logos_method$_ungrouped$CGroupMgr$addCreateMsg$ContactList$(_LOGOS_ -static BOOL _logos_method$_ungrouped$CContact$isEqual$(_LOGOS_SELF_TYPE_NORMAL CContact* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, CContact * other) { - return [other.m_nsUsrName isEqual: self.m_nsUsrName]; + +static UIButton * _logos_method$_ungrouped$WCOperateFloatView$m_shareBtn(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd){ + static char m_shareBtnKey; + UIButton * btn = objc_getAssociatedObject(self, &m_shareBtnKey); + if (!btn) { + btn = [UIButton buttonWithType:UIButtonTypeCustom]; + [btn setTitle:@" 转发" forState:UIControlStateNormal]; + [btn addTarget:self action:@selector(forwordTimeLine:) forControlEvents:UIControlEventTouchUpInside]; + [btn setTitleColor:self.m_likeBtn.currentTitleColor forState:0]; + btn.titleLabel.font = self.m_likeBtn.titleLabel.font; + [self.m_likeBtn.superview addSubview:btn]; + NSString *base64Str = @"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABf0lEQVQ4T62UvyuFYRTHP9/JJimjMpgYTBIDd5XEIIlB9x+Q5U5+xEIZLDabUoQsNtS9G5MyXImk3EHK/3B09Ly31/X+cG9Onek5z+c5z/l+n0f8c+ivPDMrAAVJG1l7mgWWgc0saCvAKnCWBm0F2A+cpEGbBkqSmfWlQXOBZjbgYgCDwIIDXZQ0aCrQzOaAZWAIuAEugaqk00jlJOgvYChaA6aAFeBY0nuaVRqhP4CxxQ9gVZJ3lhs/oAnt1ySN51JiBWa2FMYzW+/QzNwK3cCkpM+/As1sAjgAZiRVIsWKwHZ4Wo9NwFz5W2Ba0oXvi4Cu4L2kUrBEOzAMjIXsAjw7YrbpBZ6BeUlHURNu0h7gFXC/vQRlveM34AF4AipAG1AOxu4Me0qS9uM3cqB7bRS4A3y4556SvOt6hN8mAnrtoaTdxvE40H+QEcBP2pFUS5phBASu3eiS1pPqIuCWpKssMWLAPUl+k8T4fuiSfFaZEYBFSYtZhbmfQ95Bjetfmweww0YOfToAAAAASUVORK5CYII="; + NSData *imageData = [[NSData alloc] initWithBase64EncodedString:base64Str options:NSDataBase64DecodingIgnoreUnknownCharacters]; + UIImage *image = [UIImage imageWithData:imageData ]; + [btn setImage:image forState:0]; + [btn setTintColor:self.m_likeBtn.tintColor]; + objc_setAssociatedObject(self, &m_shareBtnKey, btn, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + } + return btn; +} + + +static UIImageView * _logos_method$_ungrouped$WCOperateFloatView$m_lineView2(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd){ + static char m_lineView2Key; + UIImageView * imageView = objc_getAssociatedObject(self, &m_lineView2Key); + if (!imageView) { + imageView = [[UIImageView alloc] initWithImage:MSHookIvar(self, "m_lineView").image]; + [self.m_likeBtn.superview addSubview: imageView]; + objc_setAssociatedObject(self, &m_lineView2Key, imageView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return imageView; +} + +static void _logos_method$_ungrouped$WCOperateFloatView$showWithItemData$tipPoint$(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, id arg1, struct CGPoint arg2){ + _logos_orig$_ungrouped$WCOperateFloatView$showWithItemData$tipPoint$(self, _cmd, arg1,arg2); + if (DKHelperConfig.timeLineForwardEnable){ + self.frame = CGRectOffset(CGRectInset(self.frame, self.frame.size.width / -4, 0),self.frame.size.width / -4,0); + self.m_shareBtn.frame = CGRectOffset(self.m_likeBtn.frame, self.m_likeBtn.frame.size.width * 2, 0); + self.m_lineView2.frame = CGRectOffset(MSHookIvar(self, "m_lineView").frame, [self buttonWidth:self.m_likeBtn], 0); + } +} + + +static void _logos_method$_ungrouped$WCOperateFloatView$forwordTimeLine$(_LOGOS_SELF_TYPE_NORMAL WCOperateFloatView* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, id arg1){ + WCForwardViewController *forwardVC = [[objc_getClass("WCForwardViewController") alloc] initWithDataItem:self.m_item]; + [self.navigationController pushViewController:forwardVC animated:true]; } @@ -464,6 +509,7 @@ static BOOL _logos_method$_ungrouped$CContact$isEqual$(_LOGOS_SELF_TYPE_NORMAL C + static __attribute__((constructor)) void _logosLocalInit() { -{Class _logos_class$_ungrouped$MMServiceCenter = objc_getClass("MMServiceCenter"); Class _logos_metaclass$_ungrouped$MMServiceCenter = object_getClass(_logos_class$_ungrouped$MMServiceCenter); { char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_metaclass$_ungrouped$MMServiceCenter, @selector(defaultCenter), (IMP)&_logos_meta_method$_ungrouped$MMServiceCenter$defaultCenter, _typeEncoding); }Class _logos_class$_ungrouped$MicroMessengerAppDelegate = objc_getClass("MicroMessengerAppDelegate"); MSHookMessageEx(_logos_class$_ungrouped$MicroMessengerAppDelegate, @selector(applicationDidEnterBackground:), (IMP)&_logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$, (IMP*)&_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$);MSHookMessageEx(_logos_class$_ungrouped$MicroMessengerAppDelegate, @selector(applicationDidBecomeActive:), (IMP)&_logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$, (IMP*)&_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$);Class _logos_class$_ungrouped$NewSettingViewController = objc_getClass("NewSettingViewController"); MSHookMessageEx(_logos_class$_ungrouped$NewSettingViewController, @selector(reloadTableData), (IMP)&_logos_method$_ungrouped$NewSettingViewController$reloadTableData, (IMP*)&_logos_orig$_ungrouped$NewSettingViewController$reloadTableData);{ char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = 'v'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$NewSettingViewController, @selector(setting), (IMP)&_logos_method$_ungrouped$NewSettingViewController$setting, _typeEncoding); }Class _logos_class$_ungrouped$CMessageMgr = objc_getClass("CMessageMgr"); MSHookMessageEx(_logos_class$_ungrouped$CMessageMgr, @selector(AddEmoticonMsg:MsgWrap:), (IMP)&_logos_method$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$, (IMP*)&_logos_orig$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$);MSHookMessageEx(_logos_class$_ungrouped$CMessageMgr, @selector(onRevokeMsg:), (IMP)&_logos_method$_ungrouped$CMessageMgr$onRevokeMsg$, (IMP*)&_logos_orig$_ungrouped$CMessageMgr$onRevokeMsg$);MSHookMessageEx(_logos_class$_ungrouped$CMessageMgr, @selector(AsyncOnAddMsg:MsgWrap:), (IMP)&_logos_method$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$, (IMP*)&_logos_orig$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$);Class _logos_class$_ungrouped$WCDeviceStepObject = objc_getClass("WCDeviceStepObject"); MSHookMessageEx(_logos_class$_ungrouped$WCDeviceStepObject, @selector(m7StepCount), (IMP)&_logos_method$_ungrouped$WCDeviceStepObject$m7StepCount, (IMP*)&_logos_orig$_ungrouped$WCDeviceStepObject$m7StepCount);MSHookMessageEx(_logos_class$_ungrouped$WCDeviceStepObject, @selector(hkStepCount), (IMP)&_logos_method$_ungrouped$WCDeviceStepObject$hkStepCount, (IMP*)&_logos_orig$_ungrouped$WCDeviceStepObject$hkStepCount);Class _logos_class$_ungrouped$WCRedEnvelopesLogicMgr = objc_getClass("WCRedEnvelopesLogicMgr"); MSHookMessageEx(_logos_class$_ungrouped$WCRedEnvelopesLogicMgr, @selector(OnWCToHongbaoCommonResponse:Request:), (IMP)&_logos_method$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$, (IMP*)&_logos_orig$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$);{ char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = 'I'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$WCRedEnvelopesLogicMgr, @selector(calculateDelaySeconds), (IMP)&_logos_method$_ungrouped$WCRedEnvelopesLogicMgr$calculateDelaySeconds, _typeEncoding); }Class _logos_class$_ungrouped$VoipCXMgr = objc_getClass("VoipCXMgr"); Class _logos_metaclass$_ungrouped$VoipCXMgr = object_getClass(_logos_class$_ungrouped$VoipCXMgr); MSHookMessageEx(_logos_metaclass$_ungrouped$VoipCXMgr, @selector(isCallkitAvailable), (IMP)&_logos_meta_method$_ungrouped$VoipCXMgr$isCallkitAvailable, (IMP*)&_logos_meta_orig$_ungrouped$VoipCXMgr$isCallkitAvailable);MSHookMessageEx(_logos_metaclass$_ungrouped$VoipCXMgr, @selector(isDeviceCallkitAvailable), (IMP)&_logos_meta_method$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable, (IMP*)&_logos_meta_orig$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable);Class _logos_class$_ungrouped$UIViewController = objc_getClass("UIViewController"); MSHookMessageEx(_logos_class$_ungrouped$UIViewController, @selector(viewWillAppear:), (IMP)&_logos_method$_ungrouped$UIViewController$viewWillAppear$, (IMP*)&_logos_orig$_ungrouped$UIViewController$viewWillAppear$);Class _logos_class$_ungrouped$MMTipsViewController = objc_getClass("MMTipsViewController"); { char _typeEncoding[1024]; unsigned int i = 0; memcpy(_typeEncoding + i, @encode(NSString *), strlen(@encode(NSString *))); i += strlen(@encode(NSString *)); _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$MMTipsViewController, @selector(text), (IMP)&_logos_method$_ungrouped$MMTipsViewController$text, _typeEncoding); }Class _logos_class$_ungrouped$WCTimelineMgr = objc_getClass("WCTimelineMgr"); MSHookMessageEx(_logos_class$_ungrouped$WCTimelineMgr, @selector(modifyDataItem:notify:), (IMP)&_logos_method$_ungrouped$WCTimelineMgr$modifyDataItem$notify$, (IMP*)&_logos_orig$_ungrouped$WCTimelineMgr$modifyDataItem$notify$);Class _logos_class$_ungrouped$CGroupMgr = objc_getClass("CGroupMgr"); MSHookMessageEx(_logos_class$_ungrouped$CGroupMgr, @selector(addChatMemberNeedVerifyMsg:ContactList:), (IMP)&_logos_method$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$, (IMP*)&_logos_orig$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$);MSHookMessageEx(_logos_class$_ungrouped$CGroupMgr, @selector(addCreateMsg:ContactList:), (IMP)&_logos_method$_ungrouped$CGroupMgr$addCreateMsg$ContactList$, (IMP*)&_logos_orig$_ungrouped$CGroupMgr$addCreateMsg$ContactList$);Class _logos_class$_ungrouped$CContact = objc_getClass("CContact"); MSHookMessageEx(_logos_class$_ungrouped$CContact, @selector(isEqual:), (IMP)&_logos_method$_ungrouped$CContact$isEqual$, (IMP*)&_logos_orig$_ungrouped$CContact$isEqual$);} } -#line 441 "/Users/zhudekun/mycode/github/DKWechatHelper/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm" +{Class _logos_class$_ungrouped$MMServiceCenter = objc_getClass("MMServiceCenter"); Class _logos_metaclass$_ungrouped$MMServiceCenter = object_getClass(_logos_class$_ungrouped$MMServiceCenter); { char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_metaclass$_ungrouped$MMServiceCenter, @selector(defaultCenter), (IMP)&_logos_meta_method$_ungrouped$MMServiceCenter$defaultCenter, _typeEncoding); }Class _logos_class$_ungrouped$MicroMessengerAppDelegate = objc_getClass("MicroMessengerAppDelegate"); MSHookMessageEx(_logos_class$_ungrouped$MicroMessengerAppDelegate, @selector(applicationDidEnterBackground:), (IMP)&_logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$, (IMP*)&_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidEnterBackground$);MSHookMessageEx(_logos_class$_ungrouped$MicroMessengerAppDelegate, @selector(applicationDidBecomeActive:), (IMP)&_logos_method$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$, (IMP*)&_logos_orig$_ungrouped$MicroMessengerAppDelegate$applicationDidBecomeActive$);Class _logos_class$_ungrouped$NewSettingViewController = objc_getClass("NewSettingViewController"); MSHookMessageEx(_logos_class$_ungrouped$NewSettingViewController, @selector(reloadTableData), (IMP)&_logos_method$_ungrouped$NewSettingViewController$reloadTableData, (IMP*)&_logos_orig$_ungrouped$NewSettingViewController$reloadTableData);{ char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = 'v'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$NewSettingViewController, @selector(setting), (IMP)&_logos_method$_ungrouped$NewSettingViewController$setting, _typeEncoding); }Class _logos_class$_ungrouped$CMessageMgr = objc_getClass("CMessageMgr"); MSHookMessageEx(_logos_class$_ungrouped$CMessageMgr, @selector(AddEmoticonMsg:MsgWrap:), (IMP)&_logos_method$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$, (IMP*)&_logos_orig$_ungrouped$CMessageMgr$AddEmoticonMsg$MsgWrap$);MSHookMessageEx(_logos_class$_ungrouped$CMessageMgr, @selector(onRevokeMsg:), (IMP)&_logos_method$_ungrouped$CMessageMgr$onRevokeMsg$, (IMP*)&_logos_orig$_ungrouped$CMessageMgr$onRevokeMsg$);MSHookMessageEx(_logos_class$_ungrouped$CMessageMgr, @selector(AsyncOnAddMsg:MsgWrap:), (IMP)&_logos_method$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$, (IMP*)&_logos_orig$_ungrouped$CMessageMgr$AsyncOnAddMsg$MsgWrap$);Class _logos_class$_ungrouped$WCDeviceStepObject = objc_getClass("WCDeviceStepObject"); MSHookMessageEx(_logos_class$_ungrouped$WCDeviceStepObject, @selector(m7StepCount), (IMP)&_logos_method$_ungrouped$WCDeviceStepObject$m7StepCount, (IMP*)&_logos_orig$_ungrouped$WCDeviceStepObject$m7StepCount);MSHookMessageEx(_logos_class$_ungrouped$WCDeviceStepObject, @selector(hkStepCount), (IMP)&_logos_method$_ungrouped$WCDeviceStepObject$hkStepCount, (IMP*)&_logos_orig$_ungrouped$WCDeviceStepObject$hkStepCount);Class _logos_class$_ungrouped$WCRedEnvelopesLogicMgr = objc_getClass("WCRedEnvelopesLogicMgr"); MSHookMessageEx(_logos_class$_ungrouped$WCRedEnvelopesLogicMgr, @selector(OnWCToHongbaoCommonResponse:Request:), (IMP)&_logos_method$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$, (IMP*)&_logos_orig$_ungrouped$WCRedEnvelopesLogicMgr$OnWCToHongbaoCommonResponse$Request$);{ char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = 'I'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$WCRedEnvelopesLogicMgr, @selector(calculateDelaySeconds), (IMP)&_logos_method$_ungrouped$WCRedEnvelopesLogicMgr$calculateDelaySeconds, _typeEncoding); }Class _logos_class$_ungrouped$VoipCXMgr = objc_getClass("VoipCXMgr"); Class _logos_metaclass$_ungrouped$VoipCXMgr = object_getClass(_logos_class$_ungrouped$VoipCXMgr); MSHookMessageEx(_logos_metaclass$_ungrouped$VoipCXMgr, @selector(isCallkitAvailable), (IMP)&_logos_meta_method$_ungrouped$VoipCXMgr$isCallkitAvailable, (IMP*)&_logos_meta_orig$_ungrouped$VoipCXMgr$isCallkitAvailable);MSHookMessageEx(_logos_metaclass$_ungrouped$VoipCXMgr, @selector(isDeviceCallkitAvailable), (IMP)&_logos_meta_method$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable, (IMP*)&_logos_meta_orig$_ungrouped$VoipCXMgr$isDeviceCallkitAvailable);Class _logos_class$_ungrouped$UIViewController = objc_getClass("UIViewController"); MSHookMessageEx(_logos_class$_ungrouped$UIViewController, @selector(viewWillAppear:), (IMP)&_logos_method$_ungrouped$UIViewController$viewWillAppear$, (IMP*)&_logos_orig$_ungrouped$UIViewController$viewWillAppear$);Class _logos_class$_ungrouped$MMTipsViewController = objc_getClass("MMTipsViewController"); { char _typeEncoding[1024]; unsigned int i = 0; memcpy(_typeEncoding + i, @encode(NSString *), strlen(@encode(NSString *))); i += strlen(@encode(NSString *)); _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$MMTipsViewController, @selector(text), (IMP)&_logos_method$_ungrouped$MMTipsViewController$text, _typeEncoding); }Class _logos_class$_ungrouped$WCTimelineMgr = objc_getClass("WCTimelineMgr"); MSHookMessageEx(_logos_class$_ungrouped$WCTimelineMgr, @selector(modifyDataItem:notify:), (IMP)&_logos_method$_ungrouped$WCTimelineMgr$modifyDataItem$notify$, (IMP*)&_logos_orig$_ungrouped$WCTimelineMgr$modifyDataItem$notify$);Class _logos_class$_ungrouped$CGroupMgr = objc_getClass("CGroupMgr"); MSHookMessageEx(_logos_class$_ungrouped$CGroupMgr, @selector(addChatMemberNeedVerifyMsg:ContactList:), (IMP)&_logos_method$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$, (IMP*)&_logos_orig$_ungrouped$CGroupMgr$addChatMemberNeedVerifyMsg$ContactList$);MSHookMessageEx(_logos_class$_ungrouped$CGroupMgr, @selector(addCreateMsg:ContactList:), (IMP)&_logos_method$_ungrouped$CGroupMgr$addCreateMsg$ContactList$, (IMP*)&_logos_orig$_ungrouped$CGroupMgr$addCreateMsg$ContactList$);Class _logos_class$_ungrouped$WCOperateFloatView = objc_getClass("WCOperateFloatView"); { char _typeEncoding[1024]; unsigned int i = 0; memcpy(_typeEncoding + i, @encode(UIButton *), strlen(@encode(UIButton *))); i += strlen(@encode(UIButton *)); _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$WCOperateFloatView, @selector(m_shareBtn), (IMP)&_logos_method$_ungrouped$WCOperateFloatView$m_shareBtn, _typeEncoding); }{ char _typeEncoding[1024]; unsigned int i = 0; memcpy(_typeEncoding + i, @encode(UIImageView *), strlen(@encode(UIImageView *))); i += strlen(@encode(UIImageView *)); _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$WCOperateFloatView, @selector(m_lineView2), (IMP)&_logos_method$_ungrouped$WCOperateFloatView$m_lineView2, _typeEncoding); }MSHookMessageEx(_logos_class$_ungrouped$WCOperateFloatView, @selector(showWithItemData:tipPoint:), (IMP)&_logos_method$_ungrouped$WCOperateFloatView$showWithItemData$tipPoint$, (IMP*)&_logos_orig$_ungrouped$WCOperateFloatView$showWithItemData$tipPoint$);{ char _typeEncoding[1024]; unsigned int i = 0; _typeEncoding[i] = 'v'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = ':'; i += 1; _typeEncoding[i] = '@'; i += 1; _typeEncoding[i] = '\0'; class_addMethod(_logos_class$_ungrouped$WCOperateFloatView, @selector(forwordTimeLine:), (IMP)&_logos_method$_ungrouped$WCOperateFloatView$forwordTimeLine$, _typeEncoding); }} } +#line 487 "/Users/zhudekun/mycode/github/DKWechatHelper/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm" diff --git a/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm b/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm index 8a10dc1..af090bd 100644 --- a/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm +++ b/dkhelper/dkhelperDylib/Logos/dkhelperDylib.xm @@ -426,15 +426,61 @@ } %end -%hook CContact -- (BOOL)isEqual:(CContact *)other -{ - return [other.m_nsUsrName isEqual: self.m_nsUsrName]; +%hook WCOperateFloatView + +%new +-(UIButton *)m_shareBtn{ + static char m_shareBtnKey; + UIButton * btn = objc_getAssociatedObject(self, &m_shareBtnKey); + if (!btn) { + btn = [UIButton buttonWithType:UIButtonTypeCustom]; + [btn setTitle:@" 转发" forState:UIControlStateNormal]; + [btn addTarget:self action:@selector(forwordTimeLine:) forControlEvents:UIControlEventTouchUpInside]; + [btn setTitleColor:self.m_likeBtn.currentTitleColor forState:0]; + btn.titleLabel.font = self.m_likeBtn.titleLabel.font; + [self.m_likeBtn.superview addSubview:btn]; + NSString *base64Str = @"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABf0lEQVQ4T62UvyuFYRTHP9/JJimjMpgYTBIDd5XEIIlB9x+Q5U5+xEIZLDabUoQsNtS9G5MyXImk3EHK/3B09Ly31/X+cG9Onek5z+c5z/l+n0f8c+ivPDMrAAVJG1l7mgWWgc0saCvAKnCWBm0F2A+cpEGbBkqSmfWlQXOBZjbgYgCDwIIDXZQ0aCrQzOaAZWAIuAEugaqk00jlJOgvYChaA6aAFeBY0nuaVRqhP4CxxQ9gVZJ3lhs/oAnt1ySN51JiBWa2FMYzW+/QzNwK3cCkpM+/As1sAjgAZiRVIsWKwHZ4Wo9NwFz5W2Ba0oXvi4Cu4L2kUrBEOzAMjIXsAjw7YrbpBZ6BeUlHURNu0h7gFXC/vQRlveM34AF4AipAG1AOxu4Me0qS9uM3cqB7bRS4A3y4556SvOt6hN8mAnrtoaTdxvE40H+QEcBP2pFUS5phBASu3eiS1pPqIuCWpKssMWLAPUl+k8T4fuiSfFaZEYBFSYtZhbmfQ95Bjetfmweww0YOfToAAAAASUVORK5CYII="; + NSData *imageData = [[NSData alloc] initWithBase64EncodedString:base64Str options:NSDataBase64DecodingIgnoreUnknownCharacters]; + UIImage *image = [UIImage imageWithData:imageData ]; + [btn setImage:image forState:0]; + [btn setTintColor:self.m_likeBtn.tintColor]; + objc_setAssociatedObject(self, &m_shareBtnKey, btn, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + } + return btn; } + +%new +-(UIImageView *)m_lineView2{ + static char m_lineView2Key; + UIImageView * imageView = objc_getAssociatedObject(self, &m_lineView2Key); + if (!imageView) { + imageView = [[UIImageView alloc] initWithImage:MSHookIvar(self, "m_lineView").image]; + [self.m_likeBtn.superview addSubview: imageView]; + objc_setAssociatedObject(self, &m_lineView2Key, imageView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + return imageView; +} + +- (void)showWithItemData:(id)arg1 tipPoint:(struct CGPoint)arg2{ + %orig(arg1,arg2); + if (DKHelperConfig.timeLineForwardEnable){ + self.frame = CGRectOffset(CGRectInset(self.frame, self.frame.size.width / -4, 0),self.frame.size.width / -4,0); + self.m_shareBtn.frame = CGRectOffset(self.m_likeBtn.frame, self.m_likeBtn.frame.size.width * 2, 0); + self.m_lineView2.frame = CGRectOffset(MSHookIvar(self, "m_lineView").frame, [self buttonWidth:self.m_likeBtn], 0); + } +} + +%new +- (void)forwordTimeLine:(id)arg1{ + WCForwardViewController *forwardVC = [[objc_getClass("WCForwardViewController") alloc] initWithDataItem:self.m_item]; + [self.navigationController pushViewController:forwardVC animated:true]; +} + %end - - - - - +//%hook ScanQRCodeResultsMgr +//- (void)retryRequetScanResult:(id)arg1 viewController:(id)arg2{ +// %orig; +//} +//%end diff --git a/dkhelper/dkhelperDylib/MyUtils/DKHelperConfig.h b/dkhelper/dkhelperDylib/MyUtils/DKHelperConfig.h index dd6ecd0..b92773d 100644 --- a/dkhelper/dkhelperDylib/MyUtils/DKHelperConfig.h +++ b/dkhelper/dkhelperDylib/MyUtils/DKHelperConfig.h @@ -77,6 +77,9 @@ NS_ASSUME_NONNULL_BEGIN /// 启用callkit +(BOOL)callKitEnable; +(void)setCallKitEnable:(BOOL)value; +/// 启用朋友圈转发 ++(BOOL)timeLineForwardEnable; ++(void)setTimeLineForwardEnable:(BOOL)value; /// 启用积攒助手 +(BOOL)likeCommentEnable; diff --git a/dkhelper/dkhelperDylib/wechatHeaders/WCUIAlertView.h b/dkhelper/dkhelperDylib/wechatHeaders/WCUIAlertView.h index 78b2e0d..14f7b3e 100644 --- a/dkhelper/dkhelperDylib/wechatHeaders/WCUIAlertView.h +++ b/dkhelper/dkhelperDylib/wechatHeaders/WCUIAlertView.h @@ -47,3 +47,19 @@ @end +@interface WCUIActionSheet : UIWindow + +- (void)addDestructiveButtonTitle:(id)arg1 target:(id)arg2 sel:(SEL)arg3; +- (void)addCancelBtnTitle:(id)arg1 target:(id)arg2 sel:(SEL)arg3; +- (void)addBtnTitle:(id)arg1 target:(id)arg2 sel:(SEL)arg3; +- (id)initWithTitle:(id)arg1; +- (id)init; +- (void)showInView:(id)arg1; + +@end + +//WCUIActionSheet *actionSheet = [[objc_getClass("WCUIActionSheet") alloc] initWithTitle:@"朋友圈转发"]; +//for (NSString* str in @[@"转发给好友",@"转发到朋友圈"]){ +// [actionSheet addBtnTitle:str target:self sel:@selector(startForword:)]; +//} +//[actionSheet showInView:self]; diff --git a/dkhelper/dkhelperDylib/wechatHeaders/WechatHeaders.h b/dkhelper/dkhelperDylib/wechatHeaders/WechatHeaders.h index e3cc896..334c44a 100644 --- a/dkhelper/dkhelperDylib/wechatHeaders/WechatHeaders.h +++ b/dkhelper/dkhelperDylib/wechatHeaders/WechatHeaders.h @@ -321,6 +321,13 @@ @end + +@interface WCContentItem : NSObject +@property(retain, nonatomic) NSString *linkUrl; +@property(nonatomic) int type; +@property(retain, nonatomic) NSMutableArray *mediaList; +@end + /// 朋友圈数据 @interface WCDataItem : NSObject @property (retain, nonatomic) NSMutableArray * likeUsers; @@ -329,9 +336,18 @@ @property (retain, nonatomic) NSMutableArray * commentUsers; @property (nonatomic) int commentCount; @property(nonatomic,assign) BOOL likeFlag; -@property(nonatomic) unsigned int createtime; +@property(nonatomic) unsigned int createtime; +@property(retain, nonatomic) NSString *contentDesc; +@property(retain, nonatomic) WCContentItem *contentObj; @end +@interface WCNewCommitViewController : MMUIViewController +- (id)initWithSightDraft:(id)arg1; +@end +@interface WCForwardViewController : WCNewCommitViewController +- (id)initWithDataItem:(id)arg1 sessionID:(id)arg2; +- (id)initWithDataItem:(id)arg1; +@end @interface SettingUtil : NSObject @@ -457,6 +473,29 @@ - (void)setLabelText:(id)arg1; - (void)ShowTipView:(id)arg1 Title:(id)arg2 Delay:(double)arg3; +@end + +@interface WCOperateFloatView : UIView{ + UIImageView *m_lineView; +} + +@property(nonatomic) __weak UINavigationController *navigationController; +@property(readonly, nonatomic) UIButton *m_commentBtn; +@property(readonly, nonatomic) UIButton *m_likeBtn; +@property(nonatomic,strong) UIButton *m_shareBtn; +@property(nonatomic,strong)UIImageView *m_lineView2; +@property(readonly, nonatomic) WCDataItem *m_item; +- (void)onLikeItem:(id)arg1; +- (void)hide; +- (void)animationDidStopHide; +- (void)animationDidStop; +- (void)showWithItemData:(id)arg1 tipPoint:(struct CGPoint)arg2; +- (id)init; +- (double)protectWidth:(double)arg1; +- (double)buttonWidth:(id)arg1; +/// 朋友圈转发 +- (void)forwordTimeLine:(id)arg1; + @end #endif /* WechatHeaders_h */