最近跟某加密的技術(shù)同學(xué)對接耕漱,學(xué)到一種靜態(tài)檢測ipa上大多使用nm和grep命令帚稠,達(dá)到出的判斷孵运。
比如iOS到出ipa文件之后, 修改后綴改為.zip惠呼,解壓后好到Payload文件导俘,文件夾包含工程同命文件, 右鍵顯示包內(nèi)容剔蹋,會打開一個新的文件夾(目標(biāo)文件夾)旅薄。
在目標(biāo)文件夾中, 會發(fā)現(xiàn)圖片資源泣崩,plist文件少梁,F(xiàn)rameworks文件夾, 工程同命文件律想,多語文件猎莲,證書等等。
安全檢測工具掃描此文件是用于靜態(tài)掃描技即, 比如plist文件用于檢查是否權(quán)限請求是否配對著洼, 一些app設(shè)置。
其中還有針對Frameworks和工程同命文件的檢測,?
舉個栗子:
比如應(yīng)用內(nèi)要求數(shù)據(jù)庫明文存儲身笤, 靜態(tài)檢測的方法是
nm -pa? 工程同名文件 | grep sqlite3_open? ??
具體執(zhí)行
檢測當(dāng)前編譯后文件豹悬,是否含有sqlite3_open句柄。
但是這種靜態(tài)檢測也存在問題液荸, 就是針對集成的三方文件也能這樣用瞻佛, 比如上述涉及到sqlite3_open,但是并沒有涉及sqlite3_getKey? 檢測工具就提示存在數(shù)據(jù)庫明文存儲。
特別簡單粗暴娇钱。伤柄。。
想一些三方庫文搂,比如YY系列的Cache庫,某度定位SDK等涉及到緩存三方庫适刀, 其實以前是都不支持加密方式的.
百度定位SDK
特別說明一下某度定位SDK,是存在sqlite3_open語句的 煤蹭, 但是不存在sqlite_getkey笔喉,會涉及到數(shù)據(jù)庫明文存儲,但是SDK技術(shù)的童鞋說硝皂,已經(jīng)刪除調(diào)數(shù)據(jù)庫引用常挚,下一版本清空會刪除這個類。