iOS逆向1014-微信抢红包案例(二)逻辑分析

1014-微信抢红包案例(二)逻辑分析

cy# UIApp.keyWindow.recursiveDescription.toString()  //遍历打印 -->MMUILable 时间的地址:地址1
cy# #地址1.text= @"15:66"     // 改变 label 的内容
cy# [#地址1 nextResponder]    //--> 地址2:ChatTimeCellView 
cy# [#地址2 nextResponder]    //--> 地址3:UITableViewCellContentView
cy# [#地址3 nextResponder]    //--> 地址4:ChatTableViewCell
cy# [#地址4 nextResponder]    //--> 地址5:YYTableView
cy# [#地址5 nextResponder]    //--> 地址6:UIView
cy# [#地址6 nextResponder]    //--> 地址7:BaseMsgContentViewController
cy# [UIApp.keyWindow.rootViewController _printHierachy].toSring //--> 打印所有测控制器

@interface NMMUINavigationViewController
    @interface NewMainFrameViewController   // 
    @interface BaseMsgContentViewController // 消息
    @interface ContactsContentViewController    // 通讯录
    @interface FindFriendEntryViewController    // 发现
    @interface MoreViewController           // 更多

 @interface NewMainFrameRightTopMenuBtn
 @interface MMBarButton


// 1、新建一个命令行 ZM_CommandLineToo
// 2、cy# 的toSring 放入 ZM_CommandLineToo
command + 运行:换行对齐,代码架构整齐

image.png

安装 MonkeyApp 依赖 theos
// opt --> theos --> bin --> logify.pl
logify.pl:只要有目标文件(class-dump导出的头文件),都能生成xm文件,钩住这个类的所有方法

1、只用终端,创建 hookHeader.xm

image.png
image.png

$ ls
$ logify.pl 头文件路径/BaseMsgContentViewController.h > ./hookHeader.xm
创建生成:hookHeader.xm 拖入项目的Logos 文件夹内
编译生成:hookHeader.mm 拖入项目的Logos 文件夹内

2、打入需要的头文件

#import <UIKit/UIKit.h>

@interface BaseMsgContentViewController : UIViewController
@end

  • // 方式一

WeChatHeardes 导入项目, 在把 BaseMsgContentViewController.h 需要的所有头文件导入

  • // 方式二

Configfig --> MethodTraceConfig.plist

image.png

BaseMsgContentViewController
CMessageMgr

//---------------------------逻辑分析---------------------------
// 微信应该有一个专门管理消息的对象! 多播代理,找到对应的代理进行消息分发
// 这个方法到底 是谁调用来的!! 看函数调用栈!!找到原调用者,找源头:使用符号表

-- (void)addMessageNode:(id)arg1 layout:(_Bool)arg2 addMoreMsg:(_Bool)arg3 { %log; %orig; }
addMessageNode:layout: addMoreMsg

-- (void)addMessageNode:(id)arg1 layout:(_Bool)arg2 addMoreMsg:(_Bool)arg3 { 
%log; 
%orig;
 }
lldb po arg1 
lldb c
lldb po arg1
lldb c 
lldb po arg1

3、恢复 符号表
通过开源项目:restore-symbol 恢复

image.png

image.png

终端使用,goshell 直接进入文件
3.1、$ make restore-symbol // 会生成一个可执行文件
3.2、放入WeChat可执行文件 到

$ lipo -info WeChat //查看架构
$ lipo WeChat -thin arm64 -output WeChat_arm64 //拆分出arm64架构
$ ./restore-symbol WeChat_arm64 -o WeChatMachO //恢复符号表: 输出 WeiChatMachO

// 恢复符号表 使用单一架构
lipo release-可执行文件 -thin arm64 -output macho_arm64
WeChat: 140.6 M
WeChat_arm64:75.3 M
WeChatMachO: 84.5 M //恢复后 变大了

3.3、 WeChatMachO 改名为 WeChat --> 再放入WeChat.ipa 包内
( WeChat.ipa 包内:先删掉原来的 WeChat,即替换 )

3.4、运行 MokeyApp_WeChat ,点击进入聊天界面,hook BaseMsgContentViewController

@interface BaseMsgContentLogicController
- (_Bool)onLoadDownMoreMessage;
- (void)AddLocationMessageWithLocation:(id)arg1;
- (void)OnModMsg:(id)arg1 MsgWrap:(id)arg2;
- (void)AddMsg:(id)arg1 MsgWrap:(id)arg2;
hook以下方法
- (void)OnAddMsg:(id)arg1 MsgWrap:(id)arg2;
- (void)DidAddMsg:(id)arg1;

发一条新消息,函数调用栈改变了 CMessageMgr
@interface CMessageMgr //消息的中转站
hook以下方法

  • (void)MainThreadNotifyToExt:(id)arg1;

//断点此方法:发一条消息
lldb po arg1
lldb c
lldb po arg1
lldb

查看钩住的所有方法
Configfig --> MethodTraceConfig.plist --> CMessageMgr

image.png
方法执行顺序
  1. CheckMessageStatus
  2. onNewSyncAddMessage
  3. AsyncOnPreAddMsg
  4. AsyncOnAddMsg

上图👆hook所有的方法 改为no
hook:CMessageMgr--> onNewSyncAddMessage
消息类型 type:
1、文字
2、图片
34、语言
49、红包

来到红包界面
UITextEffectsWindow
WCPayMainWindow

image.png
$ sh login.sh
cy#  UIApp.keyWindow.recursiveDescription.toString()  //-->名称的 地址1 address1
cy#  #addr1.text = 'zhangMeng'
cy#  #addr1.nextResponder   //-->UIImageView addr2
cy#  #addr2.subviews        //btn1、btn2 addr3
cy#  #addr3.enable= NO      //开:不能点击了
cy#  #addr3.enable= YES     //开:能点击了
cy#  #addr3.allTargets      //--> WCRedEnvelopesReceiveHomeView  addr4
cy#  [#addr4 OnOpenRedEnvelopes]
cy#  choose(WCRedEnvelopesReceiveHomeView) //--> addr5、addr6
cy#  [#addr6 OnOpenRedEnvelopes]
cy#  
cy#  
cy#  
@interface WCRedEnvelopesReceiveHomeView

@interface WCRedEnvelopesReceiveHomeView : MMUIView
- (void)OnOpenRedEnvelopes;
分析源码,静态分析,通过IDA。汇编 
    - 真正的抢红包方法


@interface WCRedEnvelopesReceiveControlLogic
- (void)WCRedEnvelopesReceiveHomeViewOpenRedEnvelopes;
@interface WCRedEnvelopesControlData
@interface CMessageWrap
@interface WCPayInfoItem

WCRedEnvelopesControlData  *m_data = self.m_data;
CMessageWrap  *msgWrap          = [m_data m_oSelectedMessageWrap];
WCPayInfoItem  *item                 = [msgWrap m_o WCPayInfoItem];
NSString *url                   = [item m_c2cNativeUrl];

//合并方法:拿到红包的url
NSString *url = [[[self.m_data m_oSelectedMessageWrap] 
                                m_o WCPayInfoItem]
                                m_c2cNativeUrl];

3.4图

image.png

3.2图

image.png
image.png

到下面👇

image.png

发个红包,到下面👇

image.png
image.png
image.png
image.png
image.png
image.png
image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339