Introspy --追踪和分析iOS应用
2019-08-14 本文已影响3人
呆呆滴木木菇凉
前言
近来打算写一个通用的hook OC中的系统函数的工具,然后发现已经有大神造好轮子了,而且还特别的完善和好用,膜拜~~~
下载源码:
git clone https://github.com/iSECPartners/Introspy-iOS
1、进入scr目录打包
make package
2、拷贝到手机
scp <package.deb> root@<device_ip>:~
工具的话,我比较喜欢使用iFunBox。
3、连接手机
ssh root@<device_ip>
4、安装
dpkg -i <package.deb>
5、重启设备
killall -HUP SpringBoard
另外可直接:
make package
export THEOS_DEVICE_IP=192.168.1.127
make install
正确安装完之后会在设置里面显示如下选项:
setting--IntrospyIntrospy-Apps 中选择要跟踪的 app 名称。
Introspy-Settings 则提供一些常规跟踪设置选项,默认是全部开启。
然后启动想要跟踪的应用程序,就可以直接通过introspy生成的对应的应用的sqlite日志数据库来查看
这个界面的展示,用到了AppList 和 PreferenceLoader 两个依赖。
PreferenceLoader 是一个 MobileSubstrate 提供的工具,它可以让开发者在系统设置界面添加应用程序入口。而 AppList 是一个让开发者获取系统中已安装应用信息的库。
这两个工具的完美结合,就可以在系统设置中实现可供选择的应用列表。
实现原理:
只需要在 iOS 设备的 /Library/PreferenceLoader/Preferences 下放入一个 plist 和图标文件。其中,plist 文件用来指定设置界面的展示内容,而图标文件则是用于在系统设置的入口处显示。
回到introspy的源码里,可以找到如下目录:
plist路径展开来看:
introspy.plist设置 introspy2.plist设置对应的就是Introspy - Apps和Introspy - Settings的设置内容配置。
查找对应生成数据库文件的路径
find /private/var/mobile/Containers/Data/Application/ -name introspy*
路径查找
数据库中存储的样式
db
利用xcode调试项目时,终端也会对应输出捕获日志:
xcode日志