{"id":17063589,"url":"https://github.com/alonemonkey/ios-reverse-course","last_synced_at":"2026-01-04T15:58:16.885Z","repository":{"id":86245002,"uuid":"60938476","full_name":"AloneMonkey/ios-reverse-course","owner":"AloneMonkey","description":null,"archived":false,"fork":false,"pushed_at":"2016-06-12T06:36:04.000Z","size":4,"stargazers_count":10,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-28T15:38:56.462Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AloneMonkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-12T02:47:44.000Z","updated_at":"2024-02-25T14:46:36.000Z","dependencies_parsed_at":"2023-03-08T10:00:32.442Z","dependency_job_id":null,"html_url":"https://github.com/AloneMonkey/ios-reverse-course","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AloneMonkey%2Fios-reverse-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AloneMonkey%2Fios-reverse-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AloneMonkey%2Fios-reverse-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AloneMonkey%2Fios-reverse-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AloneMonkey","download_url":"https://codeload.github.com/AloneMonkey/ios-reverse-course/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245078131,"owners_count":20557279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T10:52:30.997Z","updated_at":"2026-01-04T15:58:16.843Z","avatar_url":"https://github.com/AloneMonkey.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"### 简介\n本课程将从OC语言特性，文件格式，Hook原理等理论基础出发，通过实际的案例，从不同的切入点，结合class-dump、IDA、LLDB等工具的具体使用深入理解iOS逆向的整个流程，最后教你怎么去保护自己的应用不被破解。\n\n### 面向人群：\n在校计算机专业学生，iOS开发工程师，对逆向有兴趣的开发者，希望扩展个人知识和理解iOS系统机制。\n\n### 课程大纲：\n#### 1. 从概念开始\n\n* 什么是逆向工程？\n\n\t\u003e逆向工程的概念、逆向工程需要的基础、逆向工程的一般流程、需要使用到的一些工具、逆向工程的作用（促进正向开发和评估软件安全性）。\n\n* iOS安全机制\n\n\t\u003e介绍iOS系统的安全机制权限隔离，代码签名，DEP，ASLR，沙盒机制。\n\t\n* 认识越狱设备\n\n\t\u003e越狱环境下各种目录的作用，文件权限，iOS越狱程序类型(Application、Dynamic Library、Daemon)以及组成。\n\n#### 2.理论基础是“内功”\n\u003e突出理论知识，能让学员对逆向中用到的理论知识有所了解\n\n* UIViewcontroller和UIView\n\n\t\u003e为了让学员理解两者的关系，为了后面分析不要局限于界面，从Controller去找逻辑实现。生命周期，从界面事件到Controller的响应流程，responder传递\n\t\n* 数据储存\n\n\t\u003e认识数据存储，数据储存的方式，数据存储的作用，Demo实例，安全性(keychain、NSUserDefault、SQLite3)\n\n* GCD和Block\n\n\t\u003eGCD的特性和使用，Block的结构和使用，Demo演示\n\n* 类与方法\n\n\t\u003e类的结构，类的继承关系，类的执行流程，方法结构，方法查找流程。\n\n* runtime特性\n\n\t\u003eOC 运行时特性，objc_msgsend，KVC\n\n* 认识Hook\n\n\t\u003e介绍几种hook方式，swizzle、fishhook、Cydia Substrate，给出Demo\n\n* Hook原理\n\t\n\t\u003eswizzle、fishhook 原理解析，Cydia Substrate原理解析\n\t\n* ARM汇编\n\n\t\u003e介绍arm汇编指令，ARM/THUMB指令的区别，静态分析arm汇编，静态调试arm汇编，通过修改汇编指令篡改程序功能\n\t\n* Mach-O文件格式\n\t\n\t\u003e介绍Mach-O文件介绍(otool...)，类名方法名构成，动态库依赖，分析dyld加载代码\n\t\n* ipa打包签名\n\n\t\u003eipa打包流程，签名原理，重签名\n\n* 静态库\n\n\t\u003e什么是静态库，作用，构成，链接方式\n\t\n* 动态库\n\n\t\u003e什么是动态库，作用，构成，链接方式，dlopen、dldlsym的应用，通过动态库去修改主程序逻辑\n\n#### 3.逆向分析“神兵利器”\n\u003e这部分主要讲工具的使用，原理，简单的Demo实战\n\n* 应用砸壳\n\n\t\u003e为什么要砸壳，砸壳工具介绍，砸壳的原理，砸壳工具的具体使用，怎么对Extension砸壳\n\n* MachOView\n\n \t\u003e介绍通过MachOView去流程文件结构，可以获取哪些有用的信息，这些信息的利用。\n \t\n* class-dump\n\t\n\t\u003eclass-dump的原理，class-dump的具体使用，怎么从头文件寻找有用的信息\n\t\n* Reveal查看界面结构\n\t\n\t\u003eReveal介绍，Reveal在正向和逆向开发中的作用，Reveal的具体使用\n\t\n* Cycript\n\n\t\u003eCycript介绍与安装，使用Cycript查看界面构成，查看当前ViewController继承关系，通过Cycript修改程序\n\n* 抓包工具\n\n\t\u003e中间人攻击，抓包工具介绍，抓包工具的使用，篡改数据包，拦截https\n\n* 静态分析\n\n\t\u003e介绍IDA，Hopper的使用，静态分析程序实例，静态修改程序逻辑\n\t\n* LLDB调试\n\n\t\u003elldb的使用，lldb脚本，lldb调试技巧，lldb实际应用分析，过反调试。\n\t\n* theos\n\n\t\u003etheos简介，安装与编译，用法实例，开发Tweak，iOSOpenDev的使用，使用Xcode编译生成iOS的动态库\n\t\n* 其它iOS越狱工具\n\n\t\u003e介绍其它在越狱iOS设备上的工具，包括OpenSSH、iFile、SQLite、syslogd...\n\n#### 4.从实战中寻找乐趣\n\u003e这部分具体的实例待定，主要教学员寻找突破口，逆向的思维，切入点，切入方法，利用到不同的分析技能，提高乐趣。\n\n\n* 跟踪程序执行流程\n\t\u003etweak代码注入某app，增强log、在UI上提示跟踪信息\n\t\n* 监听上传网络请求\n\n\t\u003e注入某app，监听网络请求、并将记录上传服务器\n\n* 分析某App实现XXX功能\n\n\t\u003e逆向分析的思路，过反调试，寻找切入点，寻找目标函数，调试技巧，应用重签名，增加程序功能，篡改程序逻辑\n\n* 迁移到非越狱机\n\n\t\u003e将Tweak的功能移植到非越狱手机，直接迁移或代码进行重构。 \n\n#### 5.构造自己的盾牌\n\u003e为学员了解下有哪些保护方案和措施，一方面能应对一些简单的保护，另一方面知道怎么去加固自己的应用。\n\n* 移动安全现状\n\n\t\u003e介绍移动安全如今的现状，存在哪些安全问题，开发者对于安全的意识，市面上利用安全漏洞的黑产链\n\t\n* 应用安全的重要性\n\n\t\u003e介绍为什么应用安全如此重要，当前哪些应用存在安全问题，还有哪些潜在的安全问题，对于这些问题我们应该如何应对\n\n* 数据传输与文件存储\n\n\t\u003e列举现有很多不安全的数据传输和文件存储方案，可能造成的安全问题，如何去保证数据的安全\n\t\n* 加密字符串\n\n\t\u003e为什么需要加密字符串，使用密钥保存为例，加密字符串前后的对比，加密字符串的方案\n\t\n* 混淆类名方法名\n\t\u003e为什么需要混淆类名方法名，常见的类名方法名突破口，如何混淆，混淆前后的效果对比\n\t\n* 增加反调试，越狱检测等\n\n\t\u003e怎么增加反调试以及各种检测，如何写代码难以逆向，怎么去保护自己的应用不被破解\n\n### 结业：\n学完这些课程后你能：\n\n* 能让你的简历脱颖而出，获得面试官的青睐\n* 能够独立进行逆向分析和逆向开发并深入理解原理\n* 能加深对移动应用安全的认识，学会审计应用安全性\n* 能够促进正向开发并从优秀应用中增加经验","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falonemonkey%2Fios-reverse-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falonemonkey%2Fios-reverse-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falonemonkey%2Fios-reverse-course/lists"}