- 博客(79)
- 资源 (22)
- 收藏
- 关注
原创 FLEX(Flipboard Explorer)简介
目录FLEX给予你自己强大的调试能力(Give Yourself Debugging Superpowers)用法(Usage)功能示例(Feature Examples)安装(Installation)避免将 FLEX 编译到 Release 版本(Excluding FLEX from Release (App Store) Builds)注意事项(Additional Notes)鸣谢(Thanks & Credits)贡献(Contributing)待做(TODO)FLEXFLEX(Fl
2022-03-16 16:59:03
4033
原创 Cycript(五):安装与使用
目录Cycript 的安装在非越狱环境中使用 Cycript(通过手动配置)在非越狱环境中使用 Cycript(通过 MonkeyDev 自动配置)在越狱环境中使用 Cycript导入外部的 Cycript 脚本补充:Cycript 和 LLDB 中经常用到的 Objective-C 私有方法补充:其他细节Cycript 的安装① 下载与安装从 Cycript 官网 下载 Cycript SDK,并将其放到 /opt 目录下。Cycript SDK 的目录结构如下所示:/opt/cycript_
2022-03-14 23:37:11
4200
原创 Cycript(四):常用脚本
目录MDCycript/MS.cyMDCycript/md.cymjcript/mjcript.cylibcycript.cycycript-utils/utils.cyMDCycript/MS.cygit 地址:https://github.com/AloneMonkey/MDCycript/blob/master/MS.cy(function(ms) { // 获取存储 libcycript.dylib 的目录的路径 let GetLibraryPath = function() {
2022-03-12 20:22:18
5234
原创 Cycript(三):使用技巧
目录获取对象(Getting objects)获取成员变量(Getting ivars)获取 BundleID(Getting bundle identifier)获取方法(Getting methods)列出所有子类(List all subclasses)加载框架(Load frameworks)包含其他 Cycript 文件(Include other Cycript files)使用 NSLog(Using NSLog)使用 CGGeometry 函数(Using CGGeometry functi
2022-03-10 13:58:26
2548
原创 Cycript(二):使用手册
目录常见问题(General Questions)Cycript 控制台(Cycript Console)JavaScript 解析器(JavaScript Parser)CommonJS 模块(CommonJS Modules)C 类型和指针(C Types and Pointers)C 结构体和数组(C Structs and Arrays)Objective-C 基础(Objective-C Basics)Objective-C 高级(Objective-C Advanced)Java 初始预览版(J
2022-03-09 21:26:22
1865
原创 Cycript(一):基础简介
目录Cycript 简介Cycript 附加的特性其他Cycript 简介什么是 Cycript ?Cycript 允许开发者通过具有语法高亮显示和代码补全功能的交互式控制台,使用 Objective-C++ 和 JavaScript 语法的混合体,来探索和修改 iOS 或 macOS 上正在运行的应用程序(Cycript 还可以在 Android 和 Linux 上独立运行,并提供对 Java 的访问,但是不能注入进程)可以将 Cycript 看成是一个理解 Objective-C 语法的 J
2022-03-08 19:55:16
1266
原创 LLDB(六):常用命令举例
目录创建符号断点关于 Xcode 底部的调试区域在使用 expression 命令执行方法时,需要将发送的消息强制转换为该方法的返回值类型关于 p 和 po 的输出格式通过 expression 命令读取、设置、操作寄存器的值expression 命令只能在当前线程中执行表达式,expression 命令不能跨线程执行表达式获取 UIButton 的 target 和 action关于渲染服务(backboardd)获取指定镜像当前的 ASLR 偏移量使用 watchpoint 命令监视对指定对象的指定成员
2022-03-07 22:53:55
2163
原创 LLDB(五):DerekSelander-LLDB 的安装与使用
目录DerekSelander-LLDB 简介DerekSelander-LLDB 命令详解__generate_scriptbiofcopyzdclassddddpdumpenviapiblogincludeinfojtoolkeychainlbrlookuplsofmsloverlaydbgpframeworkpmodulesbtsclasssearchsectionsnoopiesystobjectivecxrefyoinkDerekSelander-LLDB 简介什么是 DerekSelan
2022-03-05 22:17:35
939
原创 LLDB(四):Chisel 的安装与使用
目录Chisel 简介Chisel 命令详解alamborderalamunborderbdisablebenablebinsidebmessagebordercaflushcopydcomponentsdismissfa11yfindinstancesflickerfvfvcheapfromhidemaskmwarningpa11ypa11yipactionspaltracepanimpbcopypblockpbundlepathpcellspclasspcomponentspcurlpdatapdocs
2022-03-04 20:36:04
1719
原创 LLDB(三):通用参数类型详解
目录本文所使用的 LLDB 版本addressaddress-expressionalias-namearchboolbooleanbreakpoint-idbreakpoint-id-listbreakpoint-namebreakpoint-name-listbreakpt-idbreakpt-id-listbyte-sizeclass-namecmd-namecmd-optionscolumncommandcommand-optionsconnect-urlcountdescription-verbo
2022-03-03 16:42:22
1327
原创 LLDB(二):基础命令详解
目录本文所使用的 LLDB 版本_regexp-attach_regexp-break_regexp-bt_regexp-display_regexp-down_regexp-env_regexp-jump_regexp-list_regexp-tbreak_regexp-undisplay_regexp-upaproposbreakpointbreakpoint clearbreakpoint commandbreakpoint command addbreakpoint command deletebr
2022-03-02 23:54:22
3056
原创 LLDB(一):入门指南
目录LLDB 简介LLDB 入门帮助命令与搜索命令:help 与 apropos基础命令总览LLDB 简介什么是 LLDB?LLDB(Low Level Debugger)是新一代高性能调试器,其是一组可重用组件的集合,这些组件大多是 LLVM 项目中的现有库,例如:Clang 表达式解析器,LLVM 反汇编程序,等等LLDB 是 macOS 上 Xcode 中的默认调试器,Xcode 主窗口底部的控制台便是开发者与 LLDB 交互的区域。LLDB 允许开发者在程序运行的特定时刻暂停进程,查看变
2022-03-01 22:21:18
10782
原创 MonkeyDev(二):补充
目录MonkeyDev 安装过程中的一些问题OCMethodTrace 官方文档在编译时,MonkeyDev 中的 Logos 代码会转换成 Objective-C++ 代码MonkeyDev 安装过程中的一些问题① 在按照官方文档,远程执行安装脚本 md-install 时:sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"报
2021-12-08 13:55:55
1088
原创 MonkeyDev(一):官方文档
目录前言Home(主页)安装开始使用配置说明非越狱 App 集成CocoaPods非越狱插件 PodMac 插件越狱插件 Xcode 调试更新日志Q & A前言今天(2021.11.03)在查 MonkeyDev GitHub Wiki 的时候,发现其图片资源全部加载不出来,影响阅读因此,根据 MonkeyDev GitHub Wiki 对其官方文档进行了整理,补全了图片资源,供自己和他人参考原文地址:https://github.com/AloneMonkey/MonkeyDev/wiki
2021-12-08 13:49:50
4534
原创 CaptainHook 源码分析(七):其他宏接口
目录CHOptimizedMethodCHOptimizedClassMethod用于调试和日志的相关宏接口其他宏接口CHOptimizedMethod宏接口 CHOptimizedMethod 用于针对对象方法生成对宏接口 CHMethod_super_、CHMethod_self_、CHMethod_new_ 的调用,其定义为:// @param.count 对象方法的参数个数// @param.args 可变的参数列表// 注意:宏接口 CHOptimizedMethod 不能生成对宏
2021-12-08 13:47:18
703
1
原创 CaptainHook 源码分析(六):动态地创建类 && 获取与设置成员变量的值 && 动态地添加属性
目录动态地创建类(CHRegisterClass)向动态创建的类中添加成员变量(CHAddIvar)获取与设置实例对象中成员变量的值(CHIvar)动态地添加属性(CHPropertyRetainNonatomic + CHHookProperty)动态地添加属性(CHPrimitiveProperty + CHHookProperty)各种动态添加属性的宏接口的区别与联系访问动态添加的属性动态地创建类(CHRegisterClass)在 CaptainHook.h 中,宏接口 CHRegisterCl
2021-12-08 13:36:48
803
原创 CaptainHook 源码分析(五):Hook 对象方法 && 类方法
目录Hook 对象方法(CHMethod + CHHook)Hook 对象方法(CHDeclareMethod)CHMethod 与 CHDeclareMethod 的区别Hook 类方法(CHClassMethod + CHClassHook)Hook 类方法(CHDeclareClassMethod)CHClassMethod 与 CHDeclareClassMethod 的区别调用被 Hook 的方法的原始实现(CHSuper)Hook 对象方法(CHMethod + CHHook)在 Cap
2021-12-08 13:33:56
1520
原创 CaptainHook 源码分析(四):交换 Objective-C 方法实现的核心代码(使用 Cydia Substrate)
目录计算方法的类型编码(CHDeclareSig0_ ~ CHDeclareSig9_)生成交换 Objective-C 方法实现的核心代码(CHMethod_)生成交换 Objective-C 方法实现的核心代码(CHMethod_super_)生成交换 Objective-C 方法实现的核心代码(CHMethod_self_)宏接口:CHMethod_ 、CHMethod_super_、CHMethod_self_ 的区别生成添加 Objective-C 方法的核心代码(CHMethod_new_)计
2021-12-08 13:28:16
404
原创 CaptainHook 源码分析(三):交换 Objective-C 方法实现的核心代码(使用 RunTime API)
目录计算方法的类型编码(CHDeclareSig0_ ~ CHDeclareSig9_)生成交换 Objective-C 方法实现的核心代码(CHMethod_)生成交换 Objective-C 方法实现的核心代码(CHMethod_super_)生成交换 Objective-C 方法实现的核心代码(CHMethod_self_)宏接口:CHMethod_ 、CHMethod_super_、CHMethod_self_ 的区别生成添加 Objective-C 方法的核心代码(CHMethod_new_)计
2021-12-08 13:16:39
608
原创 CaptainHook 源码分析(二):构造函数 && 类的声明 && 类的加载
目录一个最简单的 CaptainHook 代码生成构造函数(CHConstructor)生成类的声明(CHDeclareClass)生成类的加载(CHLoadLateClass、CHLoadClass)其他常用的宏接口(CHClass、CHMetaClass、CHSuperClass、CHAlloc、CHSharedInstance、CHIsClass、CHRespondsTo)一个最简单的 CaptainHook 代码在 .m 文件中单纯地导入 CaptainHook.h 头文件:#import "
2021-12-08 13:15:53
759
原创 CaptainHook 源码分析(一):前导知识
目录CaptainHook 简介宏定义相关知识的补充LLVM 相关知识的补充源码分析前的准备:自定义 HcgPerson 类CaptainHook 简介什么是 CaptainHook?CaptainHook 是 Objective-C 2.0 运行时的通用 Hook 框架,旨在简化对 Objective-C 方法的 HookCaptainHook 的全部源码其实只是一个拥有近 760 行代码的 CaptainHook.h 头文件。(CaptainHook.h 头文件)通过使用(大量的宏定义)将(
2021-12-08 13:14:50
1260
原创 Theos(七):常见问题
目录Theos 故障排除(Theos/Troubleshooting)空的 $THEOS 环境变量或者损坏的符号链接(Empty $THEOS or corrupt symlink)缺少 SDK(Missing SDK)SDK 体积过小(Small SDK)默认设置(Default settings)缺少 Substrate 头文件(Missing Substrate header)缺少 Substrate 符号(Missing Substrate symbols)缺少 Substrate 动态库(Miss
2021-11-03 10:59:48
1497
原创 Theos(六):官方文档
目录Home(主页)Installation(安装)Installation iOS(iOS 平台上的安装)Installation macOS(macOS 平台上的安装)Installation Linux(Linux 平台上的安装)Installation Windows(Windows 平台上的安装)Upgrading from legacy Theos(从 legacy 版的 Theos 升级)Features(特性)NICSwiftTechnical(技术实现)Structure(目录结构)Hel
2021-11-03 10:46:06
2523
原创 Theos(五):.deb 与 dm.pl
目录Linux 免费发行版本:Ubuntu、CentOS、Debian.deb 文件结构dpkg 与 APTCydia 安装和卸载 .deb 包的过程Theos 的 dm.pl 脚本Linux 免费发行版本:Ubuntu、CentOS、DebianLinux 有非常多的发行版本,从性质上划分,可以分为:由商业公司维护的商业版本由开源社区维护的免费版本商业版本以 RedHat 为代表,免费版本以 Debian 为代表。绝大多数 VPS(Virtual Private Server,虚拟专用服务器
2021-11-03 10:45:05
380
原创 Theos(四):Logos 与 logify.pl
目录Logos 语法简介Block LevelTop LevelFunction LevelLogos 补充关于 logify.plLogos 语法简介Logos 语法简介Logos 是 Theos 开发套件中的一个组件,它允许使用一组特殊的预处理器指令,轻松且清晰地编写 hook 代码Logos 提供的语法极大地简化了 MobileSubstrate 插件(即 Tweak)的开发。MobileSubstrate 插件可以在整个操作系统中 hook 其他方法。在这种情况下,hook 是指一种用于
2021-11-03 10:38:10
804
原创 Theos(三):GNU Make
目录GNU MakeMake 的功能Make 的规则(Rule)和目标(Target)GNU Make 的优势编写 makefile 的约定下载 Make文档邮件列表参与进来Licensing(许可)GNU MakeGNU Make 是一个工具,用于控制从程序的源文件生成程序的可执行文件和程序的其他非源文件Make 从一个名为 makefile 的文件中获取有关如何构建程序的知识, makefile 列出了每个非源文件、以及如何从其他文件中计算它。当您编写一个程序时,您应该为它编写一个 makefil
2021-11-03 10:37:00
385
原创 Theos(二):NIC(New Instance Creator)
目录NIC 简介nic.pl 如何工作补充NIC 简介NIC 全称叫 New Instance Creator(也叫 Nicolas!),是一个项目模板系统。它提供了一种基于模板创建项目(即 Instance)的方法,为不同的目的创建可立即构建的空项目。Theos 附带了一些有用的模板,而其他的模板也可以从社区中的各种开发者那里获得本文参阅以下文档:Theos GitHub Wiki:Features - NICiPhone Dev Wiki:NICiPhone Dev Wiki:N
2021-11-03 10:31:34
663
原创 Theos(一):简介 && 安装
目录Theos 简介Theos 安装Theos 的目录结构Tweak 工程的目录结构Tweak 插件加载图片资源Tweak 插件的实现原理补充:Q & A其他注意点Theos 简介相关链接Theos(iphonedev)Theos GitHub Wiki - Installation - Installation macOSTheos GitHub Wiki - Technical - Structure什么是 Theos?Theos 是一个跨平台的开发工具套件,用于在不使用
2021-11-03 10:23:20
5771
1
原创 绕过 iOS 代码签名验证 && ldid
目录绕过 iOS 代码验证ldidHomebrew绕过 iOS 代码验证iOS 的代码验证分为 2 个环节:签名验证,用于确认代码是经过苹果授权的有效验证,用于确认代码没有被修改过以下内容是基于 saurik 在 Cydia 中编写的一个文档,他文章的另一个版本的名称为:Bypassing iPhone Code Signatures苹果要求 iOS 设备上的所有代码都要经过苹果的签名。这主要是为了让通过苹果应用商店(Apple App Store)下载和安装的 App 不能再下载和运行未经
2021-10-24 11:12:11
3670
原创 Cydia Substrate(iOS)
目录Cydia Substrate 简介Cydia Substrate 主要 API 讲解Cydia Substrate 其他注意点Cydia Substrate 简介相关链接Cydia Substrate 官网地址Cydia Substrate 维基百科(iphonedev)Cydia Substrate 开发者:Jay Freeman(Saurik)什么是 Cydia Substrate?Cydia Substrate(原名:Mobile Substrate)实际上是一个框架,它允
2021-10-24 11:02:23
3488
1
原创 fishhook(二):基本使用 && 源码分析
目录fishhook 基本使用fishhook 源码分析验证实验:通过 MachOView 验证 fishhook 准备基地址的过程拓展延伸:fishhook 为何能在第一次调用外部 C 函数之前,获取到外部 C 函数的真实地址巩固练习:通过 lldb 恢复被 fishhook 替换掉的符号地址使用 fishhook 进行简单的 hook 防护注意fishhook 基本使用fishhook 简介fishhook 是一个非常简单的库,它可以对运行在 iOS 模拟器和设备上的 MachO 二进制文件的
2021-10-24 10:56:57
1126
原创 fishhook(一):前导知识
目录相关的数据结构与函数iOS 系统的懒绑定机制如何获取到 Lazy Symbol Pointers 对应的函数名懒绑定函数 dyld_stub_binder 的执行流程相关的数据结构与函数MachO 文件中的链接信息段(LinkEdit Segment)LC_SEGMENT_64(__LINKEDIT) 命令用于描述链接信息段,其在 MachOView 中对应的图形界面,如下所示:LC_SEGMENT_64(__LINKEDIT) 命令对应的数据结构,如下所示:#import <ma
2021-10-24 10:53:08
692
原创 iOS 非越狱下的代码注入
目录免责声明非越狱下的代码注入步骤使用 ViewDebug 和导出的 Objective-C 类的头文件分析目标 AppObjective-C 方法常见的 Hook 方式免责声明本文为一篇严肃的学术研究型文章,文中所提及的注入手段仅供 iOS 底层技术的学习与交流,不针对任何公司与 App。为防止读者将本文用于商业或者非法用途,本文不提供任何注入工具与重签名脚本。读者如果将本文用于商业或者非法用途,则所产生的后果由读者自行承担。非越狱下的代码注入步骤材料与工具WeChat
2021-10-24 10:51:48
1331
原创 class dump 和 yololib 的使用
目录class dump 的使用class dump 原理简介yololib 的使用补充class dump 的使用class dump 简介class dump 是一个命令行工具,用于检查存储在 MachO 文件中的 Objective-C 运行时信息。class dump 可以导出 MachO 文件中 Class、Category、Protocol 的声明,这与使用 otool -ov 提供的信息相同。class dump 可以将 MachO 文件中 Class、Category、Protoc
2021-10-24 10:32:15
1347
原创 Objective-C 的 KVO(二):NSKeyValueObserving.h 代码注释
/*NSKeyValueObserving.hCopyright (c) 2003-2019, Apple Inc.All rights reserved.*/#import <Foundation/NSArray.h>#import <Foundation/NSOrderedSet.h>#import <Foundation/NSSet.h>#import <Foundation/NSDictionary.h>@class NSInde
2021-08-08 22:37:13
443
原创 Objective-C 的 KVO(一):基本使用 && 底层原理
目录KVO 简介KVO 的基本使用KVO 触发监听的方式KVO 与集合类型KVO 与属性的依赖观察KVO 的底层实现原理KVO 的其他细节自定义 KVOKVO 简介相关文档Key-Value Observing Programming GuideObjective-C 的 KVO(二):NSKeyValueObserving.h 代码注释Objective-C 的 KVC(一):基本使用 && 底层原理Objective-C 的 KVC(二):NSKeyValueCoding
2021-08-08 22:36:32
786
原创 Objective-C 的 KVC(二):NSKeyValueCoding.h 代码注释
/*NSKeyValueCoding.hCopyright (c) 1994-2019, Apple Inc. All rights reserved.*/#import <Foundation/NSArray.h>#import <Foundation/NSDictionary.h>#import <Foundation/NSOrderedSet.h>#import <Foundation/NSSet.h>#import <Found
2021-08-08 22:35:50
330
原创 Objective-C 的 KVC(一):基本使用 && 底层原理
目录KVC 简介KVC 的基本使用KVC 对(非对象指针类型的值)的处理KVC 的搜索模式通过 KVC 进行字典与模型的相互转换KVC 与集合类型KVC 的集合运算符KVC 对异常的处理KVC 的其他细节自定义 KVCKVC 简介相关文档Key-Value Coding Programming GuideNSKeyValueCoding.h 代码注释KVC 的概念KVC(Key-Value Coding)翻译成中文叫:键值编码,是由 NSObject 的非正式协议(即 NSObject
2021-08-08 22:34:59
683
原创 macOS 与 iOS 中的 Tagged Pointer
目录Tagged Pointer 的简介解除 Tagged Pointer 的数据混淆Tagged Pointer 的原理:macOSTagged Pointer 的原理: iOSTagged Pointer 的判断Tagged Pointer 的注意点其他Tagged Pointer 的简介程序从 32 位 cpu 迁移到 64 位 cpu 所造成的内存空间浪费假设要存储一个 NSNumber 对象,其值是一个整数。如果这个整数只是一个 NSInteger 类型的普通变量,那么它所占用的内存大
2021-07-01 21:51:30
528
2
原创 PerformSelector 与 NSInvocation
目录PerformSelectorNSMethodSignatureNSInvocationPerfromSelector 与 NSInvocation 的简单使用PerformSelectorPerformSelector 简介performSelector: 方法等价于直接向消息接受者(即方法调用者)发送一个 aSelector 消息。例如,以下消息都会执行相同的事情:id aClone = [anObject copy];id aClone = [anObject performSele
2021-07-01 21:50:49
545
Reveal_2412917
2022-03-11
CaptainHook.h(注释版)
2021-12-02
theos(macOS).zip
2021-10-22
使用 fishhook 进行简单的 hook 防护(Demo)
2021-09-29
fishhook(C 语言,注释版)
2021-09-01
class-dump(macOS)
2021-09-01
dyld 源码(750.6)
2021-01-18
WeChat_7.0.14 IPA(脱壳)
2020-08-08
EncryptionTools(Objective-C)
2020-07-10
NSString+Hash(Objective-C)
2020-07-03
iTerm2(macOS)
2020-06-23
MachOView(macOS)
2020-06-23
Hopper 4.0.8(macOS)
2020-06-23
RSACryptor(Objective-C)
2020-06-23
emu8086(Windows)
2020-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人