iOS逆向篇-Clang交叉编译

本文详细介绍了如何在Mac上使用Clang进行交叉编译,以在iPhone的arm64环境下运行C、C++和Objective-C程序。通过创建不同类型的源代码文件,编译并签名,最后将可执行文件拷贝到iPhone上成功运行。
摘要由CSDN通过智能技术生成

本篇我们的目标是在iPhone上运行arm64,C语言,C++和OC程序!

  1. Clang
    对于iOS开发者来说,Clang编译器一点也不陌生,Clang是一个C语言、C++、Objective-C、C++语言的轻量级编译器。源代码发布于BSD协议下,是基于LLVM的,也是Xcode 第一的编译器。
  2. 交叉编译
    指在一个平台上生成另一个平台上的可执行代码。现在我们就在Mac上写代码,在iPhone上运行,想想都刺激!
  3. 设备环境
    使用的是Mac和越狱iOS13.2.2的iPhoneX

Arm64

  1. 新建一个hello.txt文本
  2. 把下面代码复制进去,保存退出
.extern _printf
.align 4

.text  
.global _main

_main:

  stp x29, x30, [sp,#-0x10]!  ;保存 x29 和 x30 寄存器到栈,!用来控制基址变址寻址的最终新地址是否进行回写操作
  mov x29, sp           ;将 sp 寄存器放入 x29 寄存器
  sub sp,sp,#0x20       ;分配栈空间

  adr x0,msg			;第一个参数
  bl _printf

  add sp,sp,#0x20       ;释放栈空间
  mov sp,x29			;将 x29 给 sp
  ldp x29,x30,[sp],0x10  ;出栈给 x29 和 x30

  ret  ;返回
  
msg:
      .asciz "Hello,worl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值