在系统分析阶段,应在不同的条件下运行目标程序,在程序中进行各种各样的操作,观察程序的行为特征,同时寻找我们感兴趣的功能点。比如选择哪个选项会弹框,按下哪个按钮会发声,输入什么内容屏幕会有什么显示,等等。还可以浏览文件系统,观察程序显示的图片、程序的配置文件存放的位置,数据库文件中存放了哪些信息,有没有加密等特征。
以新浪微博App为例,我们在查看它的Documents目录时,会看到如下一些数据库
文件:
-rw-r--r-- 1 mobile mobile 210944 Oct 26 11:34 db_46100_1001482703473.dat
-rw-r--r-- 1 mobile mobile 106496 Nov 16 15:31 db_46500_1001607406324.dat
-rw-r--r-- 1 mobile mobile 630784 Nov 28 00:43 db_46500_3414827754.dat
-rw-r--r-- 1 mobile mobile 6078464 Dec 6 12:09 db_46600_1172536511.dat
……
用SQLite工具打开它们,可以看到一些微博关注信息,如图1-3所示。
这样的信息给逆向工程提供了很多线索:数据库文件名、微博用户的ID,用户信息对应的URL等,这些都可以作为逆向工程的切入点。寻找和整理这些线索,从中抽丝剥茧找到我们感兴趣的东西,往往是iOS逆向工程的第一步。