iOS逆向 非群主@所有人

2024-05-17 04:48
文章标签 ios 逆向 所有人 群主

本文主要是介绍iOS逆向 非群主@所有人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS 逆向开发交流群

这里写图片描述

微信中只有群主才有@所有人的权限,下面用iOS逆向实现一下非群主@所有人的功能。

1、Makefile文件代码如下:

THEOS_DEVICE_IP = 192.123.10.123
TARGET = iphone:latest:8.0
ARCHS = armv7 arm64include theos/makefiles/common.mkTWEAK_NAME = weichatselectall
weichatselectall_FILES = Tweak.xm
weichatselectall_FRAMEWORKS = UIKit CoreFoundation Foundation CoreGraphics QuartzCore Securityinclude $(THEOS_MAKE_PATH)/tweak.mkafter-install::install.exec "killall -9 WeChat"

2、Tweak.xm 代码如下:

#import <UIKit/UIKit.h>
#import "WeChatRedEnvelop.h"
#import <Foundation/Foundation.h>%hook NewMainFrameViewController- (void)viewDidLoad
{%orig;UIButton *transparentButton = [UIButton buttonWithType:UIButtonTypeCustom];transparentButton.frame = CGRectMake(0, 64, 44, 44);transparentButton.layer.cornerRadius = 8;transparentButton.clipsToBounds = YES;transparentButton.backgroundColor = [UIColor blueColor];[transparentButton addTarget:self action:@selector(clickImage) forControlEvents:UIControlEventTouchUpInside];[((UIViewController *)self).view addSubview:transparentButton];
}%new
- (void)clickImage
{UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"请输入文本" message:@"" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定",nil];[alert setAlertViewStyle:UIAlertViewStylePlainTextInput];[alert show];
}%new
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{if(buttonIndex == 1) {UITextField *field = [alertView textFieldAtIndex:0];NSLog(@"txt ====  %@",field.text);NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;NSString *plistPath =  [path stringByAppendingPathComponent:@"data.plist"];NSMutableArray *roomArray = [NSMutableArray arrayWithContentsOfFile:plistPath];NSLog(@"roomArray ===== %@",roomArray);CMessageMgr *messager = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CMessageMgr") class]];CMessageWrap *wrap = [[%c(CMessageWrap) alloc] initWithMsgType:1];for(NSString *roomID in roomArray) {NSLog(@"顺序测试-----%@",roomID);NSTimeInterval time = [[NSDate date] timeIntervalSince1970];long long int date = (long long int)time;NSString *name =[%c(SettingUtil) getLocalUsrName:0];wrap.m_nsFromUsr = name;wrap.m_nsContent = [NSString stringWithFormat:@"#所有人 %@",field.text];wrap.m_nsToUsr = roomID;wrap.m_uiCreateTime = date;wrap.m_uiStatus = 1;wrap.m_nsMsgSource = nil;[messager AddMsg:roomID MsgWrap:wrap];}}
}%end%hook CMessageMgr- (void)AsyncOnAddMsg:(id)arg1 MsgWrap:(CMessageWrap *)wrap{NSLog(@"接收到消息%@",wrap);NSString *fromUser = wrap.m_nsFromUsr ;if ([fromUser  hasSuffix:@"@chatroom"]) {NSLog(@"chatroom found");NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;NSString *plistPath =  [path stringByAppendingPathComponent:@"data.plist"];NSMutableArray *arrayM = [NSMutableArray array];NSArray *storArray = [NSArray arrayWithContentsOfFile:plistPath];[arrayM addObjectsFromArray:storArray];if (![arrayM containsObject:fromUser]){[arrayM addObject:fromUser];NSLog(@"存储数据");NSLog(@"arrayM ==== %@",arrayM);[arrayM writeToFile:plistPath atomically:YES];}}%orig;
}- (void)AddMsg:(id)arg1 MsgWrap:(CMessageWrap *)wrap
{NSLog(@"time ===%ld",(unsigned long)wrap.m_uiCreateTime);int type = wrap.m_uiMessageType;NSString *knFromUser = wrap.m_nsFromUsr;NSString *knToUsr = wrap.m_nsToUsr;NSString *knContent = wrap.m_nsContent;NSString *knSource = wrap.m_nsMsgSource;NSString *message = [NSString stringWithFormat:@"type=%d--knFromUser=%@--knToUsr=%@--knContent=%@--knSource=%@",type,knFromUser,knToUsr,knContent,knSource];CContactMgr *contactManager = [[objc_getClass("MMServiceCenter") defaultCenter] getService:[objc_getClass("CContactMgr") class]];CContact *selfContact = [contactManager getSelfContact];NSLog(@"message =======  %@",message);if (type == 1) {if ([knFromUser isEqualToString:selfContact.m_nsUsrName]) {if ([knToUsr hasSuffix:@"@chatroom"]) {NSLog(@"selfContact ==== %@",selfContact);if( knSource == nil){NSString *aaa = [selfContact.m_nsUsrName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSLog(@"length=%lu,%@",(unsigned long)aaa.length,aaa);NSArray *result = (NSArray *)[objc_getClass("CContact") getChatRoomMemberWithoutMyself:knToUsr];if ([knContent hasPrefix:@"#所有人"]){ // 前缀要求NSString *subStr = [knContent substringFromIndex:4];NSMutableString *string = [NSMutableString string];[result enumerateObjectsUsingBlock:^(CContact *obj, NSUInteger idx, BOOL * _Nonnull stop) {[string appendFormat:@",%@",obj.m_nsUsrName];}];NSString *sourceString = [string substringFromIndex:1];wrap.m_uiStatus = 3;wrap.m_nsContent = subStr;wrap.m_nsMsgSource = [NSString stringWithFormat:@"<msgsource><atuserlist>%@</atuserlist></msgsource>",sourceString];int type2 = wrap.m_uiMessageType;NSString *knFromUser2 = wrap.m_nsFromUsr;NSString *knToUsr2 = wrap.m_nsToUsr;NSString *knContent2 = wrap.m_nsContent;NSString *knSource2 = wrap.m_nsMsgSource;NSString *message2 = [NSString stringWithFormat:@"type=%d--knFromUser=%@--knToUsr=%@--knContent=%@--knSource=%@",type2,knFromUser2,knToUsr2,knContent2,knSource2];NSLog(@"message2 =======  %@",message2);}}}}}NSLog(@"wrap =====  %@,=====%@",wrap.m_nsContent,wrap);%orig;//    NSString *userName = wrap.m_nsUsrName;}%end

3、WeChatRedEnvelop.h 代码如下:

#pragma mark - Util@interface WCBizUtil : NSObject+ (id)dictionaryWithDecodedComponets:(id)arg1 separator:(id)arg2;@end@interface SKBuiltinBuffer_t : NSObject@property(retain, nonatomic) NSData *buffer; // @dynamic buffer;@end#pragma mark - Message@interface WCPayInfoItem: NSObject@property(retain, nonatomic) NSString *m_c2cNativeUrl;@end@interface CMessageWrap : NSObject@property (retain, nonatomic) WCPayInfoItem *m_oWCPayInfoItem;
@property (assign, nonatomic) NSUInteger m_uiMesLocalID;
@property (retain, nonatomic) NSString* m_nsFromUsr;            ///< 发信人,可能是群或个人
@property (retain, nonatomic) NSString* m_nsToUsr;              ///< 收信人
@property (assign, nonatomic) NSUInteger m_uiStatus;
@property (retain, nonatomic) NSString* m_nsContent;            ///< 消息内容
@property (retain, nonatomic) NSString* m_nsRealChatUsr;        ///< 群消息的发信人,具体是群里的哪个人
@property (assign, nonatomic) NSUInteger m_uiMessageType;
@property (assign, nonatomic) long long m_n64MesSvrID;
@property (assign, nonatomic) NSUInteger m_uiCreateTime;
@property (retain, nonatomic) NSString *m_nsDesc;
@property (retain, nonatomic) NSString *m_nsAppExtInfo;
@property (assign, nonatomic) NSUInteger m_uiAppDataSize;
@property (assign, nonatomic) NSUInteger m_uiAppMsgInnerType;
@property (retain, nonatomic) NSString *m_nsShareOpenUrl;
@property (retain, nonatomic) NSString *m_nsShareOriginUrl;
@property (retain, nonatomic) NSString *m_nsJsAppId;
@property (retain, nonatomic) NSString *m_nsPrePublishId;
@property (retain, nonatomic) NSString *m_nsAppID;
@property (retain, nonatomic) NSString *m_nsAppName;
@property (retain, nonatomic) NSString *m_nsThumbUrl;
@property (retain, nonatomic) NSString *m_nsAppMediaUrl;
@property (retain, nonatomic) NSData *m_dtThumbnail;
@property (retain, nonatomic) NSString *m_nsTitle;
@property (retain, nonatomic) NSString *m_nsMsgSource;- (id)initWithMsgType:(long long)arg1;
+ (_Bool)isSenderFromMsgWrap:(id)arg1;//- (void)AddMsg:(id)arg1 MsgWrap:(CMessageWrap *)wrap;
//- (void)AsyncOnAddMsg:(id)arg1 MsgWrap:(CMessageWrap *)wrap;@end@interface CMessageMgr : NSObject- (void)AddMsg:(id)arg1 MsgWrap:(CMessageWrap *)wrap;- (void)AddLocalMsg:(id)arg1 MsgWrap:(id)arg2 fixTime:(_Bool)arg3 NewMsgArriveNotify:(_Bool)arg4;@end@interface MMServiceCenter : NSObject+ (instancetype)defaultCenter;
- (id)getService:(Class)service;@end@interface MMLanguageMgr: NSObject- (id)getStringForCurLanguage:(id)arg1 defaultTo:(id)arg2;@end#pragma mark - RedEnvelop@interface WCRedEnvelopesControlData : NSObject@property(retain, nonatomic) CMessageWrap *m_oSelectedMessageWrap;@end@interface WCRedEnvelopesLogicMgr: NSObject- (void)OpenRedEnvelopesRequest:(id)params;
- (void)ReceiverQueryRedEnvelopesRequest:(id)arg1;
- (void)GetHongbaoBusinessRequest:(id)arg1 CMDID:(unsigned int)arg2 OutputType:(unsigned int)arg3;/** Added Methods */
- (unsigned int)calculateDelaySeconds;@end@interface HongBaoRes : NSObject@property(retain, nonatomic) SKBuiltinBuffer_t *retText; // @dynamic retText;
@property(nonatomic) int cgiCmdid; // @dynamic cgiCmdid;@end@interface HongBaoReq : NSObject@property(retain, nonatomic) SKBuiltinBuffer_t *reqText; // @dynamic reqText;@end#pragma mark - Contact@interface CContact: NSObject <NSCoding>@property(retain, nonatomic) NSString *m_nsUsrName;
@property(retain, nonatomic) NSString *m_nsHeadImgUrl;
@property(retain, nonatomic) NSString *m_nsNickName;- (id)getContactDisplayName;+ (id)getChatRoomMemberWithoutMyself:(id)arg1;@end@interface CContactMgr : NSObject- (id)getSelfContact;
- (id)getContactByName:(id)arg1;
- (id)getContactForSearchByName:(id)arg1;
- (_Bool)getContactsFromServer:(id)arg1;
- (_Bool)isInContactList:(id)arg1;
- (_Bool)addLocalContact:(id)arg1 listType:(unsigned int)arg2;@end#pragma mark - QRCode@interface ScanQRCodeLogicController: NSObject@property(nonatomic) unsigned int fromScene;
- (id)initWithViewController:(id)arg1 CodeType:(int)arg2;
- (void)tryScanOnePicture:(id)arg1;
- (void)doScanQRCode:(id)arg1;
- (void)showScanResult;@end@interface NewQRCodeScanner: NSObject- (id)initWithDelegate:(id)arg1 CodeType:(int)arg2;
- (void)notifyResult:(id)arg1 type:(id)arg2 version:(int)arg3;@end#pragma mark - MMTableView@interface MMTableViewInfo- (id)getTableView;
- (void)clearAllSection;
- (void)addSection:(id)arg1;
- (void)insertSection:(id)arg1 At:(unsigned int)arg2;@end@interface MMTableViewSectionInfo+ (id)sectionInfoDefaut;
+ (id)sectionInfoHeader:(id)arg1;
+ (id)sectionInfoHeader:(id)arg1 Footer:(id)arg2;
- (void)addCell:(id)arg1;@end@interface MMTableViewCellInfo+ (id)normalCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 accessoryType:(long long)arg4;
+ (id)switchCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 on:(_Bool)arg4;
+ (id)normalCellForSel:(SEL)arg1 target:(id)arg2 title:(id)arg3 rightValue:(id)arg4 accessoryType:(long long)arg5;
+ (id)normalCellForTitle:(id)arg1 rightValue:(id)arg2;
+ (id)urlCellForTitle:(id)arg1 url:(id)arg2;@end@interface MMTableView: UITableView@end#pragma mark - UI
@interface MMUICommonUtil : NSObject+ (id)getBarButtonWithTitle:(id)arg1 target:(id)arg2 action:(SEL)arg3 style:(int)arg4;@end@interface MMLoadingView : UIView@property(retain, nonatomic) UILabel *m_label; // @synthesize m_label;
@property (assign, nonatomic) BOOL m_bIgnoringInteractionEventsWhenLoading; // @synthesize m_bIgnoringInteractionEventsWhenLoading;- (void)setFitFrame:(long long)arg1;
- (void)startLoading;
- (void)stopLoading;
- (void)stopLoadingAndShowError:(id)arg1;
- (void)stopLoadingAndShowOK:(id)arg1;@end@interface MMWebViewController: NSObject- (id)initWithURL:(id)arg1 presentModal:(_Bool)arg2 extraInfo:(id)arg3;@end@protocol ContactSelectViewDelegate <NSObject>- (void)onSelectContact:(CContact *)arg1;@end@interface ContactSelectView : UIView@property(nonatomic) unsigned int m_uiGroupScene; // @synthesize m_uiGroupScene;
@property(nonatomic) _Bool m_bMultiSelect; // @synthesize m_bMultiSelect;
@property(retain, nonatomic) NSMutableDictionary *m_dicMultiSelect; // @synthesize m_dicMultiSelect;- (id)initWithFrame:(struct CGRect)arg1 delegate:(id)arg2;
- (void)initData:(unsigned int)arg1;
- (void)initView;
- (void)addSelect:(id)arg1;@end@interface ContactsDataLogic : NSObject@property(nonatomic) unsigned int m_uiScene; // @synthesize m_uiScene;@end@interface MMUINavigationController : UINavigationController@end#pragma mark - UtilCategory@interface NSMutableDictionary (SafeInsert)- (void)safeSetObject:(id)arg1 forKey:(id)arg2;@end@interface NSDictionary (NSDictionary_SafeJSON)- (id)arrayForKey:(id)arg1;
- (id)dictionaryForKey:(id)arg1;
- (double)doubleForKey:(id)arg1;
- (float)floatForKey:(id)arg1;
- (long long)int64ForKey:(id)arg1;
- (long long)integerForKey:(id)arg1;
- (id)stringForKey:(id)arg1;@end@interface NSString (NSString_SBJSON)- (id)JSONArray;
- (id)JSONDictionary;
- (id)JSONValue;@end#pragma mark - UICategory@interface UINavigationController (LogicController)- (void)PushViewController:(id)arg1 animated:(_Bool)arg2;@end@interface MMUIViewController : UIViewController- (void)startLoadingBlocked;
- (void)startLoadingNonBlock;
- (void)startLoadingWithText:(NSString *)text;
- (void)stopLoading;
- (void)stopLoadingWithFailText:(NSString *)text;
- (void)stopLoadingWithOKText:(NSString *)text;@end@interface NewSettingViewController: MMUIViewController- (void)reloadTableData;@end@interface ContactInfoViewController : MMUIViewController@property(retain, nonatomic) CContact *m_contact; // @synthesize m_contact;@end@protocol MultiSelectContactsViewControllerDelegate <NSObject>
- (void)onMultiSelectContactReturn:(NSArray *)arg1;@optional
- (int)getFTSCommonScene;
- (void)onMultiSelectContactCancelForSns;
- (void)onMultiSelectContactReturnForSns:(NSArray *)arg1;
@end@interface MultiSelectContactsViewController : UIViewController@property(nonatomic) _Bool m_bKeepCurViewAfterSelect; // @synthesize m_bKeepCurViewAfterSelect=_m_bKeepCurViewAfterSelect;
@property(nonatomic) unsigned int m_uiGroupScene; // @synthesize m_uiGroupScene;@property(nonatomic, weak) id <MultiSelectContactsViewControllerDelegate> m_delegate; // @synthesize m_delegate;@end@interface SettingUtil : NSObject+ (NSString *)getLocalUsrName:(NSInteger)arg1;@end//@interface NewMainFrameViewController : UIViewController
//    
//- (void)AddMsg:(id)arg1 MsgWrap:(CMessageWrap *)wrap;
//    
//@end

Demo下载

这篇关于iOS逆向 非群主@所有人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/995480

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

转:android ro.debuggable属性调试修改(mprop逆向)

android ro属性调试修改(mprop逆向)      大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出

某里227逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解阿里227版本滑块参数n的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。 一

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

摘要 剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大提高工作效率。 但是,iPhone 如何和 Wind

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

我的第一次份实习工作-iOS实习生-第三个月

第三个月 这个月有一个考核项目,是一个电子书阅读器,组长说很重要,是我的实习考核项目。 我的项目XTReader,这是我参考网上的一些代码,和模仿咪咕阅读做的,功能还不完善,数据的部分是用聚合数据做的。要收费的。   还有阅读页面,基本功能实现了一下。使用了autolayout,自适应布局,也是第一次用网络,第一次用数据库,第一次用自动布局。还有很多不足。 做了一周多,有个问题一直没

我的第一次份实习工作-iOS实习生-公司使用过的软件

bittorrentsync 素材,文件同步软件 cornerstone svn 软件开发合作 mark man 测量坐标的软件 SQLLite Manager 数据库操作软件

我的第一次份实习工作-iOS实习生-第二个月

第二个月 来公司过了一个月了。每天早上9点上班,到晚上6.30下班,上下班要指纹打卡,第一个月忘了打卡好多次(),然后还要去补打卡单。公司这边还安排了,工资卡办理,招商银行卡。开了一次新员工大会,认识了公司的一些过往,公司的要求等,还加了一下公司的企业QQ,还有其他的羽毛球群,篮球群。我加了下羽毛球群,也去打了一两次。第二个月的感受,感觉跟组里面的交流跟沟通都好少,基本上还有好多人不认识。想想也