廢話不多說袭灯,上地址:https://github.com/Co2333/StatusBarFucker
這是一個使用lldb image lookup(找方法)和ivarDescription(找地址)深度查找揪出來的私有方法,蘋果大概率不會讓你上架,但是有先例子:學(xué)習(xí)強(qiáng)國恶耽。
接下來痊夭,咱們work through一遍旱捧。
1 - 連接到SpringBoard华蜒,咱們先開模擬器辙纬,然后? ? lldb attach SpringBoard
2 - 然后用指令po來獲取當(dāng)前的StatusBar
UIStatusBar_Modern: 0x7fac3d111250
3 - 反復(fù)使用ivarDescription來獲取我們需要的指針。
3.1 -?po [[[UIApplication sharedApplication] statusBar] _ivarDescription]
3.2 -?po [0x7fac3a413de0 _ivarDescription] 其中叭喜,0x7fac3a413de0,為statusbar的地址蓖谢,已在上圖標(biāo)出捂蕴。
_items (NSMutableDictionary*): <__NSDictionaryM: 0x60000117aea0>
3.3 -?po 0x60000117aea0 尋找我們要的TimeItem。
? ? "<_UIStatusBarIdentifier: 0x600001103620: object=_UIStatusBarTimeItem>" = "<_UIStatusBarTimeItem: 0x600003200eb0: identifier=<_UIStatusBarIdentifier: 0x600001103620: object=_UIStatusBarTimeItem>>";
3.4 -??po [0x600003200eb0 _ivarDescription] 繼續(xù)打印我們的Item尋找那個ShortTimeView闪幽。同時image lookup給了我們他的名字:_UIStatusBarStringView
_shortTimeView (_UIStatusBarStringView*): <_UIStatusBarStringView: 0x7fac3d337280>
3.5 最后啥辨,把他當(dāng)UILabelView拿來用就行了
(lldb) po [0x7fac3d337280 setText:@"@Lakr233"]
4 效果圖:
Twitter:@Lakr233
最后,感謝一下 https://www.raywenderlich.com/?的書盯腌,真香溉知。