最近跟某加密的技术同学对接,学到一种静态检测ipa上大多使用nm和grep命令,达到出的判断。
比如iOS到出ipa文件之后, 修改后缀改为.zip,解压后好到Payload文件,文件夹包含工程同命文件, 右键显示包内容,会打开一个新的文件夹(目标文件夹)。
在目标文件夹中, 会发现图片资源,plist文件,Frameworks文件夹, 工程同命文件,多语文件,证书等等。
安全检测工具扫描此文件是用于静态扫描, 比如plist文件用于检查是否权限请求是否配对, 一些app设置。
其中还有针对Frameworks和工程同命文件的检测,
举个栗子:
比如应用内要求数据库明文存储, 静态检测的方法是
nm -pa 工程同名文件 | grep sqlite3_open
检测当前编译后文件,是否含有sqlite3_open句柄。
但是这种静态检测也存在问题, 就是针对集成的三方文件也能这样用, 比如上述涉及到sqlite3_open,但是并没有涉及sqlite3_getKey 检测工具就提示存在数据库明文存储。
特别简单粗暴。。。
想一些三方库,比如YY系列的Cache库,某度定位SDK等涉及到缓存三方库, 其实以前是都不支持加密方式的.
特别说明一下某度定位SDK,是存在sqlite3_open语句的 , 但是不存在sqlite_getkey,会涉及到数据库明文存储,但是SDK技术的童鞋说,已经删除调数据库引用,下一版本清空会删除这个类。