天空游戏网 手游攻略 手游攻略 6.13完美越狱|iOS App注入SDK调试

6.13完美越狱|iOS App注入SDK调试

时间:2023-04-14 08:05:07 来源:网络整理 浏览:17

前言

本文仅作技术分享,处理iOS SDK开发维护中遇到的一些场景,例如:

客户想提前了解在线APP集成我们SDK后是否会出现SDK兼容性问题,如Crash、符号冲突等。 客户的线上应用集成了我们的SDK,出现了问题。 如何排除故障? 我们想在某个app中测试SDK是否正常运行

对于这些问题,一般来说,我们是无法拿到app的源码的。 为了应对这些场景,我们需要获取客户端的应用程序文件并注入代码。 接下来,我们将从iOS越狱和frida破壳两个方面来介绍如何实现。

iOS越狱

为什么需要越狱? 因为一般情况下,我们无法从手机端获取到App的包文件,只能通过越狱机的动态破壳获取ipa包,使用目前主流的越狱。

iOS越狱,最新版本支持iOS 11-iOS 14.3的不完美越狱。 这里以5S、iOS 12.4.9为例进行不完美越狱

越狱分为“完美越狱”和“不完美越狱”。 简单来说,完美越狱就是越狱的很彻底,把操作系统的读写权限都破解了。 完美越狱完成后,可以自由使用,开关机,下载等,称之为“完美越狱”。 如果越狱不完美,就意味着iPad无法像越狱前那样随时关机。 关机重启后会越狱失败,需要重新进行越狱操作。

对于,我们使用Xcode + iOS App来安装App

通过以上步骤生成的ipa满足苹果的要求,你也可以通过i4助手(爱思助手)快速安装到手机上。

打开,点击越狱,期间弹出REBEL,不用管6.13完美越狱,fork一下,继续。 如果提示重启,就重启,允许,然后继续打开继续,直到越狱完成。 越狱完成后,手机界面会同时显示Cydia和Re-。

6.13完美越狱|iOS App注入SDK调试

配置Cydia 点击Cydia-> ->Edit->Add 添加源build.frida.re,更新。搜索SSH,选择安装搜索frida,因为是5S6.13完美越狱,我们选择Frida for pre-A12,搜索AFC,安装AFC2 iOS12系统文件访问

至此,越狱完成,可以访问系统文件了。

弗里达粉碎外壳

砸壳的目的是获取ipa包。 由于应用程序默认是脱壳的(我不知道它使用的是哪种加密方式),所以需要先脱壳(相当于获取解密后的文件)。 您可以通过您需要的破壳App下载,也可以在i4助手上下载该App,安装到手机上后,我们会动态破壳。

动态脱壳:从运行进程内存中的可执行程序映像开始,dump内存中的内容,实现脱壳。 这种方法比较简单,不关心应用程序使用的加密技术。

对于各种脱壳方案,这里使用Frida脱壳:

混帐克隆

拉下存储库。

wget sudo get-pip.py

cd frida-ios-dump目录下
csudo pip install -r requirements.txt --upgrade

6.13完美越狱|iOS App注入SDK调试

iproxy 2222 22

ssh -p 2222 root@127.0.0.1
或 ssh root@127.0.0.1 -p 2222

 PID  Name   Identifier           
----  -----  ---------------------
4621  爱思极速版  rn.notes.best        
4650  番茄小说   com.dragon.read      
4720  设置     com.apple.Preferences
4547  邮件     com.apple.mobilemail 

dump.py com.dragon.read

这里第一次运行卡在0.00B[00:00,?B/s],执行Ctrl+C取消,然后重启dump.py,最终得到frida-ios-dump目录下的shell ipa文件

原版升级,非越狱插件开发集成神器,这里只用到其部分功能,具体安装步骤详见。

使用

提示全部为“”一个团队。 & 中的一个团队。 这时候选择->Build->Add User-

将其添加到 NO 并再次运行。

6.13完美越狱|iOS App注入SDK调试

注入SDK

修改pod文件,注释use_frameworks!
# platform :ios, '9.0'
target 'PlayTheApp' do
  # Comment the next line if you don't want to use dynamic frameworks
  # use_frameworks!
  pod 'GrowingAnalytics-cdp/Autotracker'
  # Pods for PlayTheApp
end
target 'PlayTheAppDylib' do
  # Comment the next line if you don't want to use dynamic frameworks
  # use_frameworks!
  pod 'GrowingAnalytics-cdp/Autotracker'
  # Pods for PlayTheAppDylib
end

1class-dump -H xxx.app -o yourDir/Headers

发现它的类叫做

// See 
#import 
#import "GrowingAutotracker.h"
static NSString *const kGrowingProjectId = @"91eaf9b283361032";
%hook XXXXAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        BOOL result = %orig;
    GrowingTrackConfiguration *configuration = [GrowingTrackConfiguration configurationWithProjectId:kGrowingProjectId];
    configuration.debugEnabled = YES;
    configuration.impressionScale = 1.0;
    configuration.dataCollectionServerHost = @"https://run.mocky.io/v3/08999138-a180-431d-a136-051f3c6bd306";
    [GrowingAutotracker startWithConfiguration:configuration launchOptions:launchOptions];
        return result;
}
%end

然后再次编译运行,即可在App中调试SDK,并有相关日志输出。

至此我们已经解决了前言中提到的第一个和第三个场景问题。 对于第二个问题,如何排查在线App中的SDK问题,需要观察运行后的日志输出,匹配注入的代码,找出合适的入口方法或函数,进行方法交换,测试修改,确定问题点,然后确定如何解决它。

局限性

这个方案还是有不足的

有些APP即使破壳后也无法正常使用。 如果应用集成了旧版SDK,如果要注入新版SDK,需要替换原文件或重命名。

该方案仍有局限性,但足以应付大多数情况。 我们也在改进这些缺点,朝着自动化的平台解决方案发展。

标题:6.13完美越狱|iOS App注入SDK调试
链接:https://www.skyyx.com/news/gl/23733.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
魔兽世界怀旧服锻造分支怎么选择60年代分支选择推荐

在全新的魔兽世界怀旧服游戏中,有着很多的玩家都选择锻造这个专业技能,但是对于锻造分支应该怎么选择?还有对

2023-04-14
冒险岛小衣来特任务攻略,冒险岛阿里安特文化的任务这个很多人还不知道

冒险岛阿里安特任务攻略,冒险岛阿里安特任务这个很多人还不知道,现在让我们一起来看看吧!2、二、《冒险岛》里

2023-04-14
在系统宝石学中,宝石分为两大类:有机宝石和无机宝石

6、有机宝石需注意保养。了解了宝石的分类和特性以后,就可以根据它们各自不同的特点进行日常养护。所以说钻

2023-04-14
CFS21赛季枪王排位奖励有哪些?枪王奖励一览

CFS21赛季枪王排位快开始了,在新赛季的枪王排位中地图会进行改动,并且增加了新的段位,那么CFS21枪王排位奖励有

2023-04-14