注:本篇文章仅限于iOS学习,禁止任何商业用途
本片文章适用于掌握基本逆向工程原理的iOS开发人员阅读
工具:
Reveal: 分析user intergace
已经被class-dump的微信头文件
iPhone越狱手机
1、手机通过USB连接电脑,运行微信,电脑端打开Reveal连接微信(Reveal的使用),如下图
2、打开电脑终端,通过ssh连接手机(手机和电脑在同一网段)
ssh [email protected],输入ssh密码连接
3、输入ps aux | grep WeChat显示微信在手机内存中的信息
4、输入cycript -p WeChat 劫持微信线程
5、接下来需要通过配合使用Reveal来分析微信余额 ,在终端输入
keyWindow = [UIApplication sharedApplication].keyWindow
keyWindow.rootViewController.viewControllers
得到如下四个NavigationController对象
通过分析微信界面可知,对象0x15afa860即为微信'我'的导航栏,接下来实例化导航栏对象
var navi4 = new Instance(0x15afa860) // 实例化导航栏对象
var moreController = navi4.topViewController// 获取controller
moreController.view.subviews//显示子控件
可以发现,在劫持微信线程后,终端可以使用Objective-C和JavaScript,下面继续使用上面的方法分析,可以看到界面显示的是一个tableView,分析找到tableView的cell
当设置cell的背景颜色后,手机上的显示效果如下
cell找对了,继续分析,下面找到"钱包"界面的类,首先进入"钱包界面"
var indexPath = [tableView indexPathForCell:cell1] /// 获取cell1的indexPath
[tableView.delegate didSelectRowAtIndexPath:indexPath] /// 模拟点击cell1
[navi4 popViewControllerAnimated:YES] // 取"钱包"类名
取到类名为:
实例化WCBizMainViewController
var bizMainController = [[WCBizMainViewController alloc] init] // 创建WCBizMainViewController对象
[navi4 pushViewController:bizMainController animated:YES] // push
OK, 成功进入"钱包界面",分析到这里,是不是感觉到我们想获取的信息已经快有眉目了
用Reveal展示一下现在的界面,从图片左边已经可以看到微信余额了,如下图所示
图的左边清晰的展示的微信的框架结构,通过结构可以看出,倘若刚开始时就以此框架来定位余额的话,要简单的多,总之两种定位方法,各有利弊,自己权衡吧
继续分析,输入代码
bizMainController.view.subviews
显示MMTableView和UIView两个子控件,对比Reveal可以看出,我们需要找的"余额"信息在UIView控件里,如下图
继续输入代码
var view = new Instance(0x171717f0)
view.subviews
结合Reveal,找到存储零钱的MMUILabel,如下图所示,text里的十六进制后面显示的就是零钱
ok,成功取到微信余额,是不是很easy
未经许可,禁止转载