手把手教你制作一款iOS越狱App,伪装微信位置

本文详细介绍了如何制作一款iOS越狱应用,伪装微信位置。通过越狱原理、iOS目录结构和程序类型的学习,结合逆向工程、动态调试工具,如class-dump、IDA和LLDB,实现App和Tweak的交互。最终,通过打包安装和发布,完成伪装微信位置的功能。源代码和详细步骤可在GitHub找到。
摘要由CSDN通过智能技术生成

说明

缘由

本文是我个人在对逆向工程强烈的兴趣驱使下,拜读《iOS应用逆向工程》,所实现的一个好玩的功能,与大家分享,也是对自己学习的一个简单总结。BTW iOS逆向论坛 iOSRe 是一个很好的iOS逆向交流社区。

所有文章中工具和代码都托管到GitHub,欢迎访问:项目地址:https://github.com/jackrex/FakeWeChatLoc

严重声明

本文所有纯属个人娱乐学习值用,相关技术仅用于学习交流,请勿用于非法目的,不得有其他任何商业用途!!!

概念

越狱的原理:

iOS系统越狱,其实说白了,和Android的Root类似,相当于对手机权限的提升,使得让你可以操纵之前你操纵不了的事物。

由于Objective-C 是面向对象的高级语言,iOS 采用的文件格式 Mach-O 包含了很多metadata 信息可以让我们使用 class-dump 还原其头文件,这个为iOS 的逆向有了很好的开端。

MobileSubstrate 是一个能够让iOS 开发方便hook的一个framework,MobileSubstrate由如下三部分组成:

MobileSubstrate
1. MobileHooker 利用iOS Runtime 动态替换函数,转发消息达到所谓的hook技术
2. MobileLoader 主要用来加载第三方动态库 即是tweak/*.dylib
3. Safe Mode 安全模式,防止第三方插件的Crash对主体App造成的影响

  • 由此可见 有了MobileSubstrate 作为基石,加上逆向工程,我们几乎可以完成我们想做的任何事情
iOS 目录层级结构

这里写图片描述
这种基于Unix 衍生的操作系统一般目录层级都有相通之初,不妨可以对比Android 以及 MacOS,会发现好多目录名是一致的,我么来挑一些简单讲解下:

/bin binnary ,系统常用的基本二进制文件 例如 cd, ls, ps 等
/usr 包含大多用户工具库
/var variable 存放经常更改的东西,例如 logs,用户数据,/var/mobile/Applications 是纺织AppStore 下载的 App
/Applications 存放所有系统App,以及从Cydia下载的App路径
/Library  存放了系统App的数据,其中有一个/Library/MobileSubstrate 目录,MobileSubstrate 是一个hook 功能开发平台,其中内容如下图所示,我们所开发的插件都被放置到这个里面

/Library/MobileSubstrate 里面文件类型主要有 dylib,plist
dylib 是动态加载库,就是tweak
plist 配合dylib 使用的filter 文件,指定注入目标,及hook的目标
/System 存放iOS 各种系统framework
/User 指向 /var/mobile 即是我们一般用户的主目录 
iOS 程序类型
  • iOS 安装包格式

    1. ipa 苹果推出的iOS 专有安装包,一般从AppStore下载的包格式,安装路径/var/mobile/Applications,长按可删除
    2. deb 是属于Debain系(使用过debain linux 系统的都知道)特有的安装包,iOS 系统起源于Unix,所以兼容deb安装包,Cydia下载的App就是deb格式的,安装路径为到 /Applications ,长按不可删除,必须使用root 权限的命令行或者Cydia移除
    3. pxl (这种格式起源于Mac上的pkg,现在已经废弃)
  • iOS 安装包对比
    其实各大软件包虽然格式不一样,诸如 .apk, .ipa .deb .app 等等,其实实质都是一个zip 将二进制和资源文件合理的规划罗列出来

    1. 包内容对比:
      这里写图片描述

    Payload文件夹:里面包含了app使用的图片以及二进制文件等
    iTunesArtwork:实际上是无后缀的png图片,在iTunes等上显示用
    iTunesMetadata.plist记录购买者的信息,软件版本,售价等
    com.apple.ZipMetadata.plist 是

    这里写图片描述
    这里写图片描述

Deb 结构其实是对Library Applications gzip 为 data.tar.gz里面
control 文件放到 control.tar.gz 中

  1. 权限: deb 安装到/Applications 下属于 root 用户组,所以可以读写权限和 一般的 .ipa mobile 用户不一样
  2. Deb 文件的安装方式就例如把本身自己文件路径完全拷贝到iOS 系统中

    • 其他iOS程序类型
  3. Dynamic Library
    我们上面说的DynamicLibraries 就是放置动态库的地方
  4. Daemon
    这个是后台运行程序,守护进程的程序,例如一直监听通话来电的进程 等等,这个就不多将了。

准备工作

硬件设备:
  • Mac
  • 已越狱的iDevice
辅助软件 :
Mac 需要的工具

在逆向工程中常见的 动态调试和静态分析使用的工具:
- class-dump

class-dump 用来dump 出越狱后的App 所有头文件的工具

  • IDA

    IDA 是最好的反编译工具,其实简单的逆向只用IDA就可以完全搞定了

  • LLDB

    动态调试的利器 配合 IDA 一动一静

  • Reveal

    一个方便UI调试定位的Debug的工具,我们可以快速的对应某个App界面对应的是某个类

  • iFunBox

    方便的文件管理辅助软件

iOS 需要使用的辅助开发工具
  • OpenSS

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值