前面有讲到,分析了fishHook的原理,这一篇我们对fishHook源码进行分析一下。struct rebinding { const char *name;//需要HOOK的函数名称,C字符串 void *replacement;//新函数的地址 void **replaced;//原始函数地址的指针! };fishHook使用的时候需要我们创建一个结构体数组rebinding,
转载 2024-09-03 19:50:25
66阅读
一、HOOK概述    HOOK,中文为“钩子”或“挂钩”,在ios逆向中是指改变程序的运行流程的一种技术,通过hook可以让别人的程序执行自己的代码逻辑,在逆向中经常使用。所以就来看看HOOK的原理吧!上图很常见的微信抢红包,hook原理就相当于程序本来收到红包消息用户应该点击红包之后点击“抢”,才能领红包,而通过HOOK既可以执行自己的代码,用户不需要点击自动执行抢红包代码
转载 2023-09-19 10:16:50
430阅读
一直想写一系列关于设计模式的文章,一直觉得自己理解不够,迟迟不能动笔。当然,现在动笔也不代表着理解透彻了,只是希望记录下一些看书的重点和自己的理解,以便重复翻阅,也希望能和其他开发者探讨交流。 本系列文章是根据《Objective-C 编程之道》总结的,想仔细研读的可以去看该文章。这本书写得不错,就是年代比较久远,用的还是MRC,一些写法还是比较旧的,不过关于设计模式这块,还是讲得浅显易懂的。一.
用到技术利用dyld相关接口,我们可以注册image装载的监听方法:externvoid_dyld_register_func_for_add_image(void(func)(conststructmach_headermh,intptr_tvmaddr_slide));调用_dyld_register_func_for_add_image注册监听方法后,当前已经装载的image(动态库等)会立
原创 2018-07-15 00:03:43
1133阅读
fishhook.h // Copyright (c) 2013, Facebook, Inc. // All rights reserved. // Redistribution and use in source and binary forms, with or without // modi
原创 2021-10-25 11:58:38
295阅读
# iOS Fishhook 崩溃问题解析 在 iOS 开发过程中,我们经常会遇到一些崩溃问题,其中 Fishhook 崩溃是比较常见的一种。Fishhook 是一个用于动态替换 Objective-C 方法的库,它通过修改方法的实现来实现功能。但是,如果使用不当,很容易导致应用崩溃。本文将通过代码示例和甘特图来解释 Fishhook 崩溃的原因,并提供一些解决方案。 ## Fishhook
原创 2024-07-18 03:55:09
103阅读
补充说明—————–以下记录于 2018.06.27—————–1、fish中文文档: https://wiki.archlinux.org/index.php/Fish_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)2、如果想在fish shell启动时,自动设置alias,然后生效, 需要在~/.config/fish/config.fish里设置alias命令
1、升级iOS15闪退现象 应用在启动时就使用hook,使用到fishhook.h第三方库的 主要表现在iOS老旧机型上,如iPhone6、iPhoneX(已发现设备) 2、解决办法 修改fishhook.c源码,替换成以下代码 // Copyright (c) 2013, Facebook, In
原创 2021-10-25 12:02:39
1873阅读
1点赞
1评论
初识fishhookFishhook 是 facebook 的开源库。官方描述,它的作用是:... enables dynamically rebinding symbols in Mach-O binaries running on iOS in the simulator and on device 支持对 iOS 模拟器和设备上运行的 Mach-O 二进制文件,动态地重绑定其中的符号更浅显
转载 2024-07-05 05:55:13
150阅读
HOOK原理1、MachO是被谁加载的?DYLD动态加载2、ASLR技术(地址空间布局随机化):MachO文件加载的时候是随机地址3、PIC(位置代码独立)如果MachO内部需要调用 系统的库函数时先在_DATA段中建立一个指针,指向外部函数DYLD会动态的进行绑定,将MachO中的DATA段中的指针,指向外部函数(DYLD会告诉MachO要依赖的外部库的位置)_DATA段中建立的指针就是符号(s
转载 5月前
53阅读
由于逆向过程中代码注入往往会使用 hook 这种方式 , 而且在安全防护与监测方面经常使用 .另外只知道 runtime 交换 imp 的方式对于中高级开发人员 ( 想偷懒又想装* ) 显然是不太够的 . 那么我们今天就来好好探讨一下 ​​Hook​​ 与 ​​fishHook​​ 原理 .Hook 概述HOOK,中文译为 ​​“挂钩“​​ 或 ​​“钩子”​​ 。在 iOS 逆向中是指改变程序
转载 2021-04-08 15:10:00
1144阅读
2评论
笔者之前观看的是2017版斯坦福swift教程,今天来更新2020版最新的教程 第三课(下)——讲述swiftUI的协议与layout view的使用,并且完成了家庭作业中的大小设定,使用 .aspectRatio(contentMode: .fit) 下面上代码,代码中有注释,当然也可以留言交流// // ContentView.swift // Memorize // // Create
转载 2024-08-28 08:48:29
34阅读
整个MBProgressHUD只有两个文件, 一个.h和.m文件, 整体逻辑非常简单, 整个MBProgressHUD就是一个UIView, 所有的操作, 都是围绕着这个这个UIView进行的操作. 代码中, 实现了如下类:MBProgressHUD, 主体功能类, 即对外的操作主功能所在. MBProgressHUDDelegate, MBProgressHUD的代理, 内部
转载 2023-10-02 10:46:05
76阅读
我们都知道,OC是基于运行时的一门语言,我们方法的调用等的工作,都是在运行时进行的,runtime底层源码经过编译,提供一套API接口供OC和FrameWork使用!今天,我们就去runtime的源码去一探究竟!首先来看一个最常见的例子,来说明运行时:上图很好的说明了,OC是基于运行时的一门语言.我们需要知道的几个基础:1.在 objc/runtime.h 中,Class(类) 被定义为指向 ob
# 深入理解 iOS UIKit 源码 ## 引言 UIKit 是 iOS 应用程序开发中的核心框架。它为开发者提供了丰富的用户界面元素和事件处理机制。在深入 UIKit 源码之前,我们需要先了解它的基本架构,以及如何在项目中使用它。本文将探讨 UIKit 的一些重要组件,并以实际代码示例来帮助读者更好地理解。 ## UIKit 的基本架构 UIKit 主要由以下几个核心组件构成: -
原创 8月前
134阅读
在开发过程中,iOS 源码问题是一个常见的挑战。在这篇文章中,我将逐步记录如何解决一个典型的 iOS 源码相关问题,包括背景描述、技术原理、架构解析、源码分析、性能优化以及应用场景的探讨。 背景描述 当我们在开发 iOS 应用时,往往会碰到需要深入理解源码的情境。尤其是在我们需要修复 bug 或优化性能时。下面是我在处理 iOS 源码问题时的默认考虑: 1. 确认问题的具体表现。 2. 根据
原创 5月前
4阅读
# iOS 源码揭秘:深入理解 iOS 的基础架构 iOS 作为苹果公司推出的重要操作系统之一,其代码架构和实现方式对开发者而言既是挑战也是机遇。本篇文章将带领你深入了解 iOS 源码,揭示其背后的工作原理,并结合代码示例进行详细解析。 ## 1. iOS 源码的基础架构 iOS 源码是一个复杂而庞大的体系,主要分为以下几个部分: - **核心操作系统**:基于 Unix 的 Darwim
原创 7月前
76阅读
简介Aspects是一个面向切面编程的库。如果想深入了解iOS Runtime中的消息发送机制,Aspects的源码是值得分析的。 项目主页Aspects整体分析阅读Aspects的源码需要以下知识作为基础Objective-C Runtime理解OC的消息分发机制KVO中的指针交换技术 阅读本文之前,建议应该先断点调试下Aspects的Demo,了解大致的过程。核心实现Aspects的核心实现就
转载 2023-08-19 10:20:21
71阅读
前提为了深入理解OC的Runtime机制,我们可以通过Apple开源出来的Runtime源码编译出自己的libobjc.A.dylib,然后自己添加target断点调试,从而深入理解objc的特性。想直接拿到可编译版本的同学,可以去我的Github objc-709下载。本文环境是macOS系统10.12.6,Xcode9.x一、下载源码打开苹果开源项目目录,⌘+F搜索下面的项目:objc4、Li
转载 1月前
384阅读
前言你是否想调试 objc 源码,能断点跳跳跳跳进去,对 OC 底层一探究竟。于是你找到了各种官方开源源码,但是不能像我们日常 run 起来项目,进行调试。本文就手把手写清楚步骤,助你一臂之力。注意:如果你的 macOS 系统是 12,objc4-818.2 现在不支持,需要等 Apple 更新。另,文末有已可编译的 demo。需要准备的资源objc4-818.2dyld-940:The Dyna
转载 1月前
416阅读
  • 1
  • 2
  • 3
  • 4
  • 5