AloneMonkey / ios-reverse-course

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

简介

本课程将从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.构造自己的盾牌

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

  • 移动安全现状

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

  • 应用安全的重要性

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

  • 数据传输与文件存储

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

  • 加密字符串

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

  • 混淆类名方法名

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

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

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

结业:

学完这些课程后你能:

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

About