自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Clement_Gu的博客

致力于纯代码的开发

原创 swift 自定义UIView构造函数

override init(frame: CGRect) { super.init(frame: frame)}required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented")}> - 成员成员变量必须要赋值初始值,不然会报没有初始化成员变量的错误 可以用懒加...

2020-01-17 15:13:19 371

原创 swift struct 关键字替换 CodingKey

####问题场景开发过程中经常会遇到模型属性名字跟系统属性名字相互冲突,那么么需要进行替换。class 类的替换相信大家都已经熟悉,下面介绍struct的key的替换以及踩过的坑。示例代码如下///rows 关键字跟 系统属性冲突struct GJ_CrawlerModel: Codable { var records:Int? //总共多少条记录 var page:Int...

2020-01-17 15:09:50 132

原创 OC调用Swift

####OC项目中调用Swift方法很简单但是网上资料比较乱,这边稍微整理一下#import “ProjectName-Swift.h”在需要调用的文件中导入以上头文件,格式为项目名称+Swift.h#import "BUICardDemo-Swift.h"//工程名为BUICardDemo#import "ViewController.h"@interface ViewCont...

2019-12-27 11:55:44 46

原创 ios oc swift混编导致打包过大问题 avoid SwiftSupport folder

####SwiftSupport 导致包过大  在OC swift混编后打包由于SwiftSupport支持文件会导致混编后的打的包文件会偏大。####解决方法Build Setting -> User-Defined -> EMBEDDED_CONTENT_CONTAINS_SWIFT 设置为NO#####相关链接avoid SwiftSupport folder i...

2018-10-31 20:23:55 2613 1

原创 ios Xcode 10 Multiple commands produce 问题

####Xcode运行已经存在的非10版本的项目 一般会出现以下错误####解决方法File -> Workspace Settings…在Build System: 选择Legacy Build System运行即可

2018-10-17 17:23:51 1290

原创 ios开发 mac的内存清理 mac系统文件并不是全是操作系统文件

###系统内存的激增最近系统升级和Xcode升级的时候发现内存越来越不够用的,为此还特地买了个移动硬盘来存储使用不太频繁的文件。然而到最后升级系统甚至Xcode的时候完全没有空间了,而显示系统占用内存为200多G。所以完全不够用。####打包惹的祸打开终端执行下面指令:cd ~/Library/Developer/Xcode/Archivesopen .这样打开了资源库里面的Xco...

2018-10-17 17:21:53 369

原创 dyld: Symbol not found: ___NSArray0__ Referenced from: /System/Library/Frameworks/CoreFoundation

dyld: Symbol not found: _NSArray0 Referenced from: /System/Library/Frameworks/CoreFoundation.framework  报类似错误的一般是低版本手机会遇到,解决方案如下: - 先确定在Build Phases -> Link Binary With Libraries 中是否添加了CoreFo...

2018-09-08 19:15:16 552

原创 JSON text did not start with array or object and option to allow fragments not set

###用AFN解析网页数据报错 原因是afn默认是解析json数据,修改方法如下:AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];manager.responseSerializer = [AFHTTPResponseSerializer serializer];这样就可以解析到网页数据了。 然后将dat...

2018-08-30 18:04:14 3523

原创 ios 生成随机背景色

利用arc4random()生成随机背景色 int r = arc4random() % 255; int g = arc4random() % 255; int b = arc4random() % 255; CGFloat rr = r / 255.0; CGFloat rg = g / 255.0; CGFloat rb = b / 25...

2018-06-27 10:37:11 576

原创 ios KVO设置TableView和Collectionview的高度与内容一致

需求tableView或collectionview为界面一个控件,并且在无数据的时候不显示,在有数据的时候按照数据多少显示高度和内容相等。思路利用KVO原理。因为tableView和Collectionview都继承于UIScrollview,所以根据其contentSize来实时检测其contentsize大小并且根据其内容来动态设置其高度。代码添加kvo 这边界...

2018-06-21 10:32:50 1456 1

原创 ios逆向- 02Mach-O文件简介.o.a动态库

Mach-O文件官方介绍总共有11种格式! 是 Mach Object的缩写,是Mac\iOS 上用于存储程序,库的标准格式! 常见的格式:1.可执行文件 2.objcet .o 文件(目标文件).a 静态库文件.其实就是N个.o文件的集合3.DYLIB: 动态库文件 dylibframework4.动态连接器5.DSYM (打包上架用于监测崩溃信息).o文...

2018-06-12 12:09:41 1689

原创 ios逆向- 01逆向原理&Class-dump安装及获取头文件

逆向原理动态调试 通过界面调试Cycript\Xcode LLDB! 静态分析 利用之前学习的汇编代码,分析三方APP的源码! 代码注入 注入的其实是动态库!HOOK代码 改变原来程序的执行流程! 重签名  安装在非越狱手机上面Class-dump下载地址http://stevenygard.com也可以安装monkeyDev其自带Class-dump,下载地址:http...

2018-06-11 18:26:39 375

原创 arm64汇编篇-16指针的基本用法及多级指针反汇编

空指针 在win32中指针是随机值,但是在arm中指针是NULL。寄存器中值为0x0000000000000000。下面看一组代码void func (){ char *b; char *a = *b;}效果如下图:解析b是一个指针,然后a取b内存地址值赋值给a,然后报错因为空指针里面没有值。一级指针运算1.代码void...

2018-06-11 16:10:43 445

原创 arm64汇编篇-015指针的反汇编

指针的反汇编1.输入如下代码:void func (){ int * a; int b = 10; a = &b;}2.真机运行断点调试如图: 3.解析: 1.将栈空间四个字节内存给x8寄存器 2.将10赋值给w9寄存器 3.将w9寄存器的值存储到x8寄存器指向的内存空间 4.将x8的值存储在sp偏移8个单位空间,即栈空间。(局...

2018-06-11 11:53:10 350

原创 arm64汇编篇 - 014 指针的运算

指针的宽度1.写入下面代码真机运行:void func(){int * a;printf("%lu",sizeof(a));}2.得出结果为8即指针在64位中的宽度为8个字节。指针的运算编译器决定指针不可以做乘法运算可以做加法减法运算指针的加法 1.如下代码:void func(){int * a;a = (int *)100;a++;pr...

2018-06-11 11:52:10 296

原创 arm64汇编篇-13编译器优化及寄存器与多线程问题

编译器模式 Debug Release不同模式下编译器的配置不同的,buildSettings -> 搜索optimization 如下图: 以下几个模式是将编译器优化的几个方向。编译器优化效果1.将Debug选项的none 选择为跟Release 模式下的Fastest Smallest 2.去掉main函数的循环写入以下代码: int a = 1;...

2018-06-11 11:49:23 501 1

原创 arm64汇编篇-12Switch底层运行原理

switch特性介绍1、假设switch语句的分支比较少的时候(例如3,少于4的时候没有意义)没有必要使用此结构,相当于if。2、各个分支常量的差值较大的时候,编译器会在效率还是内存进行取舍,这个时候编译器还是会编译成类似于if,else的结构。3、在分支比较多的时候:在编译的时候会生成一个表(跳转表每个地址四个字节)。switch汇编代码案例三个及以下case1....

2018-06-07 12:06:41 175

原创 arm64汇编篇-11循环while、for

while循环创建工程->main函数页面写入以下代码:void func(){ int nSum = 0; int i = 0; while (i <= 100){ nSum = nSum + 1; i++; }}2.真机编译将得出的mach-O文件放入ida64中解析获得以下结果: 注:ida的操...

2018-06-07 12:03:45 1176

原创 arm64汇编篇-10IF代码的识别

本篇主要介绍通过汇编代码逆向还原带if条件的高级代码。1.创建工程文件在main函数页面写一个带if判断语句的方法如下:int less = 10;   //全局变量void func(int a, int b){    if (a < b) {             less  = a;    }    else    {           less = b;   }}2.真机编译找到...

2018-06-07 12:01:24 460

原创 arm64汇编篇-常用指令篇

本篇主要记载汇编语言中常用的指令及其代表的含义,实时不断跟新。    CMP  w0 , w1  CMP (compare)的意思是比较的意思 相当于将w0减去w1但是不会改变两个寄存器的值即两个寄存器不会变化,但是其结果会影响cpsr状态寄存器的标记值(nzcv)。(把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。)   BL  跳转到标号处执行   B...

2018-06-07 12:00:27 4097

原创 arm64汇编篇-09ida解析包的汇编代码操作

获取汇编文件1.解压ipa找到对应的应用程序 -> 右击显示包内容 ->  找到跟项目名一致的可执行文件。2.打开ida64 -> new -> cancel -> 将汇编文件拖进去 -> 空格将代码全屏显示。3.附上ida工具的网盘地址链接:https://pan.baidu.com/s/1-442sAGX7lMc2zgvQBvolA 密码:kivr4.根据汇...

2018-06-07 11:59:44 402

原创 arm64汇编篇-08内存分区及adrp指令

内存分区代码区 特点: 可读可写可执行栈区域 放参数和局部变量堆区域 动态申请 可读可写全局: 可读可写常量区: 只读!adrp指令1)创建项目在mian 文件中写个方法然后执行此方法在汇编模式调试断点。详细操作将debug -> Debug Overflow -> Always Show DisAssembly 选中运行查看混编代码。如果想恢复再点下就可以了.2) 得到以下界面3)原...

2018-06-07 11:58:56 1939

原创 arm64汇编篇-07cpsr状态寄存器

状态寄存器    CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同).这种寄存器在ARM中,被称为状态寄存器就是CPSR(current program status register)寄存器    CPSR和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义.而CPSR寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息....

2018-06-07 11:58:02 1140

原创 ios 方抓包检测代理arc方法

之前找的资料都是mrc的现在给大家分享下arc的方法,亲测有效。1.导入CFNetWork框架#import <CFNetwork/CFNetwork.h>2.复制以下代码/** 判断是否设置代理 */+ (BOOL)getProxyStatus {   NSDictionary *proxySettings = (__bridge NSDictionary *)(CFNetworkC...

2018-06-07 11:55:49 497 1

原创 arm64汇编篇-06嵌套函数的汇编原理

x0x1概念:一个函数的参数系统是将其从x0到x7去赋值的,但是计算后的结果却是返回到x0寄存器中,这样便涉及到寄存器数据的保护。原理:  对公用的参数和返回值先做栈保护存储起来,然后等要用的时候到对应的内存地址中取出来使用。实例:1.创建demo工程。2.在mian文件中写入如下代码:/** 系统方法 自动创建汇编代码 */int sum(int a,int b){   return a + b...

2018-06-07 11:54:42 702

原创 arm64汇编篇-05函数的本质及实例分析

函数的参数和返回值:ARM64下,函数的参数是存放在X0到X7(W0到W7)这8个寄存器里面的.如果超过8个参数,就会入栈.函数的返回值是放在X0 寄存器里面的.这些是系统规定的,也正是这些规则我们才能逆向去解析别人的代码。函数的局部变量:函数的局部变量放在栈里面。这个大家都知道,下面我们建个项目来研究下函数执行的汇编代码。堆栈操作例子:使用32个字节空间作为这段程序的栈空间,然后利用栈将x0和x...

2018-06-07 11:54:04 1873 2

原创 arm64汇编篇-04堆与栈的关系

栈:栈是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)。堆:堆用于动态分配和释放程序所使用的对象.(这边不详细介绍堆,汇编中主要是看栈的运用)。地址读取:内存中内存地址的读取是从低地址向高地址读取的。栈与堆的关系:上面简单的画了一下堆栈的关系,Stack Overflow大家应该不是很陌生,在开发中遇到的很多刁钻的问题都可以在Stack Overflow...

2018-06-05 15:51:10 529

原创 arm64汇编篇-03寄存器

寄存器CPU由控制器、运算器还有寄存器构成,其中寄存器作用就是进行数据的临时存储。CPU的运算速度是非常快的,为了性能CPU在内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中,运算时就在这一小快临时存储区域内进行。我们称这一小块临时存储区域为寄存器。iPhoneX上搭载的ARM处理器A11它的1级缓存的容量是64KB,2级缓存的容量8M.CPU每执行一条指令前都...

2018-06-05 15:50:24 2433

原创 arm64汇编篇-02进制

进制定义八进制由8个符号组成:0 1 2 3 4 5 6 7 逢八进一十进制由10个符号组成:0 1 2 3 4 5 6 7 8 9逢十进一N进制就是由N个符号组成:逢N进一自定义一个十进制:十进制由10个符号组成: 0 1 3 2 8 A B E S 7 逢十进一如果这样定义十进制: 1 + 1 = 3!就对了!传统我们定义的十进制和自定义的十进制不一样.那么这10个符号如果我们不告诉别人这个符...

2018-06-05 15:49:38 259

原创 arm64汇编篇-01CPU与内存简介

CPU在汇编中的重要性在汇编中,硬件相关最为重要是CPU/内存在汇编中,大部分指令都是和CPU与内存相关的ap的运行过程CPU-总线总线:一根根导线的集合,CPU通过总线来实现其功能的。总线分三类:地址总线它的宽度决定了CPU的寻址能力8086的地址总线宽度是20,所以寻址能力是1M( 2的20次方 )(地址总线的寻址能力为2的地址总线根数次方 地址总线的最小单位是Byte 1Btye = 8bi...

2018-06-05 15:48:43 543

原创 ios cycript安装及简单使用

cycript安装cycript是一个动态调试安装包:下载地址为http://www.cycript.org/进入网页下载后自动安装。安装说明:1.一般下载后会默认进入 /opt 文件中如果你装了MonkeyDev 那么你会发现其也是安装在这里的。2.但是也有的人可能下载到下载里面了,建议移到opt目录:cd /optopen .打开文件夹后将cycript文件夹拖进来,会提示鉴定输入mac密码就...

2018-06-05 15:48:13 2006

原创 Item2和zsh安装及Item2的快件键

Item2及zsh的安装借用前辈的一个博客并做一些在安装中的一些补充:http://www.cnblogs.com/xishuai/p/mac-iterm2.html1.在文章中介绍的修改系名字过长的方法,我在.zshrc 添加DEFAULT_USER="clement"保存退出后没有效果。后来我的处理方法是:cd ~/.oh-my-zsh/themes    //进入zsh的主题文件 vim a...

2018-06-05 15:47:17 273

原创 Alfred、XtraFinder辅助工具安装

Alfred Alfred可以快速方便的打开任意的应用程序。应用参考一地址:http://www.sdifen.com/alfred32.html简单介绍下一些简单的应用:自定义搜索添加  搜索引擎可以快捷键cmd + ,进入Preference 或者右击状态栏的帽子进入。按如下图操作然后 使用的时候用快捷键option + Space 唤出 打出自定义快捷键 空格搜索想要找的信息。添加终端 这边...

2018-06-05 15:46:28 223

原创 ios xcode9 真机无线调试

条件1.macOS 10.12.4及以上2.Xcode9 Beta 及以上3.ios 11.0及以上配置:首次配置需要数据线连接。根据下图操作 点击Connect via network即可 之后在同一网段下不需要再配置...

2018-06-05 15:43:22 284

原创 apple mach-o linker (id) error

apple mach-o linker (id) error 错误处理错误说明:我遇到的情况是将AppDelete放到文件夹里了 然后重新关联了一下就报这个错。xcode 9  swift 4解决方法:1.将文件夹里面的appdelegate 拖出来编译一下再拖回去就可以了。2.查了一些资料,也可以试试 clean一下再编译。3.还有一些资料说是因为product 和 target 中的版本号不一...

2018-06-05 15:42:35 516

原创 swift guard用法

guard语句是swift 2 之后新添加的关键字,与if语句非常类似,可以在判断一个条件为true的情况下执行某语句,否则终止或跳过执行某语句。他设计的目的是替换复杂if-else语句的嵌套,提高成虚的可读性。guard 条件表达式 else {跳转语句}语句组主要用于嵌套判断列://创建结构体class guardCode: NSObject {struct Blog{let name:Str...

2018-06-05 15:41:35 1193

原创 swift Unicode编码

 swift 采用Unicode编码,几乎涵盖了所有我们知道的字符。let  andSign:Charaterar = ""let andSign:Charater = "\u{26}"\t         \u{0009}     水平制表符tab\n        \u{000a}   换行\r        \u{000d}     回车\"        \u{0022}    双引号\'...

2018-05-31 17:41:55 652

原创 swift 数据类型

Swift中的数据类型包括:整型、浮点型、布尔型、字符、字符串、元组、集合、枚举、结构体和类等。这些类型在赋值或给函数传递时的方式不同,可以分为:值类型和引用类型。值类型:就是创建一个副本,把副本赋值或传递过去这样在函数的调用过程中不会影响原始数据。引用类型:就是把数据本身的引用(即:指针)赋值或传递过去,这样在函数调用过程中会影响原始数据。整型、浮点型、布尔型、字符、字符串、元组、集合、枚举、结...

2018-05-31 17:41:09 286

原创 ios 获取外网ip

今天在网上找了一个获取外网地址的方法无奈,Data的initcontentsOfURL一直不好使,然后查询了一些资料得到了一个能使用的方法。下面贴代码。/// 获取外网ip////// - Returns: 外网ipfunc getIpinfo() ->String?{/** 这是ip查询网址 */let urlStr = "http://ip.taobao.com/service/getI...

2018-05-31 17:40:44 434

原创 The volume “Macintosh HD” is out of space Xcode无法提示

Xcode经常出现以上错误并且提示功能失效,以下为处理办法:1、右击Finder点击前往文件夹选项。2、粘贴路径~/Library/Developer/Xcode/DerivedData并前往。3、将文件夹中的所有文件夹删除。4、重启电脑后打开Xcode即可。提示:一般出现这种情况之前写的代码可能无法保存请及时做好拷贝工作。...

2018-05-31 17:39:51 1005

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