? 注:本篇文章僅限于iOS學習,禁止任何商業用途 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?本片文章適用于掌握基本逆向工程原理的iOS開發人員閱讀
工具:
Reveal: 分析user intergace
已經被class-dump的微信頭文件
iPhone越獄手機
1、手機通過USB連接電腦,運行微信,電腦端打開Reveal連接微信(Reveal的使用),如下圖
2、打開電腦終端,通過ssh連接手機(手機和電腦在同一網段)
ssh root@192.168.xxx.xxx,輸入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
? ? ?未經許可,禁止轉載