ios实用开发技巧iOS开发iOS Developer

iOS逆向工程(9)免越狱集成Reveal和Flex到任意APP

2018-07-10  本文已影响77人  ForestSen

背景


先演示下效果(抖音APP示例)

快速集成 - 步骤

  1. brew install ldid
  2. 通过脚本安装Theos:https://github.com/bigsen/Theos-Script
  3. 安装 MonkeyDev
git clone https://github.com/AloneMonkey/MonkeyDev.git
cd MonkeyDev/bin
sudo ./md-install
  1. 下载工程后运行:https://github.com/bigsen/CrackeApp

目录

  1. Reveal 和 FLEX 介绍
  2. 搭建开发环境 - Theos
  3. 搭建开发环境 - MonkeyDev
  4. 获取脱壳后的 IPA
  5. 在IPA中植入 Reveal 和 Flex

1. Reveal 和 FLEX 介绍

(1)Reveal 是什么

(2)Reveal 延长试用时间方法

(1)FLEX 是什么

(2)FLEX 安装

(3)FLEX 功能:

  1. 查看、实时修改view(与Reveal相关功能类似,视觉验证中非常有用)


  2. 监控网络请求记录(与Charles抓包功能类似)


  3. 沙盒内容查看(数据持久化内容)


  4. 查看App中所有的类以及所用到的系统Framework。


  5. 动态查看和修改NSUserDefaults值。


  6. 快速查看打印日志(来自NSLog)

  7. 动态修改对象属性值。

  8. 动态调用实例和类方法。


2. 搭建开发环境 - Theos

(1)安装方式一(自动)

演示:


(2)安装方式二(手动)

1. 从 GitHub 上下载Theos
export THEOS=/opt/theos 
sudo git clone --recursive https://github.com/theos/theos.git $THEOS

小问题:git 克隆下来的theos,make packget install 如果提示提示缺少 _Prefix/NullabilityCompat.h 等文件,需要我们去https://github.com/theos/headers 把这个头文件放到/opt/theos/include目录中就行了。

sudo git clone https://github.com/theos/headers /opt/theos/include/
2. 配置ldid

ldid 是专门用来 名 iOS 可执行文件的工具,用以在越狱 iOS 中 代替 Xcode 自带的 codesign。

brew install ldid
sudo chmod 777 /opt/theos/bin/ldid
3. dpkg-deb
sudo chmod 777 /opt/theos/bin/dpkg-deb

3. 搭建开发环境 - MonkeyDev

git clone https://github.com/AloneMonkey/MonkeyDev.git
cd MonkeyDev/bin
sudo ./md-install

4. 获取脱壳后的 IPA (3种方法)

第一种:
第二种:
第三种:
第四种:

通过PP助手是下载越狱ipa文件。


5. 在IPA中植入Reveal 和 Flex

到现在这一步我们已经有了:
然后我们就可以正式开始我们的集成工作:

(1)新建 MonkeyDev 工程。

(2)替换 Reveal Framework 为自己电脑当前对应版本。

sudo rm -f -r /opt/MonkeyDev/Frameworks/RevealServer.framework
sudo cp -f -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework /opt/MonkeyDev/Frameworks/RevealServer.framework

(3)MonkeyDev 工程添加FLEX Pod依赖。

(4)注册监听,初始化FLEXManager。

(5)放入脱壳后的ipa到MonkeyDev工程。
然后运行MonkeyDev工程。

某些APP启动会Crash,需要打开AntiAntiDebug.m,取消注释这句话。
rebind_symbols((struct rebinding[1]){{"sysctl", my_sysctl, (void*)&orig_sysctl}},1);


文中Demo示例:https://github.com/bigsen/CrackeApp

参考文章

参考书籍

上一篇下一篇

猜你喜欢

热点阅读