学习iOS逆向

从现有APP实现细节的过程.

砸壳

壳是应用程序加密保护的一种方式,在APP Store上的应用程序都是有加密保护的。
查看是否加壳:
otool -l 可执行文件 | grep cryptid
例如:localhost:ivwen.app peilinghui$ otool -l ivwen | grep cryptid cryptid 1
如果是1表示是加密的.0表示脱壳的。
查看架构:
lipo -info WeChat
Non-fat file: WeChat is architecture: arm64

1. 砸壳工具

dumpdecrypted

https://github.com/stefanesser/dumpdecrypted
去 Github 下载 dumpdecrypted 源码, 源码就一个 C 源文件.下载 zip 包之后, 解压.在当前目录, 执行 make 即可完成编译,编译成功后生成 dumpdecrypted.dylib 文件.
iOS 逆向: dumpdecrypted 砸壳记http://www.veryitman.com/2018/06/07/iOS-%E9%80%86%E5%90%91-dumpdecrypted-%E7%A0%B8%E5%A3%B3%E8%AE%B0/

Clutch

https://github.com/KJCracks/Clutch/releases

2.监控工具

通过监控,可以获取界面的变化,文件的读取,网络的传输。

class-dump

对于去壳的应用可以得到所有类的头文件
https://github.com/nygard/class-dump

Reveal

https://revealapp.com/
得到界面UI,得到响应事件。

Snoop-it

https://code.google.com/archive/p/snoop-it/

introspy

https://github.com/iSECPartners/Introspy-iOS

反汇编工具

通过分析二进制文件,生成汇编代码,进而转换成高级语言。

Hopper

IDA

调试跟踪工具

GDB

LLDB

程序功能具体实现

静态分析

应用代码框架构成

动态分析

执行流程参数传递

class-dump -s -S -H WeChat.decrypted -o /Users/lecoding/Desktop/test/WeChatDemo/Headers

WeChat.decrypted : 砸壳后的Mach-o文件路径
/Users/lecoding/Desktop/test/WeChatDemo/Headers: 存储头文件目录
-s sort classes and categories by name
-S sort methods by name
-H generate header files in current directory, or directory specified with -o
-o output directory used for -H

iOS系统安全机制

image list -o -f打印出iOS中二进制文件,库文件,动态链接文件,栈和堆内存地址的位置全部都是随机的。

iOS越狱

通过一系列iOS系统的漏洞,对系统安全权限进行破解,获取系统Root的权限。
引导式越狱,不完美越狱,完美越狱。

越狱环境的配置

iOS底层的知识储备

Runtime

类与方法

数据存储

UI控件的背后代码执行

整个APP的结构以及构建的过程

手动打包APP模拟Xcode自动打包的过程

Hook的原理

Hook的几种方式

1.Method Swizzle—OC

通过OC的Runtime机制,改变函数的地址来交换方法实现

2.fishHook—–C

通过修改懒加载和非懒加载的表,通过修改表的指针来达到Hook的效果,作用于C函数

3.Cydia Substrate(框架)

针对OC,C函数,或者是函数地址来做Hook操作

Theos

iOS逆向之Theos基础到实战

iOSOpenDev

基于Xcode创建模板和编译打包
http://iosopendev.com/download/

参考资料

一条命令完成砸壳http://www.alonemonkey.com/2018/01/30/frida-ios-dump/
书籍:<iOS逆向>

文章目录
  1. 1. 砸壳
    1. 1.1. 1. 砸壳工具
      1. 1.1.1. dumpdecrypted
      2. 1.1.2. Clutch
    2. 1.2. 2.监控工具
      1. 1.2.1. class-dump
      2. 1.2.2. Reveal
      3. 1.2.3. Snoop-it
      4. 1.2.4. introspy
    3. 1.3. 反汇编工具
      1. 1.3.1. Hopper
      2. 1.3.2. IDA
    4. 1.4. 调试跟踪工具
      1. 1.4.1. GDB
      2. 1.4.2. LLDB
  2. 2. 程序功能具体实现
  • 静态分析
    1. 1. 应用代码框架构成
  • 动态分析
    1. 1. 执行流程参数传递
  • iOS系统安全机制
  • iOS越狱
    1. 1. 越狱环境的配置
  • iOS底层的知识储备
    1. 1. Runtime
    2. 2. 类与方法
    3. 3. 数据存储
    4. 4. UI控件的背后代码执行
    5. 5. 整个APP的结构以及构建的过程
      1. 5.1. 手动打包APP模拟Xcode自动打包的过程
  • Hook的原理
    1. 1. Hook的几种方式
      1. 1.1. 1.Method Swizzle—OC
      2. 1.2. 2.fishHook—–C
      3. 1.3. 3.Cydia Substrate(框架)
  • Theos
  • iOSOpenDev
  • 参考资料
  • 本站总访问量 本站访客数人次 ,