当前位置: 首页 > news >正文

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

b3946acb2fb6afa968a02f37f2bf214d.gif

Theos 是一个越狱开发工具包,今天我就讲讲如何使用Theos对iOS应用程序进行注入。

1b5ff5908d99e1c8ef43cdfdf87f9924.png方法1——Theos

使用Theos进行调整,为了获得所有必要的信息,我搭配使用了其他工具,有:

1.Frida:一款基于python +java的hook框架,可运行在androidioslinuxwinosx等各平台,主要使用动态二进制插桩技术。

2. Passionfruit:一个iOS应用程序黑盒审计工具,该工具由frida.re和vuejs共同驱动。

3.class-dump-swift :class-dump是进行iOS逆向开发常用的一款工具,其主要作用是导出App的头文件内容。根据这些头文件可以大致分析出APP的结构和内容。

4. Theos:Theos是iOS越狱插件开发的集成环境,它可以创建工程,调用XCode的命令行工具编译、ldid签名打包,并提供上传手机、安装等一系列操作,安装成功后可以Cydia的已安装插件中看到。

1b5ff5908d99e1c8ef43cdfdf87f9924.png安装条件

出于这个目的,我使用的是运行在iOS 12.4.3上的越狱版iPhone 6,越狱版使用的是带有mobilesubstrate软件包的Checkra1n。我的测试主机是macOS,根据操作系统的不同,你可能需要更改指令以匹配Windows或Linux。

1b5ff5908d99e1c8ef43cdfdf87f9924.png    安装Brew

通过运行该命令,我在macOS安装上安装了Homebrew。Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

1b5ff5908d99e1c8ef43cdfdf87f9924.png 安装XCode

Xcode是从Mac应用程序商店安装的,安装XCode后,在终端运行以下命令行工具:

xcode-select --install

1b5ff5908d99e1c8ef43cdfdf87f9924.png    安装Theos

要安装theos,你可以点此教程。总之,就是用以下命令将安装Theos:

brew install ldid xz 

echo "export THEOS=~/theos" >> ~/.profile 

echo "source ~/.profile" >> ~/.zshrc 

source ~/.zshrc git clone --recursive https://github.com/theos/theos.git $THEOS 

curl -LO https://github.com/theos/sdks/archive/master.zip 

TMP=$(mktemp -d) 

unzip master.zip -d $TMP 

mv $TMP/sdks-master/*.sdk $THEOS/sdks 

rm -r master.zip $TMP

1b5ff5908d99e1c8ef43cdfdf87f9924.png安装Frida(macOS)

安装Frida需要在主机上安装pip,安装pip后,运行以下命令安装必需的工具:

pip install frida-tools

1b5ff5908d99e1c8ef43cdfdf87f9924.png    安装Frida(iPhone)

请按照下列步骤操作:

1. 在Cydia中,转到“源”>“编辑”>“添加”;

2. 添加源链接;

3. 刷新源代码后,转到“搜索”,然后搜索Frida;

4. 安装Frida 12.8.1。

完成这些设置后,Frida将被安装在设备上。

安装Passionfruit

要安装Passionfruit,第一步是安装节点。使用命令brew install node安装节点。安装节点后,可以用npm install -g passionfriut来安装Passionfruit,然后可以与Passionfruit一起运行。

1b5ff5908d99e1c8ef43cdfdf87f9924.png安装二进制文件

为此,我假设测试人员用的是ipa,不过FreeIPA在实现上存在信息泄露漏洞,攻击者利用此漏洞可获取敏感信息。

1b5ff5908d99e1c8ef43cdfdf87f9924.png安装AppSync(iPhone)

请按照下列步骤操作:

1. 在Cydia中,转到“源”>“编辑”>“添加”;

2. 添加源链接;

3. 刷新源链接后,转到“搜索”,然后寻找AppSync Unified;

4. 安装AppSync Unified 70.0。

1b5ff5908d99e1c8ef43cdfdf87f9924.png安装ideviceinstaller

ideviceinstaller提供了安装,卸载,通过UDID定位等基础功能,基本上可以满足我们的自动化安装需要。

要安装ideviceinstaller,请运行以下命令:

brew install libimobiledevice brew install ideviceinstaller

1b5ff5908d99e1c8ef43cdfdf87f9924.pngideviceinstaller

有了Karen(AppSync Unified)提供的App Signing绕过功能,现在可以安装未签名的二进制文件。该应用可以通过以下方式安装:

ideviceinstaller -i

命令执行完成后,DVIA应用程序就被安装在iPhone上了。

1b5ff5908d99e1c8ef43cdfdf87f9924.png挂钩DVIA应用程序

挂钩应用程序可提供有关该应用程序的信息,在本文的示例中,我使用的是Passionfruit。首先,我使用USB将iPhone连接到主机。然后,在终端中,我运行Passionfruit,并进入http://localhost:31337进行浏览,如下所示:

755ff1b0f28e57b3695992948f05d9b7.png

单击设备菜单下的iPhone,我们可以看到设备上安装的所有应用程序:

16137e829f2900ac360cf41d9fb8b239.png

点击DVIA-v2应用程序,我可以看到这些应用程序的详细信息:

bebb031beb1ac1efed582d265724ff03.png

需要注意的重要信息是标识符:com.highaltitudehacks.DVIAswiftv2,接下来,可以在“类”选项卡中看到。在“类”选项卡的第2页上,可以看到:

现在,在确定了类之后,我需要查看可用的函数。单击DVIA_v2.HomeViewController,我可以看到可用的类:

0c5b989f8bb75649b552b7ec8fcfe023.png

此时,要挂接的函数是viewDidLoad。

1b5ff5908d99e1c8ef43cdfdf87f9924.png编写Theos代码

现在开始运行以下代码行编写代码:

$THEOS/bin/nic.pl

在此代码段内,唯一重要的是选择选项10-iphone / tweak,其他信息可以根据你的个人喜好进行修改。

现在,使用tweak目录,将Tweak.x文件重命名为Tweak.xm。你可以创建以下一些文件:

1. Makefile:Makefile定义了调整的构建方式;

2. control:定义有关调整的信息;

3. < Tweakname > .plist:这定义了将向其中注入调整的应用程序;

4. Tweak.xm:定义调整的代码。

有一些需要改变的地方,在Makefike中,我添加了一行:

THEOS_DEVICE_IP = x.x.x.x

在文件顶部,加一行

{ Filter = { Bundles = ( "com.highaltitudehacks.DVIAswiftv2" ); }; }

这告诉我们目标应用程序是DVIAswiftv2,它是我们从上面的Passionfruit获得的。Tweak.xm文件内容更改为以下内容:

%hook classname

-(void)viewDidLoad{

    %orig;

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Injection Test"

    message:@"A simple injection test on the application"

    delegate:nil

    cancelButtonTitle:@"Done"

    otherButtonTitles:nil];

    [alert show];

}

%end

%ctor{

%init(classname = objc_getClass("DVIA_v2.HomeViewController"));

}

重要的是,类名是在文件底部的%ctor代码块中定义的。

1b5ff5908d99e1c8ef43cdfdf87f9924.png安装调整

使用makefile中定义的Theos 设备IP时,安装调整就像运行命令一样简单:

make package install

它将提示你输入root密码, root用户的默认密码是alpine。

1b5ff5908d99e1c8ef43cdfdf87f9924.png总结

安装了tweak并运行DVIA v2应用程序后,我们将在tweak.xm文件中看到被定义过的警报:

9ff96f63becfcb5f01c7a86b45a4c012.png

1b5ff5908d99e1c8ef43cdfdf87f9924.png方法2——使用Supercharge程序

Supercharge程序的目标是提供与Theos相同的功能,同时被安装在iOS设备上。然而,在应用程序中,在编写目标脚本代码时似乎存在一些漏洞。修复漏洞后,将对其进行更新。

本文翻译自:https://arjunbrar.com/post/ios-application-injection

7f2f96fcc5be8a3ec8fce2743635409a.png

409ddf37b9df6da20c40b97392e9387f.png

相关文章:

  • mysql 统计查询总数_详解慢查询日志分析工具mysqlsla--概念、选型、安装及实例说明...
  • python去除注释语句_Python文件去除注释的方法
  • qtdesigner 如何清空输入框_如何进行开发需求分解?
  • struts2 404找不到action_看到这些404页面文案,就算网页打不开也值了
  • filezilla 后文件传输失败_超好用!这款大文件传输工具,能把其他软件摁在地上摩擦!...
  • python淘宝秒杀脚本视频教程_Python脚本实现淘宝准点秒杀功能
  • 大数据学习路线_好程序员大数据学习路线分享UDF函数
  • pythonscatter简书_Python笔记 - tkinter
  • 模糊查询正则语句_数据分析进阶—简单查询
  • python编写一个排序函数要求数据输入_python自学日记9——选择数据结构
  • python输出语句print_Python每日3题print(c)会输出什么?
  • 命令行参数python sys模块_Python中处理命令行参数的3种方法
  • python菜鸟教程for循环_Python for 循环语句
  • 格力手机2 官方固件_格力悄悄上线首部双模5G手机:搭载骁龙765G,售价2699元起...
  • c#怎么拟合函数得到参数_数值计算(三十七)给定函数的参数拟合
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • __proto__ 和 prototype的关系
  • chrome扩展demo1-小时钟
  • Consul Config 使用Git做版本控制的实现
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • es6
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTTP那些事
  • iOS 颜色设置看我就够了
  • Java 内存分配及垃圾回收机制初探
  • Java 网络编程(2):UDP 的使用
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 分布式事物理论与实践
  • 关于字符编码你应该知道的事情
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 驱动程序原理
  • 设计模式 开闭原则
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 一、python与pycharm的安装
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 国内开源镜像站点
  • # 数据结构
  • #define,static,const,三种常量的区别
  • $$$$GB2312-80区位编码表$$$$
  • $.proxy和$.extend
  • (33)STM32——485实验笔记
  • (39)STM32——FLASH闪存
  • (Java数据结构)ArrayList
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (汇总)os模块以及shutil模块对文件的操作
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)Dubbo快速入门、介绍、使用
  • (一)基于IDEA的JAVA基础12
  • (转)winform之ListView
  • .a文件和.so文件
  • .class文件转换.java_从一个class文件深入理解Java字节码结构