WeChat 逆向请求帮助


#1

怎么利用 BaseMsgContentViewController ,调整BaseMsgContentViewController跳转的到指定微信好友的聊天界面 就是能不能创建BaseMsgContentViewController 传参数跳转到指定好友聊天界面 给个思路也行


#2
[MMMsgLogicManager PushOtherBaseMsgControllerByContact:navigationController:animated:] 

自己分析一下参数哪来的


#3

大佬 您说的太简单了吧 我有点看不懂 我是新手小菜 麻烦大佬再详细说下 整个思路流程


#4

接下来是不是怎么自动给指定微信好友发送信息?


#5

我想从首页跳到微信好友聊天界面 我已经可以在聊天界面发信息 就是不知道怎么跳转进去 研究好久 就弄不好 所以问下各位大佬有什么解决思路


#6

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621887-pushviewcontroller?language=objc

- (void)pushViewController:(UIViewController *)viewController 
                 animated:(BOOL)animated;

从这个入手, 很容易找到切换界面的地方


#7

我是最新的微信,从微信首页进入定位到了这个方法之后就不确定从哪里继续了 希望大神指点一下 [NewMainFrameViewController tableView:didSelectRowAtIndexPath:]


#8

试了一下确实可以,楼主拿走吧。
======微信跳转私聊=======
id serCenter = [%c(MMServiceCenter) defaultCenter];
id logicManager = [serCenter getService:[%c(MMMsgLogicManager) class]];
id vc = [self navigationController];
[logicManager PushOtherBaseMsgControllerByContact:[self m_contact] navigationController:vc animated:YES];


#9

大佬 请问下 [self m_contact] 是传微信号吗 还是手机号码


#10

代码给到这份上了, 还不舍得自己分析一下


#11

大佬抱歉啊

之前在 逆向BaseMsgContentViewController时

  • (void)openMessageContentView:(id)arg1 startSendMessage:(_Bool)arg2 msgWrapToAdd:(id)arg3 animated:(_Bool)arg4 jumpToFirstUnreadNode:(_Bool)arg5 indexPath:(id)arg6;

找到这个函数的这六个参数 我直接提取出来用

[self openMessageContentView:@“name[fuz*rui~9]-time[1548668735]-unread[0]-ext[1]-silence[0]” startSendMessage:NO msgWrapToAdd:nil animated:YES jumpToFirstUnreadNode:NO indexPath:indexPath];

就直接奔溃了 所以不知道 这些参数是不是可以直接用

现在有个新问题 问下大佬 直接奔溃怎么办 有没可以在%hook 加断点 测试

或者出现这样情况 从哪个方面入手分享


#12

你搞这些东西之前,为什么不去了解一下lldb?


#13

大佬劳烦帮我看看


我获取到数据

然后我的Tweak.xm 是

@interface MMServiceCenter
-(id)getService:(id)a;
@end

@interface MMMsgLogicManager

  • (void)PushOtherBaseMsgControllerByContact:(id)arg1 navigationController:(id)arg2 animated:(_Bool)arg3;
    @end

%hook MMMsgLogicManager

  • (void)PushOtherBaseMsgControllerByContact:(id)arg1 navigationController:(id)arg2 animated:(_Bool)arg3
    {
    %log;
    }
    %end

%hook NewMainFrameViewController
-(void)viewDidAppear:(BOOL)animated
{
%log;

 NSDictionary *dic = [[NSDictionary alloc]initWithObjects:
                    @[
                       @"fuz*rui~9",
                       @"",
                       @"",
                       @"老傅",
                       @"32771",
                       @"0",
                       @"",
                       @"CN",
                       @"Fujian",
                       @"Xiamen",
                       @"",
                        @"1",
                       @"",
                       @"",
                       @"0"
                     ]
                     forKeys:
                     @[
                        @"m_nsUsrName",
                        @"m_nsEncodeUserName",
                        @"alias",
                        @"m_nsNickName",
                        @"m_uiType",
                        @"m_uiConType",
                        @"m_nsRemark",
                        @"m_nsCountry",
                        @"m_nsProvince",
                        @"m_nsCity",
                        @"m_nsSignature",
                        @"m_uiSex",
                        @"m_uiCerFlag",
                        @"m_nsCer",
                        @"scene"
                     ]
                     ];


id serCenter = [%c(MMServiceCenter) defaultCenter];
id logicManager = [serCenter getService:[%c(MMMsgLogicManager) class]];
id vc = [self navigationController];
[logicManager PushOtherBaseMsgControllerByContact:dic navigationController:vc animated:YES];
%orig;

}

%end

可是直接奔溃了 能帮我看看吗


#14

安装 Tweak.xm 时候
不是直接把lldb 奔溃吗
就没有其他方法吗


#15

PushOtherBaseMsgControllerByContact:dic
======错误原因参数类型不对==========

这里应该是传一个ccontact类型的参数而非字典


#16

你可以看一下 CContactMgr 这个类
里面有一个方法:

  • (id)getContactByName:(id)arg1;
    这个应该是根据usrName获取ccontact的方法你可以试一下

id contactMgr = [[%c(MMServiceCenter) defaultCenter] getService:[%c(CContactMgr) class]];
id contact = [contactMgr getContactByName:@“这个参数应该是跳转会话那个人的usrName”];
然后把字典换成这个contact就好啦应该


#17

好的 谢谢大佬 能告诉我您的逆向经验吗?

逆向的步骤

比如我截取的数据 我想到的json文件 用的是传NSDictionary传数据尝试

请问大佬您是 怎么确定 CContactMgr 这个类的

还有 我 class-dump 出来的文件没有MMServiceCenter这个类 大佬是怎么确定

请问大佬您是哪里找到这个类的


#18

回复已经优待到这种地步了?


#19

大佬给的很完整 很好用 就是想学大佬 开发了时步骤 再找个实例学习下


#20

张总每次发言都妙语连珠