iOS 逆向学习笔记

作者: mysteryemm | 来源:发表于2017-03-21 12:30 被阅读417次

关于逆向的例子网上很多牛人都有分享,包括微信消息禁止撤回、自动抢红包、虾米音乐VIP等等。为了满足一下自己的好奇心更为了能够深入的了解iOS内部原理,于是“站在巨人的肩膀上”利用周末简单学习一下,在此做个学习笔记,梳理一下基本知识、整理一下基本步骤(大神请忽略此文)。

1.要做什么

在手机不越狱的情况下,可以修改微信运动步数。当然网上也有很多教程(包括越狱的和非越狱的),可以直接拿来用。但为了知其所以然,所以打算自己动手一步步实现。

2.准备工作

需要用到的工具:已砸壳的ipa文件、iOSOpenDev、yololibCaptainHookiReSign(很好用的签名工具)。由于直接从AppStore里下载的App都是经过加密的,所以需要解密(即砸壳,需要有一部越狱设备),没有越狱设备直接去网上下载即可。

3.开始实现

(1)下载ipa完成后要确认下是否真的已被解密。先通过命令unzip weChat.ipa解压得到weChat.app文件,再通过
命令otool -l WeChat.app/WeChat | grep -B 2 crypt来查看是否已解密。结果如下:

          cmd LC_ENCRYPTION_INFO     // armv7架构
      cmdsize 20
     cryptoff 16384
    cryptsize 49463296
      cryptic 0   // 0代表解密、1代表加密
--
          cmd LC_ENCRYPTION_INFO_64  // arm64架构
      cmdsize 24
     cryptoff 16384
    cryptsize 53149696
      cryptic 0  // 0代表解密、1代表加密

(2)安装iOSOpenDev来编写Hook代码实现你想要的功能。安装iOSOpenDev会遇到失败的情况,具体安装步骤以及失败的解决办法请参考这篇博客。(教程中的第五步的下载文件已失效,可以跳过该步骤)。安装成功后,新建工程选择CaptainHook Tweak,并将CaptainHook.h文件导入工程中。

CaptainHookTweak.png
  至于如何用class-dump提取接口文件以及编写Hook代码,这里暂不介绍,网上教程很多。代码写完后,选择真机编译程序,成功后生成的动态库(xxx.dylib)便是我们需要注入到二进制文件中的程序。
  (3)新建一正常项目,bundle Id可以自由设置,这样不会覆盖掉手机里已安装的原版微信。build一下,保存好生成的描述文件embedded.mobileprovision(名字貌似不可自定义)。
  (4)下载yololib,将yololib、xxx.dylib、embedded.mobileprovision、解压后的wechat.app放在同一目录中,执行命令./yololib WeChat.app/WeChat xxx.dylib将动态库注入到微信的二进制文件中。成功后结果如下:
2017-03-21 01:28:00.199 yololib[39045:1159498] FAT binary!
2017-03-21 01:28:00.199 yololib[39045:1159498] Injecting to arch 9
2017-03-21 01:28:00.200 yololib[39045:1159498] Patching mach_header..
2017-03-21 01:28:00.203 yololib[39045:1159498] Attaching dylib..

2017-03-21 01:28:00.203 yololib[39045:1159498] Injecting to arch 0
2017-03-21 01:28:00.203 yololib[39045:1159498] 64bit arch wow
2017-03-21 01:28:00.206 yololib[39045:1159498] dylib size wow 72
2017-03-21 01:28:00.207 yololib[39045:1159498] mach.ncmds 76
2017-03-21 01:28:00.207 yololib[39045:1159498] mach.ncmds 77
2017-03-21 01:28:00.207 yololib[39045:1159498] Patching mach_header..
2017-03-21 01:28:00.210 yololib[39045:1159498] Attaching dylib..

2017-03-21 01:28:00.210 yololib[39045:1159498] size 66
2017-03-21 01:28:00.210 yololib[39045:1159498] complete!

注入成功后,再将xxx.dylib和embedded.mobileprovision拷贝到weChat.app目录下即可。
  (5)新建目录Payload,将weChat.app放入该目录下执行命令zip -qry weChat.ipa Payload/生成ipa文件,接下里对ipa进行重签名、打包即可安装到手机。
  (6)对ipa签名和打包为了方便,可以选择用这个开源工具iReSign,很实用(entitlements.plist可以不用选择,会自动生成)。
  (7)额外说明:如果想查看App原来的bundle Id,可通过系统自带命令行工具Plutil(property list utitlity)plutil -p ~/Desktop/xxx.app/Info.plist | grep CFBundleIdentifier更多信息请看这里

4.遇到的坑

如果自定义enlitiments.plist,记得Team ID一定要填写生产证书ID,也可在开发者官网查看;
  如果安装失败,试着删除weChat.app中的Watch、Plugins文件。

这仅仅是个开始、还有很多很多东西需要去学习和探索……

参考资料:
http://bbs.iosre.com/
https://www.ianisme.com/ios/2319.html
http://www.tuicool.com/articles/FF3QFjE
http://blog.csdn.net/chsadin/article/details/51613197

相关文章

  • iOS逆向课程笔记(一)

    iOS逆向课程笔记 [TOC] ==iOS逆向环境介绍== *** 越狱环境:iphone5s iOS 8.3**...

  • 初识汇编

    逆向课程随堂笔记 001--初识汇编 我们在学习逆向开发之前,我们要了解一个基本的逆向原理.首先我们是逆向iOS系...

  • iOS逆向分析笔记

    layout: wikititle: iOS逆向分析笔记categories: Reverse_Engineeri...

  • 逆向学习笔记

    重签名:iOS App 签名的原理--总结的非常细,一看就明白逆向学习笔记9——代码重签名ios-app-sign...

  • 一 iOS 逆向工程概述

    1 什么是iOS逆向工程 2 iOS逆向的目的 3 iOS逆向过程以及方法 一 什么是iOS逆向工程 iOS逆向...

  • iOS逆向学习

    参考文章:iOS逆向开发记录:iOS逆向之手机越狱iOS逆向之介绍iOS逆向之文件系统结构iOS逆向之文件权限及类...

  • 【Cycript】封装cycript脚本

    前言:机器学习学完有一个了解,深度学习和iOS逆向一起学习,并且笔记总结记录。 sublime新建一个文件,先保存...

  • iOS逆向编程第二篇:基本汇编(1)

    我们在学习iOS逆向编程开发之前,我们要了解一个基本的逆向原理。首先我们是iOS系统上面的App是我们逆向的目标,...

  • iOS逆向之反HOOK的基本防护

    iOS逆向之Method Swizzle iOS逆向之fishHook原理探究 iOS逆向之fishHook怎么通...

  • 【iOS逆向】一、逆向内容简介与越狱环境搭建

    总体内容 1、逆向课程简介2、学习逆向的条件3、iOS越狱(iOS Jailbreak)的优点和缺点4、完美越狱和...

网友评论

  • LJ的ios开发:手机不越狱可以砸壳吗?
    mysteryemm:@LJ的ios开发 不可以的,我是在网上下载已砸壳的ipa文件
  • 1d2aa59a2e8b:MacPorts 安装半天没安装上是怎么回事?一直卡在正在运行软件包脚本
    mysteryemm:@Tk_Jacky :joy:
    1d2aa59a2e8b:@心董儿 挂了vpn一天,终于装好了:joy:
    mysteryemm:@Tk_Jacky 运行比较慢,耐心等一会吧
  • 不懂后悔:你好,最近正在学习这个,能否加个企鹅请教下。执行命令./yololib WeChat.app/WeChat xxx.dylib将动态库注入到微信的二进制文件中这步失败了。369485229.谢谢。还望不吝赐教
    mysteryemm:@不懂后悔 失败信息是什么
  • 秋雨无痕:可以啊
  • 崔可一:厉害了我的鑫哥

本文标题:iOS 逆向学习笔记

本文链接:https://www.haomeiwen.com/subject/lvvwnttx.html