微信切换账号

作者: 西博尔 | 来源:发表于2017-11-01 11:30 被阅读868次

转载请注明出处

平时用的微信号和王者荣耀游戏的号是两个,游园惊梦的时候需要每天都登陆游戏号, 天天要退出, 切换账号, 输入账号密码, 太麻烦了,所以写了一个插件, 用于切换

我是基于Tweak编写的

第一步, 在设置界面添加了一个切换账号的cell

#import "src/WeChatHeader.h"

#import "substrate.h"
int myValue = 0;
%hook NewSettingViewController

- (void)reloadTableData {

%orig;
MMTableViewInfo *tableViewInfo = MSHookIvar<id>(self, "m_tableViewInfo");

MMTableViewSectionInfo *sectionInfo = [%c(MMTableViewSectionInfo) sectionInfoDefaut];

MMTableViewCellInfo *settingCell = [%c(MMTableViewCellInfo) normalCellForSel:@selector(switchAccount) target:self title:@"切换账号" accessoryType:1];
[sectionInfo addCell:settingCell];

[tableViewInfo insertSection:sectionInfo At:0];

MMTableView *tableView = [tableViewInfo getTableView];
[tableView reloadData];
}

第二步,cell的点击事件
// 点击事件
%new
- (void)switchAccount {

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"确认切换?" preferredStyle:UIAlertControllerStyleAlert];


UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
NSLog(@"确定");


myValue = 1;

WCActionSheet * sheet = MSHookIvar<id>(self,"m_logOutActionSheet");
NSLog(@"确定111");

[self actionSheet:sheet clickedButtonAtIndex:1];

NSLog(@"确定222");


}];

UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"取消");

}];

[alertController addAction:action1];
[alertController addAction:action2];

[self presentViewController:alertController animated:YES completion:nil];

}


%end
效果图:
6FC2B7D411982CB03816D8A75FE7F099.png
通过分析, 登陆界面的登陆按钮的事件是-(void)onNext 然后账号, 密码,手机号的输入都是通过WCAccountTextFieldItem这个控件的-(void)setText:(id)arg1方法进行赋值
第三步,在正常退出后的界面, 点击切换账号的方法, 提取出来了

value是干什么呢, 区分是正常退出切换和插件自动切换用的

%hook WCAccountLoginLastUserViewController

- (void)viewDidLoad
{
%orig;

NSLog(@"myvalue 🐦= %d",myValue);


if(myValue)
{


WCAccountLoginControlLogic * change = [[%c(WCAccountLoginControlLogic) alloc]init];

WCUIActionSheet * action = [[%c(WCUIActionSheet) alloc]init];

[change onLastUserChangeAccount:action];
}

}




%end


第四步,点击切换完成后输入手机号/qq账号

因为我自己的账号一个是qq和密码登陆, 一个是手机号+密码,所以会有判断,需要用哪个接口登陆

%hook WCAccountMainLoginViewController

- (void)viewDidLoad
{
%orig;
    if(myValue)
    {
//(CAppUtil) getLastPhoneNumber 获取当前账号绑定手机的,用于判定当前账号是哪个, 你们也可以用别的来判断
        if([[%c(CAppUtil) getLastPhoneNumber] isEqualToString:@"+8618201301234"])
        {
            WCAccountTextFieldItem * phone = MSHookIvar<id>(self,"_textFieldPhoneNumberItem");

            [phone setText:@"15000471234"];

            [self onNext];
        }
        else if([[%c(CAppUtil) getLastPhoneNumber] isEqualToString:@"+8615000471234"])
        {
            WCAccountTextFieldItem * username = MSHookIvar<id>(self,"_textFieldUserNameItem");
            WCAccountTextFieldItem * pwd = MSHookIvar<id>(self,"_textFieldUserPwdItem");

            [username setText:@"775931234"];
            [pwd setText:@"1234456"];
            [self switchToUserLogin];
            [self onNext];
        }

    }

}

%end
switchToUserLogin 是切换到qq号和密码界面, 然后调用那个界面的onNext
最后一步,登陆,myValue = 0; 恢复成正常状态, 以免影响正常退出之后的登陆
%hook WCAccountNewPhoneVerifyViewController

- (void)viewDidLoad
{
%orig;



if(myValue)
{
WCAccountTextFieldItem * phone = MSHookIvar<id>(self,"_textFieldPwdItem");

[phone setText:@"1234456"];

[self onNext];
myValue = 0;
}


}


%end
对了, 还有一个头文件WeChatHeader.h
@interface CAppUtil : NSObject
+ (id)getLastPhoneNumber;

@end


@interface WCAccountLoginControlLogic : UIViewController
- (void)onLastUserChangeAccount:(id)arg1;
@end


@interface WCAccountLoginLastUserViewController : UIViewController
- (void)actionSheet:(id)arg1 clickedButtonAtIndex:(long long)arg2;
- (void)showInView:(id)arg1;


@end


@interface WCActionSheet : UIActionSheet
- (void)showInView:(id)arg1;

@end
@interface WCUIActionSheet : WCActionSheet

@end

@interface WCAccountTextFieldItem : NSObject
- (void)setText:(id)arg1;
- (id)getTextField;

@end


@interface WCAccountMainLoginViewController : UIViewController
- (void)onNext;
- (void)switchToUserLogin;

@end

@interface WCAccountNewPhoneVerifyViewController : UIViewController
//@property (nonatomic ,strong) WCAccountTextFieldItem *textFieldPwdItem;
//
//@property (nonatomic ,strong) WCAccountTextFieldItem *textFieldVerifyCodeItem;

- (void)onNext;
@end
@interface NewSettingViewController: MMUIViewController

- (void)reloadTableData;
- (void)actionSheet:(id)arg1 clickedButtonAtIndex:(long long)arg2;

// 退出, 哪个都可以, 具体不知道是哪个
- (void)tryQuit;
- (void)finalQuit;

@end

最后,有可能会有bug,会不适用于你 , 思路就是这么个思路 ,和方法, 可以参考参考, 主要也是针对我的情况,非常方便, 切换很快

相关文章

  • 微信切换账号

    转载请注明出处 平时用的微信号和王者荣耀游戏的号是两个,游园惊梦的时候需要每天都登陆游戏号, 天天要退出, 切换账...

  • 微信切换账号

    打开手机当中的微信,进入到微信聊天界面,此时下方选中的是按钮是"微信" 2.选中下方按钮中的"我",点击后回跳转到...

  • QQ和微信的登录设计

    登录设计页面离不开账号和密码两个必要元素。我们发现,qq可以同时切换多个账号,但是微信切换的交互特别麻烦,因此经常...

  • 微信逆天新功能!

    前些日子,微信升级提示,可以拥有第二个账号,两个账号之间直接自由切换。 操作也很简单,打开微信里面的设置功能,一直...

  • 如何使用微信大屏幕进行现场互动

    如何使用微信大屏幕进行现场互动 1、微信公众账号 打开微信公众账号开发模式(如无微信公众账号须先免费注册)并接至本...

  • 002-微信公众号OPENID是什么

    先弄明白以下概念: 微信开发者账号 —— 用来登录微信开发者平台的账号 微信应用 —— 同一账号可以在微信开发者平...

  • 华微群控系统微信防风好技巧

    微信【防封技巧】:华微群控经验分享 第1:不要频繁切换账号 第2:打开设置--通用—后台应用刷新—进入关闭 第3:...

  • 微信号突然变成“未注册”怎么办?这里有一份完整的解决方案

    切换微信账户频繁,或者长时间未登录微信号,再次登录时会被系统提示“微信号未注册”或“该账号不存在”,解决方法有3种...

  • 个人微信公众账号常见问题有哪些?

    1、个人微信公众账号,如何认证? 答:个人微信公众账号,不能认证。微信公众平台--设置--微信认证--会出现如下提...

  • 微信新版内测!多账号可以快速切换!

    刚刚,微信团队将新版本v6.6.3.24,以邀请内测的方式,发送给一部分用户。未收到邀请的用户无法体验。 新版本的...

网友评论

  • 西博尔:大家不用尝试了, 看看思路就好 , 因为最新版的微信已经有了切换账号的功能, 之前没有才写的, 而且上面代码在最新版上面跑会崩溃的
  • 不会骑名字:你好,有个问题想要请教你,6.5.21版本的微信重签名打包后在手机上装不上去,报错是验证出错,但是在我的一部5s上是可以安装的,5s是非完美越狱,我把重启后已经是非越狱状态了,这种情况下还是可以安装上,非越狱的6s安装不上 6s系统:10.3.3 11.1 5s 9.2.1,请问你有遇到这种情况吗
    不会骑名字:@西博尔 问题应该是我先给.app文件中.app/.appex文件签名了,后给.app/.appex中的framework和dylib签名,我给顺序调换了下就好了,具体原因不清楚...猜测是这样的
    西博尔:@不会骑名字 哈, 简书收消息不及时,最后确定是什么问题呢
    不会骑名字:不好意思,已经解决了,我脚本的执行顺序有点问题修改了下就好了,不过还是很奇怪为什么5s可以安装上
  • 小白逆向:哥 能把这个切换账号的dylib发一下吗
    西博尔:@小白逆向 你注入之后呢, 你怎么切换, 账号密码都是我的, 甚至是乱写的, 你得自己编译出来再注入才行, 当然我这个需要再完善下, 留出来自己输入要切换的两个账号密码就方便了
    小白逆向:@西博尔 有动态库不就可以注入
    西博尔:@小白逆向 给你dylib你也用不了啊, 账号写死的,源码都发出来了, 你需要就自己改一改

本文标题:微信切换账号

本文链接:https://www.haomeiwen.com/subject/qnmwpxtx.html