越狱教程:https://blog.csdn.net/Crazy_SunShine/article/details/90208725
当然越狱之后,就要尝试hook其他应用。
首先在 Cydia 中安装 OpenSSH(搜索安装即可)
将可执行文件Cluth拷贝至手机:
1.下载并编译:
$ git clone https://github.com/KJCracks/Clutch
$ cd Clutch
// 使用 Xcode 进行build,得到可执行文件
$ xcodebuild -project Clutch.xcodeproj -configuration Release ARCHS="armv7 armv7s arm64” build
当然,也可以直接下载编译完成的Cluth(https://github.com/KJCracks/Clutch/releases)
2.将可执行文件通过SSH拷贝至手机(your.device.ip 在手机无线网络设置中,查看ip)
scp Clutch/clutch root@:/usr/bin/
如果拷贝成功,直接第三步,失败的话参考下面
如果发现控制台无反应(像是卡死状态),那么再连接ssh试一下是否可以:
ssh root@
反应如上述(卡死状态),说明之前只执行了越狱操作,并未安装App Sync。
如果未安装App Sync,则无法访问手机的根文件系统,故而出现上述问题。
1).爱思越狱,如果iOS10.0以下,直接使用爱思一键安装App Async;iOS10.0以上,需要添加官方App Sync源(参考:https://www.i4.cn/news_detail_13094.html)。
源URL:https://cydia.angelxwind.net/
2).PP越狱(参考:http://bbs.25pp.com/thread-171765-1-1.html)。
源URL:http://apt.25pp.com
下面,重新执行拷贝操作。
3.SSH到越狱手机,查看当前应用(若无权限,先执行 chmod 755 /usr/bin/Clutch* ):
Clutch -i
砸壳(开始时执行一直失败,后来卸载微信重新安装,执行成功,可以在控制台看到存放路径,取出至桌面):
//如微信 ,BundleId 是 com.tencent.xin
Clutch -d BundleId
4.使用 class-dump 获取 .app 的头文件
首先,下载 class-dump (http://stevenygard.com/projects/class-dump/),将 class-dump 放入 /usr/bin 路径下(如果无权限则查看 Mac下/usr/bin无权限)。
获取app的头文件(~/Document/headers/ 本地存放路径,可以修改):
class-dump -S -s -H WeChat.app -o ~/Document/headers/
本文主要写Hello World,暂时用不到头文件,后续如果开发功能,需要仔细研究。
5.安装配置Theos
安装步骤(https://github.com/theos/theos/wiki/Installation-macOS):
然后执行:
brew install ldid xz
//注意:如果提示brew updating, 但是控制台处于卡死状态,需要更换镜像源( 更新brew无响应);如果安装多个Xcode,并且默认的是旧版本,需要更新至最新版本的路径(更新默认Xcode路径)。
先在 .bash_profile 中配置环境,(~/jailbreak/theos/)是theos的指定存放路径,需要更换成本机的指定存放地址:
export PATH=~/jailbreak/theos/bin:$PATH
export THEOS=~/jailbreak/theos
//配置立刻生效
source .bash_profile
git clone --recursive https://github.com/theos/theos.git $THEOS
如果 $THEOS 路径配置成功,则直接下载到该路径。
下载SDK(https://github.com/theos/sdks),放入 theos 的 sdks 文件夹下。
curl https://ghostbin.com/ghost.sh -o $THEOS/bin/ghost
chmod +x $THEOS/bin/ghost
6.创建tweak
使用 nic.pl 命令,选择 iphone/tweak,然后配置其他项:
填写完毕后,会生成四个文件(Makefile 、example.plist、Tweak.x 、control):
- Makefile (详情:https://blog.csdn.net/qq_15807167/article/details/77092674)
工程信息,包含 处理器架构(ARCHS)、SDK版本(TARGET)、库(frameworks)等等。
- .plist
Tweak 对象的 BundleID
- control
Tweak创建时的基本信息
- Tweak.x
编写hook代码的文件,.x 文件支持Logos语法,.xm文件支持Logos 和 C/C++语法。
首先,修改Makefile文件,以及在Tweak.x 中输入hook代码。(参考:iOS 逆向 -- 简单 hook 微信,实现hello World)
然后,使用 make 进行编译时,首先 make clean,会在当前文件夹下生成 .theos 文件夹,编译的动态库就在 .theos/obj/debug 下。
注意:编译时,如果出现*** missing separator. Stop.错误,表明 tab 键有问题。如果用Xcode编写,需要在 Preference -> Text Editing -> Indentation -> Prefer indent using 选择 Tabs,默认是Spaces。然后在Makefile文件中,将之前 Tab 键替换。
7.查看上述生成的动态库并更改依赖
查看:
otool -L WQDemo.dylib
会发现依赖 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate (compatibility version 0.0.0, current version 0.0.0),需要更改。
更改依赖:
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WQDemo.dylib
8.依赖注入App
首先下载 insert_dylib:
git clone https://github.com/Tyilo/insert_dylib
Xcode打开insert_dylib项目,Command + B 编译出 insert_dylib文件。
然后将 WQDemo.dylib和 libsubstrate.dylib(在 /theos/bin 中找,如果不存在,下载https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 即可) 拷贝到WeChat.app 中。
最后,将 insert_dylib 文件 与 WeChat.app 放入同一文件夹,然后执行:
./insert_dylib @executable_path/WQDemo.dylib WeChat.app/WeChat
成功之后,删除WeChat,将 WeChat_patched 改成 WeChat。
9.打包
下载工具 iOS-app-signer:https://github.com/DanTheMan827/ios-app-signer/releases
打开iOS-app-signer,选择WeChat.app ,选择对应 bundleID 的 Provisioning Profiles,点击 start 开始制作 ipa。
利用PP助手,或者 Xcode 安装新的ipa。
出现的错误:
1.如果安装时提示 WatchApp 相关的错误,那么在制作ipa之前,在WeChat.app中删除Watch文件夹。
2.如果安装后闪退,查看DeviceLogs,发现Library not loaded,说明可能进行第8步时,注入动态库存在问题,比如WQDemo.dylib和 libsubstrate.dylib未放入WeChat.app中。
参考:
iOS 逆向 -- 简单 hook 微信,实现hello World
移动App入侵与逆向破解技术-iOS篇
-----------------------------------------------------------
个人博客:https://blog.csdn.net/Crazy_SunShine
个人公众号:Flutter小同学
个人网站:http://chenhui.today/