[iOS Reverse]运行时分析cycript

前言

在上一篇文章中,讲述了如何利用class-dump来dump头文件[[iOS Hacking]用class-dump获取头文件]([iOS Hacking]用class-dump获取头文件),这篇文章将会讲述运行时分析工具cycript

安装cycript

在手机上打开cydia,搜索cycript插件并安装。

ssh连接手机

在Mac上打开终端,用ssh连接手机:

ssh [email protected]

输入密码:

alpine

关于如何连接手机,请参考我之前的[iOS HACKING入门]微信注入。

然后获取目标app的执行文件名

定位目标app可执行文件路径,cd到如下路径:

/private/var/containers/Bundle/Application

执行命令:

ps -e

然后command+F搜索目标app的路径:
比如,我这里目标app是微信,那么我搜索:

wechat

得到微信可执行文件路径:

/var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat

[iOS Reverse]运行时分析cycript_第1张图片

若找不到可执行文件路径,解决方案如下:
在Mac上下载目标app的ipa文件,右键,用实用归档工具打开,然后在解压后的文件夹中找到 Payload/xxx.app,找到可执行文件的位置,如我要hack微信(WeChat),可执行文件位置为:

Payload/WeChat.app/WeChat

然后在手机上运行目标app,如启动微信,杀掉其它app然后根据上面拿到的可执行文件名WeChat执行如下命令

ps aux | grep "WeChat"

同样可以找到目标文件的可执行文件在手机中的路径:/var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat

mobile     513   0.0  4.8   911344  49328   ??  Ss   10:37AM   0:10.41 /var/containers/Bundle/Application/EA96ABB7-3673-4771-AEE5-8DB891B74DB5/WeChat.app/WeChat
root       825   0.0  0.0   527168    304 s000  R+   11:03AM   0:00.01 grep WeChat

查找手机中目标app的进程id(pid)

输入指令

ps aux | grep "xxx"

其中xxx 是目标app可执行文件的名字,如微信的是WeChat
找到目标进程的id(pid):


可以获取微信的pid: 1146

cycript运行时分析

输入指令:

cycript -p ****

其中****表示目标进程的pid,在这里是1146

#cy

在手机微信中打开任意一个聊天界面,然后在Mac终端输入指令:

UIApp.keyWindow.recursiveDescription().toString()

其中的UIApp相当于[UIApplication sharedApplication]
的到如下结果:


; layer = > | > | | > | | | > | | | | ; layer = > | | | | | > | | | | | | > | | | | | | | > | | | | | | | |

打印的是手机上微信当前聊天界面的UI结构。

找到当前聊天界面的类名

在上一步打印的UI树中,在中间随便找个节点,如MMTableView,复制它的内存地址:0x12fca3e00

[iOS Reverse]运行时分析cycript_第2张图片

根据内存地址,找出这个节点的下一响应者,输入指令:

[#0x12fca3e00  nextResponder]

的到如下结果:

#">"

继续更具这个0x13080dbc0这个内存地址找出下一个下一个响应者:

[#0x13080dbc0 nextResponder]

的到如下结果:

""

锁定入口

如在本文中,要找到抢红包的入口,那么,我们可以锁定BaseMsgContentViewController这个视图控制器。
在我之前的博客[iOS Hacking]用class-dump获取头文件中讲述了如何dump目标的头文件。
在之前dump到的微信头文件中,找到BaseMsgContentViewController.h文件:

[iOS Reverse]运行时分析cycript_第3张图片

打开 BaseMsgContentViewController.h,观察结构:
搜索红包关键字: envelope
得到3个相关的方法:

- (_Bool)hasRedEnvelopesEntry;
- (void)redEnvelopesLogic;
- (void)initAllowNameCardFollowRedEnvelope;

运行时分析就写到这里,接下来可以做其它更加深入的操作。
请关注我的或博客,我会在和我的个人博客上不定期更新iOS Hack系列技术文章,欢迎交流!

关于我

  • Blog: CGPointZeero
  • GitHub: Insfgg99x
  • Mooc: CGPointZero
  • Jianshu: CGPointZero
  • Email: [email protected]

@CGPoitZero

[iOS Reverse]运行时分析cycript_第4张图片

你可能感兴趣的:([iOS Reverse]运行时分析cycript)