引言
本文測(cè)試工具 iPhone:7P歇由、iOS9.3.2
- ios逆向工程指的是在軟件層面上進(jìn)行逆向分析的一個(gè)過程。如果想要達(dá)到對(duì)ios軟件較強(qiáng)的逆向分析能力射亏,最好能非常熟悉ios設(shè)備的硬件構(gòu)成烘跺、ios系統(tǒng)的運(yùn)行原理萎坷,還要具備豐富的ios開發(fā)經(jīng)驗(yàn),比如:拿到一個(gè)App之后能清晰的推斷出這個(gè)App使用的技術(shù)成艘,包括引用了那些FrameWork赏半,那些經(jīng)典的第三方代碼,以及整個(gè)App工程大致的文件個(gè)數(shù)等淆两。
- 逆向工程的主要兩個(gè)作用:首先是攻破目標(biāo)程序断箫,拿到關(guān)鍵信息,可以歸類于安全相關(guān)的逆向工程琼腔,其次是借鑒他人的程序功能來開發(fā)自己的軟件瑰枫,可以歸類于開發(fā)相關(guān)的逆向工程
- 與安全相關(guān)的ios逆向工程
ios 逆向工程最突出的應(yīng)用領(lǐng)域就是與安全相關(guān)的,比如:通過逆向一個(gè)金融App丹莲,來評(píng)定這個(gè)軟件的安全等級(jí)光坝,安全專家通過逆向ios病毒,來找到殺毒的方法甥材,安全公司通過逆向ios系統(tǒng)電話盯另、短信功能,來構(gòu)建一個(gè)手機(jī)防火墻
a.評(píng)定安全等級(jí)
ios中那些具有交易功能的App一般會(huì)先加密敏感數(shù)據(jù)洲赵,然后將加密過的數(shù)據(jù)存儲(chǔ)在本地或通過互聯(lián)網(wǎng)傳輸鸳惯,而如果安全意識(shí)不夠強(qiáng)商蕴,就完全有可能將重要信息直接用明文保存或傳輸,安全隱患極大芝发。App雖然可以將低維的攻擊防守得如銅墻鐵壁一般绪商,但是擋不住高維的逆向攻擊,不過不可以據(jù)此得出App不安全的結(jié)論,因?yàn)閕os逆向工程的使用均來自一個(gè)前提:ios越獄,在這種環(huán)境下叛复,我們使用這些逆向工程技術(shù)來分析評(píng)估目標(biāo)App中可被攻擊點(diǎn)有多少浑厚,可攻擊點(diǎn)越少的自然就越安全。
b. 逆向惡意軟件
ios 是只能移動(dòng)終端操作系統(tǒng),它同計(jì)算機(jī)操作系統(tǒng)沒有本質(zhì)區(qū)別,惡意軟件就是通過逆向工程定位系統(tǒng)和軟件漏洞,利用漏洞滲透進(jìn)目標(biāo)主機(jī)决采,獲取敏感數(shù)據(jù)
- 與開發(fā)相關(guān)的ios逆向工程
開發(fā)者可以逆向系統(tǒng)調(diào)用,在自己的程序里使用一些文檔中沒有提及的私有功能坟奥,還可以逆向一些經(jīng)典的軟件等
a.逆向系統(tǒng)調(diào)用
開發(fā)者編寫的軟件能夠運(yùn)行在操作系統(tǒng)中树瞭,提供各種各樣的功能,是因?yàn)椴僮飨到y(tǒng)本身已經(jīng)內(nèi)嵌了這些功能筏勒,軟件只是拿來重組使用移迫。絕大多數(shù)的App的實(shí)現(xiàn)都源于公開的開發(fā)文檔,而不能使用諸如鎖屏管行,關(guān)機(jī)等文檔中不涉及的功能厨埋,如果你的程序面向Cydia,那么不采用非公開功能將導(dǎo)致程序幾乎沒有競(jìng)爭(zhēng)力,故可以通過逆向ios系統(tǒng)調(diào)用捐顷,還原系統(tǒng)實(shí)現(xiàn)相應(yīng)功能的代碼荡陷,并應(yīng)用到自己的程序中。
b.借鑒別的軟件
逆向工程最受歡迎的應(yīng)用場(chǎng)合就是“借鑒”他人的軟件功能迅涮。
ios 越獄
ios 完美越獄和不完美越獄
完美越獄废赞,越獄后的iPhone可以正常關(guān)機(jī)和重啟
不完美越獄,iPhone一旦關(guān)機(jī)后再開機(jī)時(shí)叮姑,屏幕就會(huì)一直停留在啟動(dòng)畫面唉地,也就是“白蘋果”狀態(tài)〈福或者能正常開機(jī)耘沼,但已經(jīng)安裝的破解軟件都無法正常使用,需要將設(shè)備與PC連接后朱盐,使用軟件進(jìn)行引導(dǎo)才能使用群嗤。一般說來,在蘋果發(fā)布新的iOS固件后兵琳,針對(duì)該固件的不完美越獄會(huì)先發(fā)布狂秘,隨后完美越獄才可能發(fā)布骇径,一般較新的系統(tǒng)版本,均為不完美越獄
越獄方法推薦
PP助手:http://jailbreak.25pp.com/
ps:不同機(jī)型者春,不同系統(tǒng)破衔,有的可以越獄,有的不可以
http://jailbreak.25pp.com/iphone5syueyu/
如何判斷是否越獄成功?
-
桌面是否有cydia
2.工具判斷(比如pp助手)
使用cydia安裝軟件
一钱烟、遠(yuǎn)程登錄到手機(jī):
SSH介紹
SSH是Secure Shell的縮寫,意為"安全外殼協(xié)議"运敢,是遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,用于計(jì)算機(jī)之間的加密登錄忠售,使用SSH,可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,"中間人"攻擊方式就不可能實(shí)現(xiàn),防止DNS欺騙和IP欺騙,OpenSSH
是SSH協(xié)議的免費(fèi)開源的實(shí)現(xiàn)迄沫,是一個(gè)運(yùn)用ssh稻扬、提供ssh登錄的一個(gè)軟件。
- SSH過程
client首先向server發(fā)送登錄請(qǐng)求
server收到請(qǐng)求以后發(fā)送一個(gè)公鑰給client
client將密碼用公鑰加密以后發(fā)給server
server收到這段信息羊瘩,用私鑰解密泰佳,如果是正確的密碼就登錄成功
- ssh安全隱患-中間人攻擊(MITM攻擊)
在client向server發(fā)送請(qǐng)求的時(shí)候,在client與server之間架起偽server然后攔截client的請(qǐng)求
用偽server向server發(fā)送一個(gè)登錄請(qǐng)求尘吗,
server生成密鑰A:公鑰A逝她,私鑰A 反給偽server
偽server拿到公鑰A以后,立馬生成一對(duì)密鑰B:公鑰B睬捶、私鑰B黔宛,將公鑰B反給client
client拿到公鑰B以后進(jìn)行密碼加密,發(fā)送server擒贸,然后偽server攔截
偽server拿到這段密文臀晃,用私鑰B進(jìn)行解密拿到密碼,發(fā)送給黑客server介劫,再將密碼用公鑰A進(jìn)行加密發(fā)送給server
1徽惋、WiFi使用SSH登錄到手機(jī):
- 準(zhǔn)備
OpenSSH使用方法如下:在同一個(gè)Wi-Fi下使用ssh
越獄機(jī)中先安裝插件OpenSSH,密碼在openSSH可以查看座韵,初始密碼為alpine险绘,默認(rèn)端口是22
- 操作:
//192.168.68.178 為手機(jī)的IP
GarryKings-Mac:~ macair$ ssh root@192.168.68.178
root@192.168.68.178's password:
fall1994de-iPhone:~ root#
2、通過usbmuxd登錄到手機(jī):
- 準(zhǔn)備
下載完成后如下:usbmuxd下載
- 操作:
//在下載的文件下
/Users/macair/usbmuxd
GarryKings-Mac:usbmuxd macair$ cd python-client/
//查看內(nèi)容
GarryKings-Mac:python-client macair$ ls
tcprelay.py usbmux.py usbmux.pyc
//執(zhí)行Python里腳本誉碴,進(jìn)行端口轉(zhuǎn)發(fā)宦棺,把手機(jī)的22端口(SSH端口)轉(zhuǎn)發(fā)為Mac本地的2222端口
GarryKings-Mac:python-client macair$ python tcprelay.py 22:2222
Forwarding local port 2222 to remote port 22
Incoming connection to 2222
Waiting for devices...
Connecting to device <MuxDevice: ID 132 ProdID 0x12a8 Serial 'ba0ab21065964b366d700af1e2f73bd94bc8c8e3' Location 0x14200000>
Connection established, relaying data
打開另一個(gè)終端:
//登錄手機(jī)端口、localhost是一個(gè)域名
GarryKings-Mac:~ macair$ ssh root@localhost -p 2222
root@localhost's password:
fall1994de-iPhone:~ root#
二翔烁、砸殼
- 前言
從 APPStore 商店下載安裝的APP 默認(rèn)都被蘋果加了一層殼渺氧,加了殼后我們就無法使用dump導(dǎo)出頭文件等其它操作,所以我們就必須要砸殼
1蹬屹、砸殼方式
a侣背、靜態(tài)砸殼
靜態(tài)砸殼使用Clutch, 主動(dòng)調(diào)起iPhone的解密功能, 得到解密的APP文件
步驟:
1白华、下載Clutch,
2、copy Clutch文件到手機(jī)的 /usr/bin/ 目錄下
scp -P 2222 Clutch root@127.0.0.1:/usr/bin/
3贩耐、查看可砸殼的應(yīng)用Clutch -i
4弧腥、砸殼應(yīng)用Clutch -d bundleId
5、查看砸殼后的路徑潮太,生產(chǎn).ipa文件
6管搪、驗(yàn)證是否砸殼成功: cryptid 為 0, 即沒有任何加密,砸殼成功操作
//ssh登錄到手機(jī)
macair:~ GarryKings-Mac$ ssh root@192.168.68.178
root@192.168.68.178's password:
//進(jìn)入手機(jī)的bin目錄下
fall1994de-iPhone:~ root# cd /usr/bin/
//找到Clutch
fall1994de-iPhone:/usr/bin root# ls
Clutch* expr* mkfifo* ssh-keygen*
//查看Clutch說明
fall1994de-iPhone:/usr/bin root# Clutch
2018-08-07 17:04:16.671 Clutch[2104:61556] command: None command
Usage: Clutch [OPTIONS]
-b --binary-dump Only dump binary files from specified bundleID
-d --dump Dump specified bundleID into .ipa file
-i --print-installed Prints installed applications
--clean Clean /var/tmp/clutch directory
--version Display version and exit
-? --help Displays this help and exit
-n --no-color Prints with colors disabled
-v --verbose Print verbose messages
//查看手機(jī)上可砸殼的應(yīng)用
fall1994de-iPhone:/usr/bin root# Clutch -i
2018-08-07 17:04:39.962 Clutch[2105:61595] command: Prints installed applications
Installed apps:
1: 百度網(wǎng)盤 <com.baidu.netdisk>
2: 今日頭條 <com.ss.iphone.article.News>
3: QQ <com.tencent.mqq>
4: 微信 <com.tencent.xin>
5: 釘釘 <com.laiwang.DingTalk>
6: 火山小視頻 - 分享生活铡买,讓世界為你點(diǎn)贊 <com.ss.iphone.ugc.Live>
7: WhatsApp Messenger <net.whatsapp.WhatsApp>
8: 蘋果助手 <com.klozz.anyrun>
9: 快掃二維碼 <com.magicpocket.qrcodereader>
10: 播放器OPlayer Lite - 視頻播放器 <com.olimsoft.oplayer.lite>
//砸殼應(yīng)用
fall1994de-iPhone:/usr/bin root# Clutch -d com.olimsoft.oplayer.lite
2018-08-07 17:04:53.531 Clutch[2106:61621] command: Dump specified bundleID into .ipa file
Zipping OPlayer Lite.app
Dumping <OPlayer WatchKit Extension> (arm64)
Patched cryptid (64bit segment)
Writing new checksum
Dumping <OPlayer Lite> (arm64)
Patched cryptid (64bit segment)
Writing new checksum
Zipping OPlayer WatchKit Extension.appex
//砸殼后生產(chǎn)的ipa包
DONE: /private/var/mobile/Documents/Dumped/com.olimsoft.oplayer.lite-iOS7.0-(Clutch-(null))-3.ipa
Finished dumping com.olimsoft.oplayer.lite in 21.2 seconds
fall1994de-iPhone:/usr/bin root# exit
logout
Connection to 192.168.68.178 closed.
macair:~ GarryKings-Mac$ cd /Users/macair/Desktop/reverse
//驗(yàn)證是否砸殼成功更鲁,cryptid 0沒有加密,砸殼成功
macair:reverse GarryKings-Mac$ otool -l OPlayer\ Lite | grep crypt
cryptoff 16384
cryptsize 21282816
cryptid 0
macair:reverse GarryKings-Mac$
通過iTool查看路徑如下圖:
DONE: /private/var/mobile/Documents/Dumped/com.olimsoft.oplayer.lite-iOS7.0-(Clutch-(null))-5.ipa
- b奇钞、動(dòng)態(tài)砸殼
準(zhǔn)備:
dumpdecrypted下載澡为,并編譯,得到
dumpdecrypted.dylib
原理:將應(yīng)用運(yùn)行起來, 然后從內(nèi)存中得到已經(jīng)解密的Mach-O文件
步驟:
1景埃、注入dumpdecrypted 到需要砸殼的應(yīng)用
- 操作
//ssh登錄手機(jī)
macair:~ GarryKings-Mac$ ssh root@192.168.68.172
//默認(rèn)密碼alpine
root@192.168.68.172's password:
//查看手機(jī)進(jìn)程
fall1994de-iPhone:~ root# ps -e
PID TTY TIME CMD
1 ?? 2:04.09 /sbin/launchd
1352 ?? 0:01.79 /usr/sbin/syslogd
1354 ?? 0:00.12 /usr/sbin/WirelessRadioManagerd
.
.
.
1933 ?? 0:00.05 /usr/sbin/filecoordinationd
1967 ?? 0:01.80 /var/containers/Bundle/Application/9AA9E393-EE7A-47A6-B0BB-75F60C56A688/WeChat.app/WeChat
1969 ?? 0:00.20 sshd: root@ttys000
1971 ttys000 0:00.03 -sh
1974 ttys000 0:00.01 ps -e
//附加進(jìn)程
fall1994de-iPhone:~ root# cycript -p 1967
//查看路徑
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
#"file:///var/mobile/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents/"
cy#
//control+d退出媒至,進(jìn)入終端二、執(zhí)行完成后進(jìn)入到wechat的Documents目錄下
fall1994de-iPhone:~ root# cd /var/mobile/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents
//利用環(huán)境變量 DYLD_INSERT_LIBRARY 來添加動(dòng)態(tài)庫dumpdecrypted.dylib
fall1994de-iPhone:/var/mobile/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/9AA9E393-EE7A-47A6-B0BB-75F60C56A688/WeChat.app/WeChat
Killed: 9
//su mobile解決Killed: 9的問題
fall1994de-iPhone:/var/mobile/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents root# su mobile
fall1994de-iPhone:~/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents mobile$ DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/9AA9E393-EE7A-47A6-B0BB-75F60C56A688/WeChat.app/WeChat
mach-o decryption dumper
DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.
[+] detected 64bit ARM binary in memory.
[+] offset to cryptid found: @0x100018ca8(from 0x100018000) = ca8
[+] Found encrypted data at address 00004000 of length 59129856 bytes - type 1.
[+] Opening /private/var/containers/Bundle/Application/9AA9E393-EE7A-47A6-B0BB-75F60C56A688/WeChat.app/WeChat for reading.
[+] Reading header
[+] Detecting header type
[+] Executable is a plain MACH-O image
[+] Opening WeChat.decrypted for writing.
[+] Copying the not encrypted start of the file
[+] Dumping the decrypted data into the file
[+] Copying the not encrypted remainder of the file
[+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset ca8
[+] Closing original file
[+] Closing dump file
//查看砸殼后得到的WeChat.decrypted
fall1994de-iPhone:~/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents mobile$ ls
00000000000000000000000000000000 8988bed64ad49de43bb92358e80eb712 LocalInfo.lst MemoryStat WeChat.decrypted c6b1224b7e98abe938eb5a77961de633 heavy_user_id_mapping.dat
0536d2db0169c7330e147ab22b4c12d8 9083f532701f365dcb748827438e4ac8 LoginInfo2.dat OpenImResource aa5c5b713a622d61083988a71b0b448a d6ff5cb02a15b19eb7f797dc866de9e7 mmupdateinfo.archive
516c1e86e3a79d704c7c78dbf43cba82 CrashReport MMResourceMgr SMReport.dat app_tutt db.globalconfig
5b8df94ef782697848221b40d04d9835 Ksid MMappedKV SafeMode.dat c5488da61168334a11af0d0e524109db dumpdecrypted.dylib
fall1994de-iPhone:~/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents mobile$
終端二:
/Users/macair/dumpdecrypted
//用scp命令將dumpdecrypted.dylib copy到要砸殼應(yīng)用的Documents目錄下
macair:dumpdecrypted GarryKings-Mac$ scp ./dumpdecrypted.dylib root@192.168.68.172:/var/mobile/Containers/Data/Application/BCEF4156-0E01-4D7A-89D7-4898DD3A1A88/Documents
root@192.168.68.172's password:
dumpdecrypted.dylib 100% 193KB 1.2MB/s 00:00
macair:dumpdecrypted GarryKings-Mac$
終端三:
/Users/macair/Desktop/reverse
//驗(yàn)證得到的WeChat.decrypted是否解密
macair:reverse GarryKings-Mac$ otool -l WeChat.decrypted | grep crypt
WeChat.decrypted:
cryptoff 16384
cryptsize 59129856
cryptid 0
macair:reverse GarryKings-Mac$
2谷徙、用class-dump開始砸殼:
步驟:
1拒啰、下載 class-dump,編譯生成class-dump的可執(zhí)行文件
如下圖:
2、終端執(zhí)行命令 ./class-dump XXXX -H -o ./headers 得到.h文件
如下圖:
操作:
/Users/macair/Desktop/reverse
//查看是否解密
macair:reverse GarryKings-Mac$ otool -l OPlayer\ Lite| grep crypt
cryptoff 16384
cryptsize 21282816
cryptid 0
//查看class-dump命令
macair:reverse GarryKings-Mac$ ./class-dump
class-dump 3.5 (64 bit) (Debug version compiled Aug 3 2018 15:06:07)
Usage: class-dump [options] <mach-o-file>
where options are:
-a show instance variable offsets
-A show implementation addresses
.
.
.
--sdk-root specify the full SDK root path (or use --sdk-ios/--sdk-mac for a shortcut)
//生產(chǎn).h頭文件
macair:reverse GarryKings-Mac$ ./class-dump OPlayer\ Lite -H -o ./headers
2018-08-08 11:13:28.898 class-dump[7327:103611] Warning: Parsing instance variable type failed, _canMakePayments
macair:reverse GarryKings-Mac$
三完慧、用 cycript 定位到感興趣的視圖
步驟:
1谋旦、登錄到手機(jī),查看進(jìn)程
2骗随、找到OPlayer Lite的進(jìn)程ID,查看APP的當(dāng)前界面結(jié)構(gòu)蛤织,定位到廣告視圖的view
3、去除廣告視圖鸿染,分析:廣告是個(gè)小的UIView指蚜,一定有個(gè)地方進(jìn)行了addSubView的操作添加到大的View上,那么定位到調(diào)用的地方涨椒,改變邏輯摊鸡,讓調(diào)用者繞過addSubView
操作:
//SSH登錄到手機(jī)
macair:~ GarryKings-Mac$ ssh root@localhost -p 2222
//默認(rèn)密碼alpine
root@localhost's password:
//查看手機(jī)進(jìn)程
fall1994de-iPhone:~ root# ps -e
PID TTY TIME CMD
1 ?? 0:47.59 /sbin/launchd
240 ?? 0:32.77 /usr/sbin/syslogd
242 ?? 0:00.95 /usr/sbin/WirelessRadioManagerd
.
.
.
2951 ?? 0:10.68 /var/containers/Bundle/Application/9995465C-AD4C-434D-92AF-2CDC46EA60E8/OPlayer Lite.app/OPlayer Lite
3002 ?? 0:00.18 sshd: root@ttys000
3004 ttys000 0:00.03 -sh
3007 ttys000 0:00.01 ps -e
//附加進(jìn)程
fall1994de-iPhone:~ root# cycript -p 2951
//查看當(dāng)前UI的視圖層次機(jī)構(gòu)
cy# [[UIApp keyWindow ]recursiveDescription ].toString()
`<UIWindow: 0x124590360; frame = (0 0; 414 736); opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x124591610>; layer = <UIWindowLayer: 0x124590110>>
| <UITransitionView: 0x128257690; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x128255b40>>
| | <UIView: 0x125fa61d0; frame = (0 0; 414 736); autoresize = W+H; autoresizesSubviews = NO; layer = <CALayer: 0x125838da0>>
| | | <UIView: 0x1258ac2e0; frame = (0 0; 414 736); layer = <CALayer: 0x125f33c20>>
| | | | <PlayerView: 0x125f09380; frame = (0 0; 414 736); layer = <CAEAGLLayer: 0x125f07700>>
| | | | <AVPlayerDemoPlaybackView: 0x125f475c0; frame = (0 0; 414 736); layer = <AVPlayerLayer: 0x1245f57d0>>
| | | | | <AVPlayerLayerIntermediateLayer: 0x12580d450> (layer)
| | | | | | <FigVideoContainerLayer: 0x1258bb6c0> (layer)
| | | | | | | <FigVideoLayer: 0x12479a4d0> (layer)
| | | | | | <FigSubtitleCALayer: 0x128206db0> (layer)
| | | | | | <AVPlayerLayerIntermediateLayer: 0x1258ed330> (layer)
| | | <SubtitleLabel: 0x1247a7300; baseClass = UILabel; frame = (0 0; 414 40); text = ''; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1247864d0>>
| | | <UIView: 0x1258c5ba0; frame = (47 0; 320 50); layer = <CALayer: 0x125f04310>>
| | | | <UIButton: 0x125f34c50; frame = (0 0; 320 50); opaque = NO; layer = <CALayer: 0x1258b3520>>
| | | | | <UIImageView: 0x12478dae0; frame = (0 0; 320 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12469b090>>
| | | | <UILabel: 0x12476aa20; frame = (60 0; 260 50); text = 'Buy the full version to r...'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1247a8590>>
| | | | | <_UILabelContentLayer: 0x124796d50> (layer)
| | | <RoundedRectView: 0x1258b5ed0; frame = (0 0; 414 64); hidden = YES; layer = <CALayer: 0x125f9a2f0>>
| | | | <PlaySeekView: 0x125f31f40; frame = (39 22; 336 32); layer = <CALayer: 0x1245687e0>>
| | | | | <UILabel: 0x1258e2130; frame = (0 3; 60 25); text = '00:03:51'; userInteractionEnabled = NO; tag = 10000; layer = <_UILabelLayer: 0x128225c70>>
| | | | | <OBSlider: 0x125f48840; baseClass = UISlider; frame = (60 5; 212 22); opaque = NO; tag = 10002; layer = <CALayer: 0x125fe65a0>; value: 231.000000>
| | | | | | <UIView: 0x124795d50; frame = (46 7; 164 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247cc680>>
| | | | | | | <UIImageView: 0x12476ebd0; frame = (-44 0; 208 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247a64c0>>
| | | | | | <UIImageView: 0x1247d8e70; frame = (2 7; 44 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x124798980>>
| | | | | | <UIImageView: 0x1247ce0f0; frame = (31 -4; 30 30); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247bb3b0>>
| | | | | <UILabel: 0x124593630; frame = (272 3; 64 25); text = '-00:18:45'; userInteractionEnabled = NO; tag = 10001; layer = <_UILabelLayer: 0x1258ec6b0>>
| | | | <UIButton: 0x1258ea630; frame = (352 6; 58 50); opaque = NO; layer = <CALayer: 0x125893de0>>
| | | | <UIButton: 0x1258dbdb0; frame = (0 6; 58 54); opaque = NO; layer = <CALayer: 0x125fb3910>>
| | | | <UIButton: 0x1258e23c0; frame = (362 16; 48 44); opaque = NO; layer = <CALayer: 0x128246bc0>>
| | | | | <UIImageView: 0x12816ef20; frame = (2 7; 44 30); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x128140f10>>
| | | | <UIButton: 0x125f35c40; frame = (4 16; 48 44); opaque = NO; layer = <CALayer: 0x125f1b9f0>>
| | | | | <UIImageView: 0x1247df950; frame = (2 7; 44 30); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247c41f0>>
| | | <NewRoundedRectView: 0x128223050; frame = (-5 648; 424 90); hidden = YES; layer = <CALayer: 0x125fbefd0>>
| | | | <UIButton: 0x1246da880; frame = (41 4; 44 44); opaque = NO; layer = <CALayer: 0x12473f5b0>>
| | | | | <UIImageView: 0x1247cc3f0; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1281092e0>>
| | | | <UIButton: 0x125f125e0; frame = (113 4; 44 44); opaque = NO; layer = <CALayer: 0x125f13460>>
| | | | | <UIImageView: 0x12813b780; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12813ea70>>
| | | | <UIButton: 0x1258ca7f0; frame = (185 4; 44 44); opaque = NO; layer = <CALayer: 0x125fdc6c0>>
| | | | | <UIImageView: 0x124766000; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247b5370>>
| | | | <UIButton: 0x128245630; frame = (257 4; 44 44); opaque = NO; layer = <CALayer: 0x1258311d0>>
| | | | | <UIImageView: 0x12468ca30; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12460eda0>>
| | | | <UIButton: 0x128241120; frame = (329 4; 44 44); opaque = NO; layer = <CALayer: 0x1245f4790>>
| | | | | <UIImageView: 0x12813ff00; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247d4ec0>>
| | | | <MPVolumeView: 0x1258e1510; frame = (27 56; 320 30); opaque = NO; layer = <CALayer: 0x125f65010>>
| | | | | <MPButton: 0x124797e30; baseClass = UIButton; frame = (327 2; 21.6667 18); alpha = 0; opaque = NO; autoresize = LM+BM; layer = <CALayer: 0x1281548c0>>
| | | | | | <UIImageView: 0x12473e1b0; frame = (-39.1667 -41; 100 100); alpha = 0; opaque = NO; userInteractionEnabled = NO; tag = 1886548836; layer = <CALayer: 0x12469fdd0>>
| | | | | | <UIImageView: 0x1246c60f0; frame = (0 0; 21.6667 18); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x128142800>>
| | | | | <MPVolumeSlider: 0x125f00240; baseClass = UISlider; frame = (0 -5; 320 28); opaque = NO; autoresize = W+BM; layer = <CALayer: 0x1258f0d50>; value: 0.000000>
| | | | | | <UIView: 0x124795420; frame = (2 10; 316 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x128159c30>>
| | | | | | | <UIImageView: 0x12816f4e0; frame = (0 0; 316 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12471e730>>
| | | | | | <UIImageView: 0x1247bcca0; frame = (2 10; 0 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x124796360>>
| | | | | | <UIImageView: 0x1246954c0; frame = (-3 -1; 30 30); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x124797750>>
| | | | <UIButton: 0x1246b6c10; frame = (370 40; 44 44); opaque = NO; layer = <CALayer: 0x1247bed20>>
| | | | | <UIImageView: 0x1258e91a0; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1245e7e50>>
| | | | <UIButton: 0x125fd9560; frame = (370 40; 44 44); hidden = YES; opaque = NO; layer = <CALayer: 0x125811b60>>
| | | <FloatingView: 0x125fe6170; frame = (92 208; 230 160); hidden = YES; layer = <CALayer: 0x125fb3300>>
| | | | <UIButton: 0x125fd1840; frame = (21 4; 50 50); opaque = NO; layer = <CALayer: 0x125f0dee0>>
| | | | | <UIImageView: 0x125f0ace0; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258c92c0>>
| | | | <UIButton: 0x12824fb30; frame = (91 4; 50 50); opaque = NO; layer = <CALayer: 0x125819670>>
| | | | | <UIImageView: 0x125f515b0; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f1cd90>>
| | | | <UIButton: 0x1258f1ee0; frame = (91 56; 50 50); opaque = NO; layer = <CALayer: 0x125f6b830>>
| | | | | <UIImageView: 0x12823e2d0; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258dd080>>
| | | | <UIButton: 0x1258db810; frame = (21 106; 50 50); opaque = NO; layer = <CALayer: 0x1258e6360>>
| | | | | <UIImageView: 0x125fdc470; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f56440>>
| | | | <UIButton: 0x125fd9140; frame = (91 106; 50 50); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x12820e380>>
| | | | | <UIImageView: 0x125875a00; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f5bea0>>
| | | | <UIButton: 0x125f0db50; frame = (161 4; 50 50); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x125f3a090>>
| | | | | <UIImageView: 0x125fbfe30; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f5c5c0>>
| | | | <UIButton: 0x1258cc4a0; frame = (161 106; 50 50); opaque = NO; layer = <CALayer: 0x128200de0>>
| | | | | <UIImageView: 0x125fc34e0; frame = (0 0; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258e08f0>>
| | | <FloatingView: 0x128244d80; frame = (-5 272; 62 192); hidden = YES; layer = <CALayer: 0x125fd8570>>
| | | | <UIButton: 0x125f4ac40; frame = (11 3.2; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x1258c42b0>>
| | | | | <UIImageView: 0x125f47120; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f6d510>>
| | | | <UIButton: 0x1258c4ca0; frame = (11 50.4; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x125fd98d0>>
| | | | | <UIImageView: 0x124567940; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1282258e0>>
| | | | <UIButton: 0x1258a6940; frame = (11 97.6; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x1258c0950>>
| | | | | <UIImageView: 0x125fe1da0; frame = (7 7; 30 30); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125fe1f50>>
| | | | <UIButton: 0x12588ae10; frame = (11 144.8; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x1245f5840>>
| | | | | <UIImageView: 0x12478ab30; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x128159810>>
| | | <FloatingView: 0x1282064d0; frame = (357 272; 62 192); hidden = YES; layer = <CALayer: 0x12457a420>>
| | | | <UIButton: 0x1258a99d0; frame = (6 3.2; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x1282047b0>>
| | | | | <UIImageView: 0x1247c4b70; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247cddb0>>
| | | | <UIButton: 0x125fec5c0; frame = (6 50.4; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x1258cd9d0>>
| | | | | <UIImageView: 0x1247cd0f0; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12468a9c0>>
| | | | <UIButton: 0x1258c15c0; frame = (6 97.6; 44 44); opaque = NO; tintColor = UIDeviceWhiteColorSpace 1 1; layer = <CALayer: 0x1258ca7c0>>
| | | | | <UIImageView: 0x12468e440; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x128136af0>>
| | | | <UIButton: 0x12824d0c0; frame = (6 144.8; 44 44); opaque = NO; tintColor = UIDeviceRGBColorSpace 0.192157 0.760784 0.486275 1; layer = <CALayer: 0x1258a7e20>>
| | | | | <UIImageView: 0x1247bb830; frame = (6.33333 6.33333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1246db090>>
| | | <UILabel: 0x12820eca0; frame = (0 616; 414 30); text = ''; alpha = 0; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1258894d0>>
| | | <UILabel: 0x125f30ee0; frame = (0 368; 414 100); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1258bf000>>
| | | | <_UILabelContentLayer: 0x12470a710> (layer)
| | | <SingleHandRoundedRectView: 0x125fbd080; frame = (0 509; 227 227); hidden = YES; layer = <CALayer: 0x125f534f0>>
| | | | <UIImageView: 0x125fbd270; frame = (0 0; 227 227); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f535e0>>
| | | | <UIButton: 0x1258e9eb0; frame = (80 165; 52 52); opaque = NO; layer = <CALayer: 0x125f2b6c0>>
| | | | | <UIImageView: 0x12816de50; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12460f370>>
| | | | <UIButton: 0x128223d90; frame = (150 160; 52 52); opaque = NO; layer = <CALayer: 0x125f9adf0>>
| | | | | <UIImageView: 0x124690350; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12816c270>>
| | | | <UIButton: 0x125f1c0b0; frame = (105 75; 52 52); opaque = NO; layer = <CALayer: 0x125f9ab90>>
| | | | | <UIImageView: 0x1247995c0; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247de070>>
| | | | <UIButton: 0x125f20230; frame = (20 25; 52 52); opaque = NO; layer = <CALayer: 0x125f13830>>
| | | | | <UIImageView: 0x124799330; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247e33d0>>
| | | | <UIButton: 0x1258ecaa0; frame = (10 95; 52 52); opaque = NO; layer = <CALayer: 0x1258e7130>>
| | | | | <UIImageView: 0x12479a2c0; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12814fb40>>
| | | | <UIButton: 0x125f0f3f0; frame = (10 170; 52 52); opaque = NO; layer = <CALayer: 0x1258ed580>>
| | | | | <UIImageView: 0x128109aa0; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x124769750>>
| | | <SingleHandRoundedRectView: 0x125fd5d00; frame = (187 509; 227 227); hidden = YES; layer = <CALayer: 0x125fd5ea0>>
| | | | <UIImageView: 0x125fd5fe0; frame = (0 0; 227 227); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125fdfc80>>
| | | | <UIButton: 0x125f511a0; frame = (100 165; 52 52); opaque = NO; layer = <CALayer: 0x125f2ea60>>
| | | | | <UIImageView: 0x124763140; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247100a0>>
| | | | <UIButton: 0x125f345a0; frame = (25 160; 52 52); opaque = NO; layer = <CALayer: 0x125f352e0>>
| | | | | <UIImageView: 0x128153220; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12460d0e0>>
| | | | <UIButton: 0x12820b9a0; frame = (75 75; 52 52); opaque = NO; layer = <CALayer: 0x12820b980>>
| | | | | <UIImageView: 0x12468f150; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1247355f0>>
| | | | <UIButton: 0x125840a60; frame = (165 25; 52 52); opaque = NO; layer = <CALayer: 0x1282098e0>>
| | | | | <UIImageView: 0x1247da440; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1246df410>>
| | | | <UIButton: 0x125fd9c70; frame = (165 95; 52 52); opaque = NO; layer = <CALayer: 0x125f506b0>>
| | | | | <UIImageView: 0x12814f080; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x128164430>>
| | | | <UIButton: 0x125fd7f40; frame = (170 170; 52 52); opaque = NO; layer = <CALayer: 0x125898e70>>
| | | | | <UIImageView: 0x125fa74a0; frame = (10.3333 10.3333; 31 31); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f5fae0>>
| | | <UIButton: 0x125fd2820; frame = (354 342; 52 52); hidden = YES; opaque = NO; layer = <CALayer: 0x125fd23d0>>
| | | | <UIImageView: 0x1258c59d0; frame = (1 1; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258eab40>>
| | | <UIButton: 0x128251670; frame = (10 342; 52 52); hidden = YES; opaque = NO; layer = <CALayer: 0x128251610>>
| | | | <UIImageView: 0x125feb960; frame = (1 1; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258fbc10>>`
cy# [#0x1258c5ba0 setHidden: YES]
cy# [#0x1258c5ba0 setHidden: NO]
cy# [[UIApp keyWindow ]recursiveDescription ].toString()
`<UIWindow: 0x124695730; frame = (0 0; 414 736); opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x1245c1c10>; layer = <UIWindowLayer: 0x124695700>>
| <UITransitionView: 0x1282723b0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x128270660>>
| | <UIView: 0x125f644e0; frame = (0 0; 414 736); autoresize = W+H; autoresizesSubviews = NO; layer = <CALayer: 0x125811c60>>
| | | <UIView: 0x125f45bc0; frame = (0 0; 414 736); layer = <CALayer: 0x1246d37d0>>
| | | | <PlayerView: 0x128223850; frame = (0 0; 414 736); layer = <CAEAGLLayer: 0x12584b210>>
| | | | <AVPlayerDemoPlaybackView: 0x125892060; frame = (0 0; 414 736); layer = <AVPlayerLayer: 0x125f51fe0>>
| | | | | <AVPlayerLayerIntermediateLayer: 0x125f5bed0> (layer)
| | | | | | <FigVideoContainerLayer: 0x1258520b0> (layer)
| | | | | | | <FigVideoLayer: 0x12584d7b0> (layer)
| | | | | | <FigSubtitleCALayer: 0x12822b820> (layer)
| | | | | | <AVPlayerLayerIntermediateLayer: 0x1258af7b0> (layer)
| | | <SubtitleLabel: 0x12585e2b0; baseClass = UILabel; frame = (0 0; 414 40); text = ''; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x125882fa0>>
| | | <GADBannerView: 0x12811ed00; frame = (47 0; 320 50); clipsToBounds = YES; layer = <CALayer: 0x1245dfee0>>
| | | | <GADAdView: 0x12811bca0; frame = (0 0; 320 50); opaque = NO; gestureRecognizers = <NSArray: 0x128110170>; layer = <CALayer: 0x1245870e0>>
| | | | | <UIScrollView: 0x125016a00; frame = (0 0; 0 0); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x128271ec0>; layer = <CALayer: 0x12477c960>; contentOffset: {0, 0}; contentSize: {0, 0}>
| | | | | | <UIImageView: 0x128187b80; frame = (-39 -5.33333; 36 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x12818b160>>
| | | | | | <UIImageView: 0x128187d30; frame = (-5.33333 -39; 2.33333 36); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x1247eb450>>
| | | | | <GADUIKitWebView: 0x128128d10; frame = (0 0; 320 50); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x1247aace0>>
| | | | | | <UIWebView: 0x125834e20; frame = (0 0; 320 50); opaque = NO; layer = <CALayer: 0x1258660e0>>
| | | | | | | <_UIWebViewScrollView: 0x1249ce000; frame = (0 0; 320 50); clipsToBounds = YES; autoresize = H; gestureRecognizers = <NSArray: 0x12589d720>; layer = <CALayer: 0x1258d5cc0>; contentOffset: {0, 0}; contentSize: {320, 51}>
| | | | | | | | <UIWebBrowserView: 0x12497e400; frame = (0 0; 320 51); text = '\u5b89\u88c5
WAR ROBOTS
\u9009\u62e9\u5e76\u5b9a\u5236\u673a\u5668\u4eba\u3002
'; opaque = NO; gestureRecognizers = <NSArray: 0x128218520>; layer = <UIWebLayer: 0x12581d570>>
| | | | | | | | | <LegacyTileHostLayer: 0x1258cf0d0> (layer)
| | | | | | | | | | <LegacyTileLayer: 0x12466bcf0> (layer)
| | | | | | | | | <CALayer: 0x125f77cc0> (layer)
| | | | | | | | | | <WebLayer: 0x128249310> (layer)
| | | | | | | | | | | <WebLayer: 0x125f684d0> (layer)
| | | | | | | | | | | | <WebLayer: 0x125f80dd0> (layer)
| | | | | | | | | | | | | <WebLayer: 0x125fa0c80> (layer)
| | | | | | | | | | | | <WebLayer: 0x12821a080> (layer)
| | | | | | | | | | | | | <WebLayer: 0x12822f7e0> (layer)
| | | | | | | | | | | | <WebLayer: 0x1258b52c0> (layer)
| | | | | | | | | | | | <WebLayer: 0x1282ac280> (layer)
| | | | | | | | | | | <WebLayer: 0x125f6bac0> (layer)
| | | | | | | | <UIImageView: 0x128264210; frame = (314.667 -39; 2.33333 36); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x1258657a0>>
| | | | | | | | <UIImageView: 0x12823d5e0; frame = (-39 44.6667; 36 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x1258575d0>>
| | | <RoundedRectView: 0x1258668b0; frame = (0 0; 414 64); hidden = YES; layer = <CALayer: 0x1258a97f0>>
| | | | <PlaySeekView: 0x125888ad0; frame = (39 22; 336 32); layer = <CALayer: 0x125853430>>
| | | | | <UILabel: 0x1258b0d00; frame = (0 3; 60 25); text = '00:02:19'; userInteractionEnabled = NO; tag = 10000; layer = <_UILabelLayer: 0x12468f750>>
| | | | | <OBSlider: 0x125862f00; baseClass = UISlider; frame = (60 5; 212 22); opaque = NO; tag = 10002; layer = <CALayer: 0x125f7b410>; value: 139.000000>
| | | | | | <UIView: 0x12583c650; frame = (127 7; 83 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x12822dae0>>
| | | | | | | <UIImageView: 0x128232c00; frame = (-125 0; 208 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f91130>>
| | | | | | <UIImageView: 0x125861a90; frame = (2 7; 125 8); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125f5da80>>
| | | | | | <UIImageView: 0x1258c1ca0; frame = (112 -4; 30 30); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258c3460>>
| | | | | <UILabel: 0x1258bcc00; frame = (272 3; 64 25); text = '-00:01:27'; userInteractionEnabled = NO; tag = 10001; layer = <_UILabelLayer: 0x1258a9c60>>
| | | | <UIButton: 0x1247f0100; frame = (352 6; 58 50); opaque = NO; layer = <CALayer: 0x1245b1ce0>>
| | | | <UIButton: 0x12585dfd0; frame = (0 6; 58 54); opaque = NO; layer = <CALayer: 0x1246c0eb0>>
| | | | <UIButton: 0x125f3c120; frame = (362 16; 48 44); opaque = NO; layer = <CALayer: 0x125f0cb90>>
| | | | | <UIImageView: 0x12584a260; frame = (2 7; 44 30); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125816bc0>>
| | | | <UIButton: 0x1258d08e0; frame = (4 16; 48 44); opaque = NO; layer = <CALayer: 0x1258f0730>>
| | | | | <UIImageView: 0x125842680; frame = (2 7; 44 30); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x125fbf170>>
| | | <NewRoundedRectView: 0x1247d4260; frame = (-5 648; 424 90); hidden = YES; layer = <CALayer: 0x1247be690>>
.
.
.
| | | <UIButton: 0x12826c1d0; frame = (10 342; 52 52); hidden = YES; opaque = NO; layer = <CALayer: 0x12826c170>>
| | | | <UIImageView: 0x12585f800; frame = (1 1; 50 50); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1258ef1f0>>`
cy# [#0x12811ed00 setHidden: YES]
cy# [#0x12811ed00 setHidden:NO]
cy#
fall1994de-iPhone:~ root#