自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 macOS 10.15 解决 app 已损坏,打不开。您应该将它移到废纸篓

app is damaged and can’t be opened. You should move it to the Trash. 一般网上的解决办法是命令行执行 sudo spctl --master-disable,很多人肯定也试了,但是无效。打开设置一看,明明已经设置好了啊。这应该是...

2020-06-10 17:53:36 178 0

原创 [iOS 逆向 13] 代码混淆

背景 经过逆向工程实践,可以发现静态分析在整个过程中是不可缺少的,而且静态分析工具生成的伪代码极大地提高了分析效率。想象一下如果没有静态分析,实现解除会员限制的过程:连接界面调试器 Reveal,找到目标界面,获取按钮地址,打印按钮的响应事件,获取响应方法的 C 函数指针,连接 LLDB 给该函数...

2020-05-29 17:17:18 223 0

原创 [iOS 逆向 12] 加密与动态保护

前面详细介绍了 App 的逆向过程,可以发现逆向工具层出不穷,使逆向开发的门槛越来越低。回看自己开发的 App,也面临着被分析、解除使用限制等危险。下面介绍几种保护方案。 数据加密 App 内需要保护的数据主要包括静态字符串、本地存储数据和网络传输数据,一般开发者不会对这些数据加密后使用,而是直接...

2020-05-29 17:15:38 191 0

原创 [iOS 逆向 10] 实践一

设备:iPhone 6 Plus with iOS 12.4 目标:解除番茄ToDo 会员功能限制 1 脱壳 使用 dumpdecrypted 工具,把可执行文件和 framework 都脱壳。 2 导出头文件 使用 class-dump 工具将可执行文件的头文件导出备用。 3 分析界面 连上 ...

2020-05-29 17:10:57 100 0

原创 [iOS 逆向 7] Hook

概述 Hook,钩子,用来改变程序执行流程。iOS 中有以下几种方式: Method Swizzling:利用 runtime 特性,进行 OC 方法重排。 fishhook:利用 Mach-O 格式程序加载原理,对动态库中 C 函数重排。 Cydia Substrate:一个框架,提供多种函数...

2020-05-29 16:46:39 87 0

原创 [iOS 逆向 6] 分析与调试

获取 App iTools 越狱后,iTools 软件内可以看到手机安装了哪些应用,选中某个应用,点导出即可。 注意:.ipa 文件实际就是 .zip 文件,直接改后缀、解压即可。 获取到 某.app,查看包内容,找到里面的可执行文件: nm 命令查看目标文件中的符号信息 file 命令查看文件状...

2020-05-29 16:46:14 112 0

原创 [iOS 逆向 5] 逆向储备

本文主要介绍一些 iOS / Mac OS X 操作系统的东西,比如 DYLD,Mach-O,ARM 汇编。内容很枯燥,可以跳过。 dyld

2020-05-29 16:45:49 160 0

原创 [iOS 逆向 4] 开发储备

1 iOS 基础 这部分简述。 视图树 Xcode 可以点击 Debug View Hierarchy 查看视图树,例如: 明确地展示了视图层级关系。 点击某个视图可以查看非常详细的属性。 内存图 Xcode 可以点击 Debug Memory Graph 查看对象引用关系、内存申请情况等,例如...

2020-05-29 16:44:54 216 0

原创 [iOS 逆向 3] 应用砸壳

iOS 逆向工程的流程大致如下: 1 解密、导出应用程序、class-dump 导出头文件,为后续工作做准备。 2 分析界面,获取当前界面布局及控制器。 3 hook 发现的一些相关类,记录输出调用顺序及参数。 4 找到关键函数,查看调用堆栈,hook 测试效果。 5 静态分析加动态调试分析关键函...

2020-05-29 16:41:43 203 0

原创 [iOS 逆向 2] 越狱介绍

介绍 越狱,就是利用 iOS 系统中的漏洞,对系统安全权限进行破解,获取 Root 权限,然后就可以为所欲为了。 越狱分三种: 1 引导式越狱 重启后无法开机,需要用工具重新引导 2 不完美越狱 重启后回到未越狱状态,需要重新越狱 3 完美越狱 重启后仍然保持越狱状态 至于如何寻找漏洞并利用漏洞,...

2020-05-29 16:41:07 190 0

原创 [iOS 逆向 1] 系统安全架构

iOS逆向系列文章 系统安全架构 iOS系统的安全架构,包含以下几个点: 1 安全启动链 系统启动过程中每一步包含的组件都已经过苹果签名,只有签名验证成功才会执行: 关于上图中的签名验证,需要先介绍一些加密知识。每段程序都含有一个数字签名,数字签名是什么?对于一段程序,苹果先选用某个哈希函数计算...

2020-05-29 16:40:36 112 0

原创 屏蔽广告方法(Adblock 插件)

方法一(推荐) 1 下载谷歌浏览器 为什么是谷歌?我亲自测试了 safari,插件根本没用;By the way,safari 看斗鱼真的不行,斗鱼程序员根本没认真适配 Safari,看2个小时内存占用飙到 5G,是我脱坑safari的最大原因(其次就是广告屏蔽了) 2 下载 Adblock 插件...

2020-04-11 00:42:37 165 0

原创 [iOS 理解] 程序加载过程

点击 app 按钮 IOKit 封装 event,通过 mach port 发给 SpringBoard 这部分是响应者链,在另一篇写过了,省略 SpringBoard 在处理函数中,先调用 fork linux 0.1 中 fork 大致实现是: fork() _syscall 宏 int ...

2020-03-14 01:38:16 69 0

原创 UICollectionView 插入后滑动到最底部

UICollectionView的坑

2020-03-07 19:07:35 505 0

原创 [iOS 理解] block

第一步,初步理解 网上博客千篇一律的内容,我找了一篇质量还不错的 看完那篇其实就差不多够了,但我这还有一些补充的东西。 第二步 对照源码自己看 官网链接不是 Xcode 项目,如果想看的舒服需要自己配 Xcode 关键字高亮、点击跳转 我这有配好的链接 block 核心文件只有一个,只有几百行,就...

2020-03-07 16:49:58 47 0

原创 [iOS 理解] weak

前面内存管理的文章写了其他的修饰符,__weak 单开一篇文章。 在写 weak 之前,想起来还有一些修饰符与内存管理有关。 __block 要单开一篇文章; Core Foundation 对象 与 OC 对象间的强制转换与内存管理问题先介绍一下。 CF 对象与 OC 对象的强制转换 __bri...

2020-03-05 02:55:56 38 0

原创 [iOS 理解] 内存管理 自动释放池

ARC 可理解为,在MRC的基础上,由编译器在合适的地方自动插入 retain/release/autorelease 方法,不需要手动管理。因此直接学习 MRC的实现。

2020-03-04 17:12:21 44 0

原创 [iOS 理解] RunLoop

理解 runloop 步骤 1 下载源码 2 让 Makefile管理的 C/C++ 项目使用Xcode阅读时源码高亮、支持跳转 3 先学习这篇博客 建议第一天看一遍这篇文章,不求理解 第二天再结合源码看,同时追求理解 第三天只看没理解的地方,并且自己悟 这类东西最好不要一天学完 结束 自己总结...

2020-03-04 13:45:30 50 0

原创 [iOS 理解] instanceSize

class_ro_t 中的 instanceSize 编译器把某个类的 OC 代码转为 C 代码时,子类结构体第一个变量,是父类结构体: struct Child { struct Parent parent_ivars; int child_ivar; }; 所以在内存布局...

2020-03-01 17:21:26 26 0

原创 [iOS 理解] 消息机制

消息机制 [receiver sel]; 会编译为 objc_msgSend 的调用。 objc_msgSend(receiver, sel) 汇编解析 // arm64架构。x0 = receiver, x1 = sel receiver nil check/tagged pointer che...

2020-03-01 02:05:31 82 0

原创 [iOS 理解] swizzling

method swizzling 每个类都有一个 dispatch table,表的每一项代表一个 Method,Method = SEL + IMP,SEL = 方法名称字符串,IMP = 一个函数的起始地址。 method swizzling 就是把 SEL 对应的 IMP 和另一个 SEL ...

2019-12-25 12:20:22 54 0

原创 [iOS 理解] copy

前言 NSObject 有 copy 和 mutableCopy 两个成员。这两个函数是分别直接返回 copyWithZone 和 mutableCopyWithZone 的返回值。 (注意,不是这个: + (id)copyWithZone:(struct _NSZone *)zone OB...

2019-12-23 19:03:48 156 0

原创 [iOS 理解] 响应者链

本文将会解析从触摸到屏幕开始,发生了什么; 响应者怎么获得事件,响应者是什么,事件是什么,让谁响应,怎么响应? 交互方式 目前有(未来可能有其他方式): Touch 触摸 Press 按压,物理按钮 Motion 运动,摇一摇 Remote-Control 远程控制,AirPods 以上交互,...

2019-12-05 18:15:16 86 0

原创 UIFontTextStyle 样式图

方便用的时候查表。

2019-08-19 22:15:05 231 0

原创 python 与子进程通信

本文出发点 我个人需求是: 在一个py文件里,想获得另一个 py文件某函数的输出。 (当然,直接 import 该函数,调用不就行了吗 ! ) (扩展,子进程没有限制,任意可执行文件皆可 ) 详细例子 假设现在 A 里面有一个循环: 获取用户输入 调用 B 中 函数 返回值到 A 程序 A 主...

2019-05-04 20:32:12 672 0

原创 Scrapy 使用示例:从 Xpath 到 Webdriver

本文用于以后快速创建爬虫项目 准备 pip install scrapy pip install selenium 下载 chrome webdriver,放在环境变量里 scrapy shell 或 控制台 打开要爬取的网站,命令行输入 scrapy shell your-url ...

2019-04-30 15:57:54 90 0

原创 从零开始 Vue.js 笔记

安装 on macOS brew install npm npm install -g vue-cli 安装完成,即可打开 IDEA,安装 Vue plugin,开始创建第一个 Vue 项目,此过程省略。 备忘命令 命令行创建项目: npm install cnpm -g # 可以不...

2019-04-21 02:56:53 66 0

原创 计算机视觉 实验二 opencv 课程实验 (高斯滤波,联合双边滤波)

实验2-1:实现图像的高斯滤波处理 实验要求: 1)通过调整高斯函数的标准差(sigma)来控制平滑程度; 给定函数:void Gaussian(const MyImage &input, MyImage &output, double sigma); 2)滤波窗口大小取为...

2019-04-08 19:40:00 349 0

原创 计算机视觉 实验一 opencv 课程实验(显示,合成)

实验1-1:图像显示 实验要求: 1)利用图像库的功能,实现从文件加载图像,并在窗口中进行显示的功能; 2)利用常见的图像文件格式(.jpg; .png; .bmp; .gif)进行测试。 实验1-2:图像合成 实验要求: 1)现有一张4通道透明图像a.png: 2)从其中提取出al...

2019-04-08 19:13:28 346 0

原创 OpenCV4 打开 gif (FreeImage)

准备 FreeImage 库,自己编译或下载 我自己编译的静态库链接总是失败,无奈找了一个编译好的。macOS上开发有利有弊,目前我感觉到的最大的弊端就是 编译、链接真的恶心。macOS版的静态库点击这里下载。密码:p2lb。 代码: 现在仅支持读取 CV_8UC3 / CV8UC4 的 ...

2019-03-14 20:51:59 916 2

原创 NSMutableArray 遇到的坑

描述 写了如下排序有关的类(这里只展示了.h文件): @interface SortBaseClass : NSObject <Sorter, Comparable> @property (assign) SortOrder sortOrder...

2018-04-18 21:50:58 2129 1

原创 [2020] Mac 下搭建 opencv 开发环境

进入官网: https://opencv.org/releases.html 找到最新版,点 source 开始下载。建议下载开始后复制链接到迅雷。 下载cmake : https://cmake.org/files/v3.11/cmake-3.11.0-rc4-Darwin-x86_64...

2018-03-27 10:56:25 3150 0

原创 .obj重定义解决方法

个人经常写 .h 或 .hpp 文件 且把声明和定义写一起,虽然大多情况下不报错,也正常跑,但是 一旦IDE死脑子转不过来 报了重定义 你就别指望 #pragma once 或者 #ifndef 了,根本不行。 (如果你连pragma once或 ifndef都没声明,那你拉倒吧) 这...

2018-03-16 18:52:30 669 0

原创 [超简单] lambda做函数参数,C++ lambda表达式,闭包超简单使用!

## 写过别的语言的 比如kotlin objective-C swift 应该都熟悉函数式编程。 lambda表达式,也就是闭包,C++11里终于来了。 最简单使用: #include <iostream> using namespace std; in...

2018-03-14 14:54:36 3843 0

原创 实现 titleview 居中 navigationItem

viewDidLoad里: let width: CGFloat = 100 let ScreenWidth = UIScreen.main.bounds.width //第一步,设置titleView为一个空白UIView(作背板) navigationItem.titleView = ...

2017-12-02 16:24:51 1979 0

原创 UITableView grouped之调整任意header、footer首尾高度

实现思路:用.plain格式的tableView,自定义分割高度,避开了一头雾水的 .groupedclass ELTableControllerGrouped: UIViewController, UITableViewDataSource, UITableViewDelegate { v...

2017-09-27 22:40:50 616 0

原创 iOS UICollectionView去除多余分割线

例如: 出现原因: 浮点数除法导致cell在布局时frame有误差。 解决办法:只需要继承Layout,重写一个成员即可: class MyCollectionViewFlowLayout: UICollectionViewFlowLayout { override ...

2017-09-02 19:56:28 2831 0

原创 Setting up CocoaPods master repo等 速度慢、卡住终极解决方案

Setting up CocoaPods master repo等 速度慢、卡住终极解决方案

2017-08-15 20:10:20 2116 0

原创 iOS UserDefaults存储自定义对象

iOS 数据持久化之使用 UserDefaults存储轻量级数据看了网上的关于UserDefaults的入门用法的讲解,我是真的头皮发麻。可读性太差了。重点笔记如下:基本数据类型存储官方文档里说只支持NSData, NSString, NSNumber, NSDate, NSArray, NSD...

2017-07-24 16:07:04 1150 0

原创 iOS CoreAnimation(一)图层与视图,寄宿图

最近在学习一本书,叫做 iOS CoreAnimation:Advanced Techniques别误会,动画只是这本书的冰山一角。看了下目录,讲的内容先列一下: 图层树 寄宿树 图层几何学 视觉效果 变换 专用图层 隐式动画 显式动画 图层时间 缓冲 基于定时器的动画 性能调优 高效绘图 图像I...

2017-07-23 19:06:51 181 0

提示
确定要删除当前文章?
取消 删除