总所周知微信设置性别以后就没有办法还原成无性别
今天分享的这个插件就是帮助大家还原空白性别,从界面分析到静态分析到动态分析
工具:Reveal,MonkeyDev,Cycript,class-dump
基本的逆向工具使用教程就不介绍了有兴趣的可以去别的贴看看

在Reveal打开我们的微信去到我们设置的界面可以拿到控制器的类名SettingSocialInfoViewController


我们来到SettingMyAccountExtInfoLogic可以看到一个名为m_usrInfo的属性下面我们去到CUsrInfo

我们看到CUsrInfo类里面有非常多类似以个人信息命名的成员属性 ,接下来我们用cycript调试


到此分析就结束了
下面我们为tableview增加一个名为空的cell
在Reveal可以看到所属控制器为NSStringSelectViewController

在NSStringSelectViewController看到一个- (id)initWithArray:(id)arg1 selected:(id)arg2的方法
我们用monkeydev新建一个工程

在方法中下断点可以看到arg1数组拥有两个值我们只需要在数组里面增加一个元素就能达到增加一个cell的效果
下面直接上代码
可以通过monkeydev或theos编译成dylib文件最后打包deb文件安装
@interface CUsrInfo : NSObject
@property(nonatomic) unsigned int m_uiSex;
@end
@interface SettingSocialInfoViewController : UIViewController
@end
@interface SettingMyAccountExtInfoLogic : NSObject
@property(retain, nonatomic) CUsrInfo *m_usrInfo;
@end
@interface NSStringSelectViewController : UIViewController
@property(nonatomic) _Bool bPresentModel;
@end
@interface MMTableViewUserInfo : NSObject
@end
@interface MMTableViewCellInfo : MMTableViewUserInfo
@end
static int number;
static SettingMyAccountExtInfoLogic *logic;
%hook SettingSocialInfoViewController
-(void)viewDidAppear:(BOOL)animated{
logic = [self valueForKeyPath:@"m_infoLogic"];
}
%end
%hook NSStringSelectViewController
- (id)initWithArray:(NSArray *)arg1 selected:(id)arg2{
NSMutableArray *myMutableArray = [arg1 mutableCopy];
[myMutableArray addObject:@"空"];
arg1 = myMutableArray;
return %orig;
}
- (void)OnSelectCell:(MMTableViewCellInfo *)arg1{
%orig;
NSMutableDictionary *dict = [arg1 valueForKeyPath:@"_dicInfo"];
if([dict[@"title"] isEqualToString:@"空"]){
number = 1;
} }
- (void)OnDone{
%orig;
if(number == 1){
number = 0;
[logic.m_usrInfo setM_uiSex:0];
} }
效果图:
