https://github.com/alonemonkey/ios-reverse-course
https://github.com/alonemonkey/ios-reverse-course
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/alonemonkey/ios-reverse-course
- Owner: AloneMonkey
- Created: 2016-06-12T02:47:44.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-06-12T06:36:04.000Z (almost 10 years ago)
- Last Synced: 2025-01-28T15:38:56.462Z (over 1 year ago)
- Size: 3.91 KB
- Stars: 10
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.构造自己的盾牌
>为学员了解下有哪些保护方案和措施,一方面能应对一些简单的保护,另一方面知道怎么去加固自己的应用。
* 移动安全现状
>介绍移动安全如今的现状,存在哪些安全问题,开发者对于安全的意识,市面上利用安全漏洞的黑产链
* 应用安全的重要性
>介绍为什么应用安全如此重要,当前哪些应用存在安全问题,还有哪些潜在的安全问题,对于这些问题我们应该如何应对
* 数据传输与文件存储
>列举现有很多不安全的数据传输和文件存储方案,可能造成的安全问题,如何去保证数据的安全
* 加密字符串
>为什么需要加密字符串,使用密钥保存为例,加密字符串前后的对比,加密字符串的方案
* 混淆类名方法名
>为什么需要混淆类名方法名,常见的类名方法名突破口,如何混淆,混淆前后的效果对比
* 增加反调试,越狱检测等
>怎么增加反调试以及各种检测,如何写代码难以逆向,怎么去保护自己的应用不被破解
### 结业:
学完这些课程后你能:
* 能让你的简历脱颖而出,获得面试官的青睐
* 能够独立进行逆向分析和逆向开发并深入理解原理
* 能加深对移动应用安全的认识,学会审计应用安全性
* 能够促进正向开发并从优秀应用中增加经验