iOS App注入SDK调试

uni-app H5跳回小程序的完整指南:从jssdk配置到navigateTo实战 本文详细介绍了uni-app中H5页面跳转小程序的完整实现方案,从JS-SDK配置到navigateTo实战应用。涵盖环境准备、项目配置、参数传递及常见问题排查,帮助开发者实现流畅的跨端导航体验,特别适合需要H5与小程序无缝跳转的场景。 阅读详情

前言

本文仅作为技术分享,对于一些iOS SDK开发以及维护所遇到的场景问题进行处理,例如:

  1. 客户想提前知晓线上App集成我们SDK后,是否会有SDK兼容性问题,例如Crash,符号冲突

  2. 客户线上App集成了我们SDK,出现了问题,如何进行排查

  3. 我们想测试SDK在某一款App中是否功能正常

对于这些问题,一般来说我们无法拿到App的源码,想要处理这些场景,就需要拿到客户App文件并注入代码,接下来我们从 iOS越狱、frida砸壳、MonkeyDev来讲述如何实现。

iOS 越狱

为什么需要越狱?因为正常情况下,我们无法从手机中获取到App的包文件,只能通过越狱机 动态砸壳 获得ipa包,使用目前主流的 unc0ver 进行越狱。

unc0ver

对于 iOS 的越狱,这里使用的是 unc0ver ,最新版本支持 iOS 11 - iOS 14.3 版本的非完美越狱,这里采用使用 iphone 5S, iOS 12.4.9 为例,进行 非完美越狱

越狱有分为“完美越狱”和“不完美越狱”。完美越狱简单地说就是越狱很彻底,破解了操作系统的读写权限,完美越狱完成以后可以自由使用,开关机,下载等。称为“完美越狱”。而不完美越狱,则表示iPhone或iPad不能像越狱之前一样随时可以关机,关机重启后越狱失效,需要再进行越狱操作。

对于 unc0ver ,我们使用 Xcode + iOS App Signer 方式进行安装 unc0ver App

通过上述步骤生成的 unc0ver ipa 是符合苹果要求的,你也可以通过 i4助手(爱思助手) 进行快捷安装到手机中。

打开 unc0ver,点击 Jailbreak 进行越狱,期间弹出 REBEL 不要管它,叉掉,继续。提示你重启就重启,该允许的允许,然后继续打开 unc0ver 继续,直到 unc0ver 完成越狱,越狱好后,手机界面会多出Cydia和Substitude,同时打开 unc0ver 显示 Re-Jailbreak 。

配置 Cydia

  1. 点击 Cydia->软件源->编辑->添加 添加源 build.frida.re ,apt.cydiami.com,并进行更新。

  2. 搜索 SSH ,选择 OpenSSH 进行安装

  3. 搜索 frida ,由于是 5S,我们选择 Frida for pre-A12 devices

  4. 搜索 AFC ,安装 AFC2 iOS12系统文件访问

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

Frida 砸壳

砸壳的目的是为了获取 ipa 包,由于Appstore默认给应用程序加了壳(并不知道其使用了那种加密方式),所以需要先砸壳(相当于获取解密后的文件),你可以通过 AppStore 下载你需要砸壳的 App ,也可以下载 i4助手 上的 App ,安装到手机上后,我们进行动态砸壳。

动态砸壳:在运行进程内存中的可执行程序映像入手,将内存中的内容进行转储处理来实现砸壳。该方法相对简单,并且不用关心应用所使用的加密技术。

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

  • 下拉 frida-ios-dump

git clone https://github.com/AloneMonkey/frida-ios-dump

下拉仓库。

  • 安装Python brew install python

  • 安装wget brew install wget

  • 安装pip

wget <https://bootstrap.pypa.io/get-pip.py> sudo python get-pip.py

  • 安装frida sudo pip install frida –-upgrade –ignore-installed six

  • 安装脚本依赖环境

cd frida-ios-dump目录下
csudo pip install -r requirements.txt --upgrade
  • 安装usbmuxd与手机通信 brew install usbmuxd

  • 通过USB使用ssh连接设备,将22映射到电脑上的2222端口

iproxy 2222 22
  • 另开终端加入连接 密码为设备的登录密码alpine,需要保持连接

ssh -p 2222 root@127.0.0.1
或 ssh root@127.0.0.1 -p 2222
  • 由于是动态砸壳,我们打开需要砸壳的app,使用 frida-ps -Ua 查看正在运行的应用程序,记录下标识

 PID  Name   Identifier           
----  -----  ---------------------
4621  爱思极速版  rn.notes.best        
4650  番茄小说   com.dragon.read      
4720  设置     com.apple.Preferences
4547  邮件     com.apple.mobilemail 
  • 然后cd到frida-ios-dump目录下,执行 dump.py 命令

dump.py com.dragon.read
  1. 这里第一次运行在 0.00B [00:00, ?B/s] 卡住了,执行 Ctrl + C 取消,再重新开始 dump.py

  2. 最终在frida-ios-dump目录下得到砸壳ipa 文件

MonkeyDev

原有iOSOpenDev的升级,非越狱插件开发集成神器,这里仅仅使用了其部分功能,具体的安装步骤说明见 MonkeyDev安装 。

使用

  • 拿着之前通过Frida砸壳获取的 ipa包(例如:某宝,某度,某某音乐),先创建一个 MonkeyDev 工程。这里以 PlayTheApp 为例

  • 将砸壳的 ipa 放到 PlayTheApp/TargetApp/ 下,然后拖拽至工程文件中。

  • 设置主工程的证书,dylib的不用设置

提示 Showing All Messages Signing for "PlayTheAppDylib" requires a development team. Select a development team in the Signing & Capabilities editor. ,此时选择 PlayTheAppDylib->Build Settings->Add User-Defined Setting 添加 CODE_SIGNING_ALLOWED 为 NO,再运行即可。

  • file not found: /usr/lib/libstdc++.dylib 问题

原因是新版本xcode去掉了libstdc++这个库,从老版本复制过来即可,这里直接使用Github上的 GitHub - devdawei/libstdc-: Xcode 10、11 和 12 中删除的 libstdc++ 库 (目录权限问题这里不再阐述)

注入SDK

  • 可以运行之后,我们在工程中初始化pod,

修改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
  • 查找对应的appdelegate类,使用class-dump命令

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

发现其 AppDelegate 类叫 XXXXAppDelegate

// See <http://iphonedevwiki.net/index.php/Logos>

#import <UIKit/UIKit.h>
#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,并有相关日志输出了。

至此我们解决了 前言 中所述的第1以及第3个场景问题,对于第2个问题,如何排查线上App所出现的SDK问题,则需要通过MonkeyDev运行之后观察日志输出,搭配注入代码,找准合适的入口方法或函数,进行方法交换,测试修改后,判定出现问题的点再判断如何解决。

局限性

对于此方案仍有不足

  1. 对于部分App,即使砸壳后也无法正常使用。

  2. 如果App集成了老版本SDK,想要注入新版本SDK,就需要替换原文件或重命名。

此方案仍具有局限性,但足以应付大多数情况,后续我们也在完善这些不足,向自动化平台方案发展。

手把手教你用MonkeyDev给iOS应用注入埋点SDK(以QQ音乐为例) 本文详细介绍了如何使用MonkeyDev工具在iOS平台上为无源码应用(以QQ音乐为例)注入埋点SDK的完整流程。从逆向工程基础准备、MonkeyDev工程配置到埋点SDK集成实战,提供了逐步指导和常见问题解决方案,帮助开发者高效实现数据采集功能。 阅读详情

相关推荐

用MonkeyDev给第三方App注入埋点SDK(以QQ音乐为例,含libstdc++库缺失解决方案)

本文详细介绍了如何使用MonkeyDev工具为第三方App(如QQ音乐)注入埋点SDK,实现无埋点数据采集。从环境搭建、libstdc++库缺失解决方案到SDK集成与数据验证,提供了一套完整的逆向注入技术方案,适用于竞品分析和数据模型验证等场景。

weixin_30312563的博客 225

iOS应用安全加固实战:无源码混淆、加密与反调试全解析

在移动应用开发领域,应用安全加固是保障知识产权和商业利益的关键环节。其核心原理在于通过一系列技术手段,提升应用被逆向分析和恶意篡改的难度与成本。从技术价值看,有效的加固能保护核心算法、业务逻辑及敏感数据,防止应用被破解、广告被去除或内购被绕过,直接关系到开发者的收入与应用生态的健康发展。具体技术实现上,主要围绕加密、混淆和完整性保护三大支柱展开:加密确保静态数据(如资源文件、字符串常量)的保密性;混淆通过重命名标识符、打乱控制流等方式,让反编译后的代码难以阅读理解;完整性保护则通过反调试、代码签名校验等手段

weixin_42539414的博客 225

告别越狱!用TrollFools给任意iOS App注入动态库(附完整注入流程)

本文详细介绍了如何利用TrollFools工具在不越狱的情况下实现iOS应用的动态库注入,包括环境搭建、动态库开发、注入流程及验证方法。通过TrollFools,开发者可以轻松为任意iOS应用添加自定义功能,适用于功能扩展、安全研究等场景。

weixin_30839881的博客 424

XZ_iOS之运行项目到真机出现错误的解决

运行WebDriverAgent工程到手机上,之前一直都是可以的,今天出现下面错误:Code signing is required for product type 'Application' in SDK 'iOS 11.2'.Signing for "IntegrationApp" requires a developement team. Select a developement tea...

understand_XZ的博客 1640

iOS逆向实战:用MonkeyDev+Logos给第三方App(如QQ音乐)无痕集成GrowingIO SDK

本文详细介绍了使用MonkeyDev和Logos技术为第三方App(如QQ音乐)无痕集成GrowingIO SDK的iOS逆向工程实战。通过环境搭建、目标应用分析、SDK集成与初始化等步骤,帮助开发者掌握逆向工程核心技术,实现数据分析SDK的无缝注入。

weixin_33695450的博客 208

iOS app安全技术总结

iOS app安全技术总结        很多开发者认为,iOS系统的封闭性使APP更加安全。事实上,根据国外某安全服务商的最新调查显示:iOS前100名的付费应用中有87%均遭黑客破解。内购破解、源代码破解、本地数据窃取等,为iOS应用带来了诸多风险。常见的比如有恶意植入广告插件、扣费代码、替换支付链接,导致用户向私人账户付费、收集用户隐私、盗取用户收集通讯录、窃取金融APP账号密码,盗取资金等...

lsxf_xin的专栏 1万+

Showing All Messages Signing for “Runner“ requires a development team. Selec

1.Showing All Messages Signing for "Runner" requires a development team. Selec 2.Showing All Messages Failed to register bundle identifier: The app identifie 这上面两个都是苹果证书错误,我报了之后怎么看都是填了啊,为什么会这样呢,一直搞了之后发现一个事实 我忽略了当前页面上是Debug,只设置了Debug的页面的bundle id 一定要点Al.

qq_36632604的博客 5569

告别模拟器:用MonkeyDev在真机调试第三方SDK的避坑指南(Xcode 15+)

本文详细介绍了如何使用MonkeyDev在Xcode 15+环境下进行真机调试和第三方SDK注入的实战指南。通过环境配置、工程架构、动态注入等步骤,帮助开发者高效解决调试难题,提升开发效率。特别适合iOS开发者和逆向工程爱好者。

weixin_30785593的博客 200

升级到xcode 14.3相关问题(有毛病)

在podfile文件中,增加以下内容。最低版本支持 Minimum Deployments 11.0。在podfile文件中,增加以下内容。

qq_40150532的博客 2874

高分辨率航拍图像的目标检测切图优化策略

本文深入探讨了高分辨率航拍图像目标检测中的切图优化策略。针对大尺寸图像直接缩放导致小目标信息丢失的问题,文章详细阐述了基于重叠切割的核心方法,包括如何根据目标尺寸确定切图尺寸与重叠率,并提供了从切图到坐标还原的完整代码实现与避坑指南,有效提升检测精度与效率。

xk7n92h3p5m的博客 1113

无线通信入门:3种键控法(ASK/FSK/PSK)原理图解与实战对比

本文深入解析无线通信中ASK、FSK、PSK三种基础键控法的原理与应用。通过图解对比,阐明幅移键控(ASK)简单低成本但抗干扰差,频移键控(FSK)稳健且应用广泛,相移键控(PSK)高效但复杂。文章结合实战场景,为物联网和嵌入式开发者在选型时提供关键指导,帮助平衡数据速率、成本、功耗与抗干扰需求。

weixin_29274969的博客 188

iOS真机运行遇到的问题记录

OS version lower than deployment target 解决方案-更改降低iOS Deployment Target版本号 Showing Recent Messages: Signing for “XXX” requires a development team. Select a development team in the Signing & Capabilities editor. 解决方案-添加Team证书配置项 ...

简单记录 3473

PADS VX2.4 缝合孔(阵列过孔)的添加方法

缝合孔的主要目的是:①:增加底层和顶层的地铜皮的连接性,②:起到屏蔽外界信号干扰的作用。铺完铜后,右击空区域选择“选择形状”命令,选取整板中的一块大铜皮,右击选择“覆铜区域内过孔阵列模式”→“沿周边”指令后,再右击选择“覆铜区域内过孔阵列”,便能看到已选区域内添加的缝合孔(过孔阵列),也可以通过铜皮显示或隐藏的无模命令:PO进行查看。完成上面的“防止错误”和“过孔样式”的设置后,开始对整板进行铺铜处理,点击“工具栏”→覆铜平面指示器,在弹出的对话框点击“开始”,便能观察铺铜后的板子。

tianpu2320959696的博客 3049

Xcode8 Showing Recent Errors Only Signing for "你的工程名" requires a development team. Select a deve

更新Xcode8之后出现以下报错,出现这个问题的原因是你的team没有设置对。 解决办法,TARGETS---->Genernal----->Signing------>team,选择合适的选项,编译即可 选择好后,编译成功,错误解决:

yinbingbing123456的博客 3万+

基于Simulink的电机轴电压与轴电流抑制仿真

本文带你完成了电机轴电压与轴电流抑制的Simulink仿真,实现了:✅ 揭示了共模电压 → 寄生电容 → 轴电压 → 轴承电蚀的完整链路✅ 搭建了含寄生参数的高频电机等效模型共模电压最小化PWM(源头抑制)dv/dt滤波器(路径阻断)轴接地(终端泄放) ✅ 通过仿真验证了轴电压从68 V降至<3 V的显著效果 ✅ 为高可靠性电机系统提供低成本、高效益的轴承保护方案。

amy_mhd的博客 163

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

手把手教你用MonkeyDev给砸壳App注入埋点SDK(以QQ音乐为例)

本文详细介绍了如何使用MonkeyDev工具为砸壳App(以QQ音乐为例)注入埋点SDK,实现数据采集功能。从逆向工程环境搭建、目标应用处理、SDK集成到关键代码注入与调试技巧,提供了完整的实战指南。文章还涵盖了生产环境注意事项、高级技巧及数据安全合规要点,帮助开发者在合法范围内高效完成数据埋点集成。

weixin_33671935的博客 354

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

1589

iOS开发-逆向注入SDK(三)MonkeyDev注入打包

文章目录MonkeyDev使用注入SDK MonkeyDev 强大的工具集,MonkeyDev ,使用它行了! 安装教程见 Wiki 使用 拿着之前通过 frida砸壳 的 ipa包,先创建一个 MonkeyDev 工程。这里以 qqmusic 为例 将砸壳的 ipa 放到 qqmusic/TargetApp/ 下,然后拖拽至工程文件中。 设置主工程的证书,dylib的不用设置 提示 Showing All Messages Signing for "qqmusicDylib" requir

CaicaiNo.1 2921

深度学习(五)迁移学习(实战:新数据预测+vgg16和聚类预测)

6、成功引入PCA数据降维技术,剔除了数据中的噪音信息、降低了模型复杂度、减少了模型训练时间,并最终提高了模型表现;gen=datagen.flow_from_directory(path,target_size=(224,224),batch_size=2,save_to_dir=dst_path,save_prefix='gen',save_format='jpg') # 生成图片大小224*224,bs产生多少组图像,存储路径和前缀。1、通过使用新数据,实现了模型的2次训练,达到了较好的预测效果;

weixin_37699342的博客 775

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5213

告别Xcode libstdc++报错:手把手教你用MonkeyDev给砸壳App注入埋点SDK

本文详细介绍了如何通过MonkeyDev解决Xcode libstdc++报错问题,并手把手教你给砸壳App注入埋点SDK。从环境配置、工程创建到SDK集成与调试,提供全面的实战指南,帮助开发者高效完成iOS逆向工程中的SDK注入任务。

weixin_33737774的博客 310

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

全面适配iOS 18.4!通付盾加固产品全面升级,护航App安全上架

苹果官方新规落地! 自2025年4月24日起,所有提交至App Store Connect的应用必须使用Xcode 16或更高版本构建,否则将面临审核驳回风险!Beta版iOS 18.4、iPadOS 18.4现已推出,通付盾iOS加固产品率先完成双重适配——100%兼容iOS 18.4系统特性 + 无缝支持Xcode 16编译环境,为开发者提供「安全加固+合规上架」一体化解决方案,轻松应对上架审核挑战!

DCloud666的博客 1062

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

iOS 非越狱下的代码注入

目录免责声明非越狱下的代码注入步骤使用 ViewDebug 和导出的 Objective-C 类的头文件分析目标 AppObjective-C 方法常见的 Hook 方式 免责声明 本文为一篇严肃的学术研究型文章,文中所提及的注入手段仅供 iOS 底层技术的学习与交流,不针对任何公司与 App。 为防止读者将本文用于商业或者非法用途,本文不提供任何注入工具与重签名脚本。 读者如果将本文用于商业或者非法用途,则所产生的后果由读者自行承担。 非越狱下的代码注入步骤 材料与工具 WeChat

Airths 的博客 1557

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

xilinx bd修改后sdk如何刷新bsp_如何使用Theos对iOS应用程序进行注入

Theos 是一个越狱开发工具包,今天我就讲讲如何使用Theos对iOS应用程序进行注入。 方法1——Theos使用Theos进行调整,为了获得所有必要的信息,我搭配使用了其他工具,有:1.Frida:一款基于python +java的hook框架,可运行在androidioslinuxwinosx等各平台,主要使用动态二进制插桩技术。2. Passionfruit:一个iOS应用程序黑...

weixin_39675038的博客 289

electron 打开调试_构建基于 iOS 模拟器的前端调试方案

作者:imyzf本文将为大家介绍自动化控制 iOS 模拟器的原理,为开发基于 iOS 模拟器的前端调试方案提供帮助。我们在开发 iOS App 内的前端页面时,有一个很大的痛点,页面无法使用 Safari Inspector 等工具调试。遇到了问题,我们只能想办法加 vConsole,或者注入 Weinre,或者盲改,实在不行就找客户端同学手动打包调试,总之排查问题的路途非常艰难。在参考了 RN ...

weixin_32795427的博客 1005
上一篇: Jira Automation 探索与实践
下一篇: GrowingIO Design 组件库搭建之单元测试
GrowingIO_
博客等级 码龄8年 56粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值