An open API service indexing awesome lists of open source software.

https://github.com/alonemonkey/ios-reverse-course


https://github.com/alonemonkey/ios-reverse-course

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

### 简介
本课程将从OC语言特性,文件格式,Hook原理等理论基础出发,通过实际的案例,从不同的切入点,结合class-dump、IDA、LLDB等工具的具体使用深入理解iOS逆向的整个流程,最后教你怎么去保护自己的应用不被破解。

### 面向人群:
在校计算机专业学生,iOS开发工程师,对逆向有兴趣的开发者,希望扩展个人知识和理解iOS系统机制。

### 课程大纲:
#### 1. 从概念开始

* 什么是逆向工程?

>逆向工程的概念、逆向工程需要的基础、逆向工程的一般流程、需要使用到的一些工具、逆向工程的作用(促进正向开发和评估软件安全性)。

* iOS安全机制

>介绍iOS系统的安全机制权限隔离,代码签名,DEP,ASLR,沙盒机制。

* 认识越狱设备

>越狱环境下各种目录的作用,文件权限,iOS越狱程序类型(Application、Dynamic Library、Daemon)以及组成。

#### 2.理论基础是“内功”
>突出理论知识,能让学员对逆向中用到的理论知识有所了解

* UIViewcontroller和UIView

>为了让学员理解两者的关系,为了后面分析不要局限于界面,从Controller去找逻辑实现。生命周期,从界面事件到Controller的响应流程,responder传递

* 数据储存

>认识数据存储,数据储存的方式,数据存储的作用,Demo实例,安全性(keychain、NSUserDefault、SQLite3)

* GCD和Block

>GCD的特性和使用,Block的结构和使用,Demo演示

* 类与方法

>类的结构,类的继承关系,类的执行流程,方法结构,方法查找流程。

* runtime特性

>OC 运行时特性,objc_msgsend,KVC

* 认识Hook

>介绍几种hook方式,swizzle、fishhook、Cydia Substrate,给出Demo

* Hook原理

>swizzle、fishhook 原理解析,Cydia Substrate原理解析

* ARM汇编

>介绍arm汇编指令,ARM/THUMB指令的区别,静态分析arm汇编,静态调试arm汇编,通过修改汇编指令篡改程序功能

* Mach-O文件格式

>介绍Mach-O文件介绍(otool...),类名方法名构成,动态库依赖,分析dyld加载代码

* ipa打包签名

>ipa打包流程,签名原理,重签名

* 静态库

>什么是静态库,作用,构成,链接方式

* 动态库

>什么是动态库,作用,构成,链接方式,dlopen、dldlsym的应用,通过动态库去修改主程序逻辑

#### 3.逆向分析“神兵利器”
>这部分主要讲工具的使用,原理,简单的Demo实战

* 应用砸壳

>为什么要砸壳,砸壳工具介绍,砸壳的原理,砸壳工具的具体使用,怎么对Extension砸壳

* MachOView

>介绍通过MachOView去流程文件结构,可以获取哪些有用的信息,这些信息的利用。

* class-dump

>class-dump的原理,class-dump的具体使用,怎么从头文件寻找有用的信息

* Reveal查看界面结构

>Reveal介绍,Reveal在正向和逆向开发中的作用,Reveal的具体使用

* Cycript

>Cycript介绍与安装,使用Cycript查看界面构成,查看当前ViewController继承关系,通过Cycript修改程序

* 抓包工具

>中间人攻击,抓包工具介绍,抓包工具的使用,篡改数据包,拦截https

* 静态分析

>介绍IDA,Hopper的使用,静态分析程序实例,静态修改程序逻辑

* LLDB调试

>lldb的使用,lldb脚本,lldb调试技巧,lldb实际应用分析,过反调试。

* theos

>theos简介,安装与编译,用法实例,开发Tweak,iOSOpenDev的使用,使用Xcode编译生成iOS的动态库

* 其它iOS越狱工具

>介绍其它在越狱iOS设备上的工具,包括OpenSSH、iFile、SQLite、syslogd...

#### 4.从实战中寻找乐趣
>这部分具体的实例待定,主要教学员寻找突破口,逆向的思维,切入点,切入方法,利用到不同的分析技能,提高乐趣。

* 跟踪程序执行流程
>tweak代码注入某app,增强log、在UI上提示跟踪信息

* 监听上传网络请求

>注入某app,监听网络请求、并将记录上传服务器

* 分析某App实现XXX功能

>逆向分析的思路,过反调试,寻找切入点,寻找目标函数,调试技巧,应用重签名,增加程序功能,篡改程序逻辑

* 迁移到非越狱机

>将Tweak的功能移植到非越狱手机,直接迁移或代码进行重构。

#### 5.构造自己的盾牌
>为学员了解下有哪些保护方案和措施,一方面能应对一些简单的保护,另一方面知道怎么去加固自己的应用。

* 移动安全现状

>介绍移动安全如今的现状,存在哪些安全问题,开发者对于安全的意识,市面上利用安全漏洞的黑产链

* 应用安全的重要性

>介绍为什么应用安全如此重要,当前哪些应用存在安全问题,还有哪些潜在的安全问题,对于这些问题我们应该如何应对

* 数据传输与文件存储

>列举现有很多不安全的数据传输和文件存储方案,可能造成的安全问题,如何去保证数据的安全

* 加密字符串

>为什么需要加密字符串,使用密钥保存为例,加密字符串前后的对比,加密字符串的方案

* 混淆类名方法名
>为什么需要混淆类名方法名,常见的类名方法名突破口,如何混淆,混淆前后的效果对比

* 增加反调试,越狱检测等

>怎么增加反调试以及各种检测,如何写代码难以逆向,怎么去保护自己的应用不被破解

### 结业:
学完这些课程后你能:

* 能让你的简历脱颖而出,获得面试官的青睐
* 能够独立进行逆向分析和逆向开发并深入理解原理
* 能加深对移动应用安全的认识,学会审计应用安全性
* 能够促进正向开发并从优秀应用中增加经验