ios逆向学习环境安装(一)
1、Xcode
历届版本:https://developer.apple.com/documentation/xcode-release-notes
AppStore中搜并安装XCode & 在网页下载https://developer.apple.com/xcode
2、class-dump
class-dump,是可以把Objective-C运行时的声明的信息导出来的工具。其实就是可以导出.h文件。用class-dump可以把未经加密的app的头文件导出来
安装
官网下载:http://stevenygard.com/projects/class-dump/
github下载:https://github.com/nygard/class-dump
点击下载后解压后会有class-dump和源码文件。
将class-dump 复制到/usr/bin/class-dump。如果是OS X 10.11,因为没有/usr/bin文件夹的写权限,所以将class-dump复制到/usr/local/bin/class-dump即可。
打开Terminal,执行命令赋予其执行权限:
sudo chmod 777 /usr/bin/class-dump
使用方法参考大佬:https://juejin.cn/post/6911142378883514375
3、Tweak
Tweak的实质就是iOS平台的动态库。iOS平台上有两种形势的动态库,dylib与framework。Framework这种开发者用的比较多,而dylib这种就相对比较少一点。而tweak用的正是dylib这种形势的动态库。
4、Theos
Theos是一个越狱开发工具包,用来创建Tweak项目。其中包含了Logos Hook和CaptainHook两种hook框架
Github: https://github.com/theos/theos 官方建议把Theos安装在/opt/theos目录下
sudo git clone--recursive https://github.com/theos/theos.git /opt/theos
添加环境变量
vim ~/.bash_profile
export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH
source ~/.bash_profile
检查是否生效
echo $THEOS
echo $PATH
输入 nic.pl 查看是否安装正确
.zshrc文件中并没有定义任务环境变量。解决办法在~/.zshrc文件最后,增加一行
source ~/.bash_profile
# 然后立即生效
source ~/.zshrc
5、ldid
ldid用来专门签名iOS可执行文件的工具,用以在越狱iOS中取代Xcode自带的codesign。如果不安装,那么产生的deb文件就安装不到手机上
brew install ldid
执行brew install ldid报错Command failed with exit 128:git 原因是安装homebrew时缺少两个包
解决方式:
输入brew -v后会提示你执行两个配置命令,直接复制执行就ok了!
6、MonkeyDev
MonkeyDev是基于iOS OpenDev的升级,是一个为越狱和非越狱开发人员准备的工具。强大的iOS重打包框架, 其中集合了各种hook框架以及自动签名
Github: https://github.com/AloneMonkey/MonkeyDev
安装:
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"
安装时报错:
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
报这个错误的原因是xcode-select不在默认的路径
解决方案:
如果您还没有安装 Xcode(从https://appstore.com/mac/apple/xcode获取 )。
接受条款和条件。
确保 Xcode 应用程序在/Applications目录中(不是/Users/{user}/Applications)。
xcode-select使用以下命令指向 Xcode app Developer 目录:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
注意:确保您的 Xcode 应用程序路径正确。
代码:/Applications/Xcode.app/Contents/Developer
Xcode-测试版:/Applications/Xcode-beta.app/Contents/Developer
参考:https://stackoverflow.com/questions/17980759/xcode-select-active-developer-directory-error
现在你就可以进行安装了,如果你是xcode12及以上,建议进行下面操作在进行安装不然会报下面这个错误:
File /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Package Types.xcspec not found
出现上面这个错误的话:
你只需要再次打开MonkeyDev/bin文件下的md-install文件,找到下面三行代码然后注释掉
#macosxSDKSpecificationsPath=$macosSdkPlatformPath/Developer/Library/Xcode/Specifications
#packageTypesForMacOSXPath="$macosxSDKSpecificationsPath/MacOSX Package Types.xcspec"
#productTypesForMacOSXPath="$macosxSDKSpecificationsPath/MacOSX Product Types.xcspec"
注释后加上下面三行代码,然后保存文件即可,开始安装.
macosxSDKSpecificationsPath=$macosSdkPlatformPath/Developer/Library/Xcode/PrivatePlugIns
packageTypesForMacOSXPath="$macosxSDKSpecificationsPath/IDEOSXSupportCore.ideplugin/Contents/Resources/MacOSX Package Types.xcspec"
productTypesForMacOSXPath="$macosxSDKSpecificationsPath/IDEOSXSupportCore.ideplugin/Contents/Resources/MacOSX Product Types.xcspec"
本地安装的方式,clone代码到本地:
git clone https://github.com/AloneMonkey/MonkeyDev.git
cd MonkeyDev/bin
在bin目录下,打开md-install文件,注释掉下载frida-ios-dump的代码
#下载frida-ios-dump#echo"Downloading frida-ios-dump from Github..."#downloadFile "https://raw.githubusercontent.com/AloneMonkey/frida-ios-dump/3.x/dump.py""$MonkeyDevPath/bin/dump.py"#downloadFile "https://raw.githubusercontent.com/AloneMonkey/frida-ios-dump/3.x/dump.js""$MonkeyDevPath/bin/dump.js"
新建一个目录,clone frida-ios-dump代码到本地
git clone https://github.com/AloneMonkey/frida-ios-dump.git
cd frida-ios-dump
手动将frida-ios-dump文件夹下的dump.py和dump.js拷贝到/opt/MonkeyDev/bin目录下
copy完成后,进入MonkeyDev/bin目录,执行MonkeyDev的安装:
sudo bash md-install
安装完成后,查看xcode,出现monkeydev则安装成功,可以创建monkeydev工程了
出现xcode问题参考:https://juejin.cn/post/7066779843345514510
出现monkeydev安装问题参考:https://github.com/AloneMonkey/MonkeyDev/issues/266
卸载:
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"
询问过相关大佬后,得知monkeydev在xcode中有模块出来后,可以忽略安装时候的报错信息,原因是因为xcode不断在更新,而monkeydev还是原来的老版本。相关错误可以忽略
7、libimobiledevice、usbmuxd、ideviceinstaller
libimobiledevice
libimobiledevice 又称 libiphone,是一个开源包,一个跨平台的软件库。可以让 Linux 支持连接 iPhone/iPod Touch 等 iOS 设备的协议。它不依赖于使用任何现有的专有库,不需要越狱。类似Android 的 adb 命令。
它允许其他软件轻松访问设备的文件系统,检索有关设备及其内部设备的信息,备份/恢复设备,管理跳板图标,管理已安装的应用程序,检索地址簿/日历/笔记和书签,以及(使用LIGBGOD)同步音乐和视频到设备。
一个与Apple iOS设备进行本地通信的库。
安装方法
使用brew在线安装
brew install libimobiledevice
brew install ideviceinstaller
github离线安装
clone 代码
https://github.com/libimobiledevice/libimobiledevice
https://github.com/libimobiledevice/ideviceinstaller
编译代码
$ git clone https://github.com/libimobiledevice/libimobiledevice.git
$ cd libimobiledevice
$ ./autogen.sh
$ make
$ sudo make install
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
常用语法
安装卸载ipa包
# 查看当前已连接的设备的UUID
idevice_id -l
# 获取设备信息
ideviceinfo
# 查看系统日志
idevicesyslog
# 截图
idevice screenshot
# 获取设备时间
idevicedate
# 重启设备
idevicediagnostics restart
# 关机
idevicediagnostics restart
# 休眠
idevicediagnostics sleep
usbmuxd
usbmuxd 全称「USB Multiplexing Daemon」,即 USB 多路传输驻留程序。当 Mac/PC 与 iPhone 之间使用 USB 数据线连接时,iTunes 与 iPhone 间的通信交流便是通过 usbmuxd 服务。usbmuxd 通过给定的端口号和 localhost 建立 TCP 连接。
下载网址:https://cgit.sukimashita.com/usbmuxd.git
安装
brew install usbmuxd
参考:https://gist.github.com/Nomeqc/494e197806402c1880169eb72a576e77
ideviceinstaller
前言:ideviceinstaller 是一个命令行工具,主要用于管理iOS设备上应用程序的安装与卸载,以及查看相关信息。 # ipa安装命令
ideviceinstaller官网:https://github.com/libimobiledevice/ideviceinstaller
【查看是否安装】:终端输入 ideviceinstaller
安装 ideviceinstaller
brew install ideviceinstaller
常用命令
# 打印app列表(查看已安装程序)
ideviceinstaller -l
# 卸载程序
ideviceinstaller -U [appId]
idevice installer -i xxx.ipa # 安装
idevice installer -u [udid] -i [xxx.ipa] # 给指定连接的设备安装应用
idevice installer -U [bundleID] # 卸载
如果电脑连接了多台设备,查看、安装及卸载程序的命名均需要通过 -o [udid] 参数来指定设备
ideviceinstaller -i [ipa文件] -o [设备udid]
ideviceinstaller -l -o [设备udid]
ideviceinstaller -U [appId] -o
相关命令:
注:bundle_id就是应用包名
获取设备的的UDID
idevice_id --list # 显示当前所连接设备的 udid
instruments -s devices # 列出所有设备,包括真机、模拟器、mac
ideviceinfo 可以在返回的数据中找到 udid
idevice_id -l
苹果手机 safari打开网址http://fir.im/udid 就看到了
设置代理
(可以用于转发端口,比如将ssh的端口映射到电脑,这样没有网络也可以ssh登录)
iproxy (该工具会将设备上的端口号映射到电脑上的某一个端口)
iproxy 8200 8100
挂载DeveloperDiskImage
用于调试
ideviceimagemounter
安装某个app
ideviceinstaller -i apppath 安装apppath下的app
ideviceinstaller -i xxx.ipa //命令安装一个ipa文件到手机上,如果是企业签名的,非越狱机器也可以直接安装了。
ideviceinstaller -u [udid] -i [xxx.ipa] # xxx.ipa 为应用在本地的路径
卸载应用
ideviceinstaller -u [udid] -U [bundleId] 卸载应用,需要知道此应用的bundleID
ideviceinstaller -U <bundleId>
查看设备已安装的应用
ideviceinstaller -u [udid] -l # 查看设备安装的第三方应用
ideviceinstaller -u [udid] -l -o list_user # 同上,查看设备安装的第三方应用
ideviceinstaller -u [udid] -l -o list_system # 查看设备安装的系统应用
ideviceinstaller -u [udid] -l -o list_all # 查看设备安装的所有应用
获取设备信息
ideviceinfo -u [udid] # 获取设备信息
ideviceinfo -u [udid] -k DeviceName # 获取设备名称 同命令 idevicename
idevicename # 同上
ideviceinfo -u [udid] -k ProductVersion # 获取设备版本 10.3.3
ideviceinfo -u [udid] -k ProductType # 获取设备类型 iPhone 8,1
ideviceinfo -u [udid] -k ProductName # 获取设备系统名称
其他系统文件信息
ideviceinfo # 获取设备所有信息
idevicesyslog # 获取设备日志
idevicesyslog >> iphone.log &
//该命令是将日志导入到iphone.log这个文件,并且是在后台执行。
idevicecrashreport -e test # 获取设备 crashlog,test 是文件夹需新建
idevicediagnostics # 管理设备状态 - 重启、关机、睡眠等
ios-deploy 常用命令
ios-deploy -c # 查看当前链接的设备
ios-deploy --[xxx.app] # 安装APP
ios-deploy --id [udid] --uninstall_only --bundle_id 包名 # 卸载应用
ios-deploy --id [udid] --list_bundle_id # 列出所有应用的包名
ios-deploy --id [udid] --exists --bundle_id 包名# 指定设备查看应用是否安装 (如ios-deploy --id 95923223205 --exists --bundle_id com.dlte.666)
ios-deploy -e --bundle_id 包名 #不指定设备判断是否安装此包(用于只有一台手机)
列举设备安装的应用
ideviceinstaller -l则可以列出手机上所有的用户安装的app
运行某个app
调试程序(需要预先挂载DeveloperImage)
idevicedebug run 'APP_BUNDLE_ID'可以直接launch某个app,当然,这个app必须是你通过development证书build到手机上的才行。
获取手机的设备版本(系统版本)
Ideviceinfo -k ProductVersion
获取手机的设备名(手机型号)
ideviceinfo -k ProductType
截图
idevicescreenshot
//如果在使用截图的时候出现报错信息,那么就去把相应版本的DeveloperDiskImage的两个文件复制到libimobiledevice文件下面。
路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/对应版本/
录像
xrecord --quicktime --list
xrecord --quicktime --name="iPhone" --out="/Users/blah/video/iphone.mp4" --force
手机关机
idevicediagnostics shutdown # shutdown device
重启手机
idevicediagnostics restart # restart device
休眠(熄屏灭屏)
idevicediagnostics sleep # 类似于断开adb . (disconnects from host)
获取设备时间
idevicedate
参考:https://www.cnblogs.com/chen-xia/articles/14268025.html
1.iPhone默认是使用22端口进行SSH通信,采用的是TCP协议。
2.要想保持端口映射状态,不能关闭第一个终端窗口,如果要执行其他终端命令行,请新开一个终端窗口。
3.不一定非要10010端口,只要不是保留端口就行。
4.localhost是一个域名,指向的IP地址是127.0.0.1,本机虚拟网卡的IP地址。
5.usbmuxd会将Mac本地10010端口的TCP协议数据,通过USB连接转发到iPhone的22端口。
在 Mac 端,是由「/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd」处理,并通过 launchd 启动。其将会在「/var/run/usbmuxd」创建一个 UNIX Domain Socket(UNIX 域套接字),usbmuxd 将监听 USB 接口的 iPhone 连接。当 iPhone 在正常模式下连接,其将会连接到该 iPhone,并将开始转发通过「/var/run/usbmuxd」接收到的请求。
挂载文件系统工具:ifuse
ifuse是一个依赖libimobiledevice库的工具,所以必须首先安装libimobiledevice
brew install osxfuse
brew install ifuse
挂载某应用的整个沙盒目录
ifuse --container [要挂载的应用的bundleID] [挂载点]
如果是越狱的设备,并且配置好了,可以使用下面命令挂载整个iphone文件系统(暂时没试过,还没有开始研究越狱设备)
ifuse --root [挂载点]
学习完善修正中。。。。
ios逆向学习环境安装(一)相关推荐
- IOS逆向学习-Tweak
IOS逆向学习-Tweak 1. theos指令及可能遇到问题 2. thes的实战练习 2.1 将桌面的更新数字去掉 2.2. 给微信发现界面增加两行功能 2.2.1 hook代码语法知识 2.2. ...
- android 和ios 混合式开发环境安装
android 和ios 混合式开发环境安装 1.安装nodejs 官网下载:https://nodejs.org/en/ 下载node-v8.10.0-x64.msi 安装 2.安装ionic和co ...
- 深度学习环境安装之显卡驱动程序安装
深度学习环境安装包括显卡驱动程序安装.CUDA/cudnn安装.TensorFlow2安装和pycharm环境配置与测试四部分,今天我们先讲显卡驱动安装 首先先检查自己的自己 的电脑有没有GPU,如果 ...
- 【慕伏白教程】《动手学深度学习》学习环境安装流程
[慕伏白教程]<动手学深度学习>学习环境安装流程 一.Conda环境的安装 1. 安装Anaconda 二.安装CUDA 1. 下载相应CUDA版本 三.配置虚拟环境 1. 卸载虚拟环境 ...
- DL之IDE:深度学习环境安装之CUDA的简介(显卡GPU/驱动/CUDA间的关系)、安装(根据本地电脑的NVIDIA显卡驱动版本去正确匹配CUDA版本)之详细攻略
DL之IDE:深度学习环境安装之CUDA的简介(显卡GPU/驱动/CUDA间的关系).安装(根据本地电脑的NVIDIA显卡驱动版本去正确匹配CUDA版本)之详细攻略 目录 CUDA的简介 1.显卡GP ...
- DL之IDE:深度学习环境安装之NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略
DL之IDE:深度学习环境安装之NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略 目录 根据Anaconda的CUDA版本去安装对应匹配的N ...
- DL之IDE:深度学习环境安装之Visual Studio 2015版本+CUDA8.0+Cudnn8.0+OpenCV 3.1.0版本完美搭配安装图文教程之详细攻略
DL之IDE:深度学习环境安装之Visual Studio 2015版本+CUDA8.0+Cudnn8.0+OpenCV 3.1.0版本完美搭配安装图文教程之详细攻略 导读:网上教程一大把,瞎指挥的不 ...
- python学习环境安装_python学习系列----环境的安装
最近又想捣鼓下Python了,一来也是给自已找点事吧,毕竟做这行不进则退呀:我平时上班是做PHP的.所以其它时候还是想通过多学习提高下自已吧.好了,废话说完了,正题 其实以前也用过Pyth ...
- openai的gym baseline spiningup 深度强化学习环境安装 手撸gym环境demo
按照spiningup我们学习DRL,链接 https://github.com/openai/gym https://github.com/openai/baselines 1. 安装anacond ...
最新文章
- 宜信开源|数据库审核软件Themis的规则解析与部署攻略
- JavaScript window.document的属性、方法和事件小结
- flume ng之组件介绍
- Web开发模式【Mode I 和Mode II的介绍、应用案例】
- ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(10)之素材管理
- MYSQL查询优化:show profile
- sql两个in并列_SQL窗口函数
- HDU 3328 Flipper 栈 模拟
- 零基础如何快速入门深度学习?
- 关于linux文件系统出现脏数据修复的思路
- python手绘图_用Python轻松实现手绘图效果
- 怎么修改照片文件的大小?教你一招改变图片大小尺寸
- 定义Java中的方法及调用
- 文件夹共享失败解决方式
- 未来10年35项最值得你期待的技术
- 每日总结(2021/12/15)
- java socket 读取文件_java中ServerSocket读取文件流不是分行读取
- Python列表练习——用户管理
- 手机运行慢可以刷机吗_智能手机反应慢怎么处理?【详解】
- 遮挡目标检测持续汇总