1.安全鍵盤(pán)方案
why袜刷?
大部分中文應(yīng)用彈出的默認(rèn)鍵盤(pán)是簡(jiǎn)體中文輸入法鍵盤(pán)横堡,在輸入用戶(hù)名和密碼的時(shí)候,如果使用簡(jiǎn)體中文輸入法鍵盤(pán)谴返,輸入英文字符和數(shù)字字符的用戶(hù)名和密碼時(shí)煞肾,會(huì)自動(dòng)啟動(dòng)系統(tǒng)輸入法自動(dòng)更正提示,然后用戶(hù)的輸入記錄會(huì)被緩存下來(lái)嗓袱。
系統(tǒng)鍵盤(pán)緩存最方便拿到的就是利用系統(tǒng)輸入法自動(dòng)更正的字符串輸入記錄籍救。 緩存文件的地址是:
/private/var/mobile/Library/Keyboard/dynamic-text.dat
導(dǎo)出該緩存文件,查看內(nèi)容渠抹,欣喜的發(fā)現(xiàn)一切輸入記錄都是明文存儲(chǔ)的蝙昙。因?yàn)橄到y(tǒng)不會(huì)把所有的用戶(hù)輸入記錄都當(dāng)作密碼等敏感信息來(lái)處理。 一般情況下梧却,一個(gè)常規(guī) iPhone 用戶(hù)的 dynamic-text.dat 文件奇颠,高頻率出現(xiàn)的字符串就是用戶(hù)名和密碼。
所以放航,一般銀行客戶(hù)端 app 輸入密碼時(shí)都不使用系統(tǒng)鍵盤(pán)大刊,而使用自己定制的鍵盤(pán),原因主要有 2 個(gè):
1.避免第三方讀取系統(tǒng)鍵盤(pán)緩存
2.防止屏幕錄制 (自己定制的鍵盤(pán)按鍵不加按下效果)三椿。
引入工程文件大腥本:兩個(gè)文件 大小忽略不計(jì)
2.代碼方法添加前綴自動(dòng)混淆,防止靜態(tài)分析
why?
眾所周知的是大部分iOS代碼一般不會(huì)做加密加固搜锰,因?yàn)閕OS APP一般是通過(guò)AppStore發(fā)布的伴郁,而且蘋(píng)果的系統(tǒng)難以攻破,但是隨著越獄工具越來(lái)越成熟蛋叼,AppStore里的應(yīng)用也變得不安全焊傅,靜態(tài)分析就是最基本的分析方法,通過(guò) class-dump 導(dǎo)出所有的.h中方法名狈涮,方法名一般都有很強(qiáng)的可讀性狐胎,動(dòng)態(tài)分析結(jié)合這些方法名比較容易定位到需分析的代碼段。
具體操作:http://www.reibang.com/p/0d42e5c6361c
從上圖可以看出.m中 屬性和私有方法也直接被分析出來(lái)歌馍,方法名可讀性強(qiáng)握巢,邏輯能大致推敲一二。
引入工程文件大兴扇础:大小基本忽略不計(jì)暴浦。
可能出現(xiàn)的風(fēng)險(xiǎn): 審核不通過(guò)(上線任務(wù)緊迫時(shí)不推薦使用,去年導(dǎo)出淘寶與京東.h方法名未混淆)
demo: 見(jiàn)↑具體操作連接
有興趣的可以看看下面這些↓
逆向工程相關(guān):http://www.reibang.com/p/3e0127b75dce
逆向工程資料:鏈接: https://pan.baidu.com/s/1h7c7FR4pY9s_B6O3pqwURA 密碼: 4zby
3.YYKit 是一組功能豐富的 iOS 組件晓锻。
- YYModel — 高性能的 iOS JSON 模型框架歌焦。
- YYCache — 高性能的 iOS 緩存框架。
- YYImage — 功能強(qiáng)大的 iOS 圖像框架砚哆。
- YYWebImage — 高性能的 iOS 異步圖像加載框架独撇。
- YYText — 功能強(qiáng)大的 iOS 富文本框架。
- YYKeyboardManager — iOS 鍵盤(pán)監(jiān)聽(tīng)管理工具躁锁。
- YYDispatchQueuePool — iOS 全局并發(fā)隊(duì)列管理工具纷铣。
- YYAsyncLayer — iOS 異步繪制與顯示的工具。
- YYCategories — 功能豐富的 Category 類(lèi)型工具庫(kù)灿里。
3.1 YYModel 運(yùn)用runtime獲取類(lèi)結(jié)構(gòu)體中Ivars关炼,進(jìn)行KVC操作,然后根據(jù)不同情況進(jìn)行分別處理匣吊,提高數(shù)據(jù)容錯(cuò)率儒拂,避免數(shù)據(jù)問(wèn)題造成的問(wèn)題,高效Model轉(zhuǎn)換色鸳。
講解: 揭秘YYModel 的魔法(上) - 掘金 揭秘YYModel 的魔法(下) - 掘金
引入工程文件大猩缤础:5個(gè)文件。(建議引入)
3.2 YYCache (工程里已經(jīng)有了)
講解:【從 YYCache 源碼 Get 到如何設(shè)計(jì)一個(gè)優(yōu)秀的緩存】
3.3 YYImage
講解:YYImage 設(shè)計(jì)思路命雀,實(shí)現(xiàn)細(xì)節(jié)剖析- 掘金
引入工程文件大兴獍А:10個(gè)文件。(看需求考慮吏砂,系統(tǒng)控件一般能滿足需求 )
3.3 YYWebImage
講解:見(jiàn)??git地址 (不推薦使用 SDWebImage 就行了)
3.4 YYText
講解:YYText源碼分析
引入工程文件大心於:800K左右 (看需求引入乘客,系統(tǒng)控件如果涉及重用與圖文混排會(huì)造成很大程度的卡頓)
3.5 YYKeyboardManager
講解: YYKeyboardManager - 簡(jiǎn)書(shū)
引入工程文件大小:兩個(gè)文件 (不推薦引入)
其他點(diǎn)擊見(jiàn)??git地址 可查看 由于偏向一些小工具類(lèi)淀歇,可以看需求引入易核。