- 博客(39)
- 资源 (48)
- 收藏
- 关注
原创 iOS组件化(二):创建远程私有库
由于github的私有库需要收费,因此我们使用码云(gitee)的私有库,免费。1、创建WJSpec远程私有仓库,用来存放podspec文件。1.1 在码云中创建私有项目:1.2 添加你的私有Repo到你的CocoaPodspod repo add WJSpec https://gitee.com/winjayq/WJSpec.git...
2018-07-05 18:05:05
600
原创 iOS组件化(一):创建本地私有库
1.创建Test项目,创建TestLib,添加Person类2.git init3.提交代码4.创建项目的podspec文件5.修改podspec文件,保存s.name = "TestLib"s.version = "0.0.1"s.summary = "TestLib"s.description...
2018-07-05 18:04:40
841
原创 iOS面试题(九)
1、AFN2.x为什么添加一条常驻线程? AFN2.0里面把每一个网络请求的发起和解析都放在了一个线程里执行。正常来说,一个线程执行完任务后就退出了。开启runloop是为了防止线程退出。一方面避免每次请求都要创建新的线程;另一方面,因为connection的请求是异步的,如果不开启runloop,线程执行完代码后不会等待网络请求完的回调就退出了,这会导致网络回调的代理方法不执行。 ...
2018-06-11 23:29:59
458
原创 iOS面试题(八)
1、xcode在 release 模式下断点调试, 对象在打印的时候有值,断点调试却没值, 这是怎么回事?设置Build Settings->Optimization Level 为None[-OO],就可以了 改为: 2、不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)...
2018-05-31 17:57:33
352
原创 iOS面试题(七)
1、UIView动画与核心动画的区别? 1.核心动画只作用在layer. 2.核心动画修改的值都是假像.它的真实位置没有发生变化. 什么时候用UIView动画什么时候用核心动画? 当需要与用户进行交互时用UIView,不需要与用户进行交互时两个都可以. 什么情况用核心动画最多? 1.转场动画. 2.帧动画.(属性动画的一种,另外一个是基础...
2018-05-31 15:55:27
794
原创 iOS面试题(六)
1、单例模式优缺点 主要优点: 1、提供了对唯一实例的受控访问。 2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。 3、允许可变数目的实例。 4、避免对共享资源的多重占用。 主要缺点: 1、不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据...
2018-05-30 11:24:11
294
1
原创 iOS面试题(五)
1、tableView的重用机制? UITableView 通过重用单元格来达到节省内存的目的: 通过为每个单元格指定一个重用标识符,即指定了单元格的种类,当屏幕上的单元格滑出屏幕时,系统会把这个单元格添加到重用队列中,等待被重用,当有新单元格从屏幕外滑入屏幕内时,从重用队列中找看有没有可以重用的单元格,如果有,就拿过来用,如果没有就创建一个来使用。2、在手势对象基础类UIGes...
2018-05-30 00:44:59
280
1
原创 iOS面试题(四)
1、申请后台运行除了后台刷新和VoIP及音乐播放和定位之外还有什么办法? UIBackgroundTaskIdentifier2、你们项目中为什么多线程用GCD而不用NSOperation呢? 你有没有发现国外的大牛他们多线程都是用NSOperation? 你能告诉我他们这样做的理由吗? 关系:①:先搞清两者的关系,NSOpertaionQueue用GCD构建封装的,是G...
2018-05-30 00:02:55
354
原创 iOS面试题(三)
1、Objective-C 中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用per...
2018-05-29 23:05:07
164
原创 iOS面试题(二)
1、给⼀个数组,要求⽤swift写⼀个函数,交换数组中的两个元素.var nums = [1,2,3,4,5,6,7] 主要考察泛型和元组func swap<T>(_ nums: inout [T], _ a : Int, _ b : Int){ let count = nums.count if a==b || a<0 || a>count-...
2018-05-29 17:51:58
212
原创 iOS面试题(一)
1、MVC跟MVP的区别以及使用的优缺点是什么?MVC中V和C之间的关系:C可以控制V的渲染这部分,V起显示作⽤用,同时V上发⽣生的⽤用户事件也可以给C来做⼀些处理理.C和M之间的关系: C可以修改M. M跟V之间的关系: M可以改变V, V读取M给它提供的数据, 可以展示界 ⾯面. MVC中, V跟M之间是有依赖关系的. 在使⽤用MVC的时候, ⽹网络是从C中发起的, C整体来说承担的业...
2018-05-29 17:47:42
232
原创 Duplicate Symbols for Architecture arm64
Xcode编辑时报6 duplicate symbols for architecture arm64,解决方法:方法1.查看自己项目中是否有重复命名的文件(一般就是这个问题,如果项目中排查后,没有发现,就该项目所在的文件是否有重复命名的文件,删除一个就可以了,排查的目标一般都在报错前面列举出来了)方法2.再查看是否在编辑#improt头文件时候,不小心把.h误写成.m方法3....
2018-05-29 11:44:28
3091
原创 iOS逆向之Logos语法
Logos语法 http://iphonedevwiki.net/index.php/Logos * 新建Monkey工程时,MonkeyDev已经将libsubstrate.dylib库和RevealServer.framework库注入进去了,有了libsubstrate.dylib库就能写Logos语法Logos语法: Logos语法 功能解释 事例 ...
2018-05-28 23:26:59
4678
原创 iOS逆向之反HOOK的基本防护
iOS逆向之Method SwizzleiOS逆向之fishHook原理探究iOS逆向之fishHook怎么通过符号找字符串 学习完上面的文章后,深感fishhook之强大,既然fishhook能hook系统的函数。那么猜想: 如果在我们的项目中hook了Method Swizzle,那么别人还能hook我们的项目吗?? 一、写上基本的防护,内部使用hook,外...
2018-05-28 22:37:40
5462
1
原创 iOS逆向之fishHook怎么通过符号找字符串
在fishhook中原本就有怎么通过符号查找字符串的说明,如下图: 现在以上一篇iOS逆向之fishHook原理探究中的NSLog为例来说明一下:1、通过懒加载表Lazy Symbol Pointers找到动态表Dynamic Symbol Table->Indirect Symbols懒加载表Lazy Symbol Pointers与动态表Dynamic Symbol T...
2018-05-27 23:43:14
628
原创 iOS逆向之fishHook原理探究
HOOK原理1、MachO是被谁加载的?DYLD动态加载2、ASLR技术(地址空间布局随机化):MachO文件加载的时候是随机地址3、PIC(位置代码独立)如果MachO内部需要调用 系统的库函数时先在_DATA段中建立一个指针,指向外部函数DYLD会动态的进行绑定,将MachO中的DATA段中的指针,指向外部函数(DYLD会告诉MachO要依赖的外部库的位置...
2018-05-27 22:48:12
943
原创 iOS逆向之fishhookDemo
题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟~~准备工作非越狱的iPhone手机fishhookDemo 1:1、新建工程,将fishhook文件拖入工程2、我们的目的是hook系统的NSLog函数,编写代码//函数指针,用来保存原始的函数的地址static void(*o...
2018-05-18 23:26:25
218
原创 iOS逆向之Method Swizzle
题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟~~准备工作非越狱的iPhone手机用PP助手下载: 微信6.6.5(越狱应用)MachOViewyololibclass-dump学习这篇文章之前应该要对runtime有些了解,参考:https://www.jianshu.com/p/927c8384855a...
2018-05-18 23:25:45
233
原创 iOS逆向之代码注入(dylib)
题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟~~准备工作 非越狱的iPhone手机用PP助手下载: 微信6.6.5(越狱应用)MachOView MachOView下载地址:http://sourceforge.net/projects/machoview/ MachOView源码地址:http...
2018-05-18 23:24:45
2552
原创 iOS性能优化之Leaks动态分析
iOS性能优化之Leaks动态分析 Instruments-Leaks有很多跟踪模块可以动态分析和跟踪内存, CPU 和文件系统(因为是动态分析 所以必须运行才能打开)。具体使用在XCode Open菜单下,点击Leaks 对App进行动态分析(快捷键CMD + i) 或者直接在工程中选择调试导航 在右侧点击Profile in instruments ...
2018-05-17 16:54:01
851
原创 iOS逆向之代码注入(framework)
题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟~~准备工作非越狱的iPhone手机用PP助手下载: 微信6.6.5(越狱应用)MachOView MachOView下载地址:http://sourceforge.net/projects/machoview/ MachOView源码地址:http...
2018-05-17 16:53:18
2036
原创 iOS逆向之HOOK原理
iOS逆向之HOOK原理HOOK概述 HOOK(钩子) 其实就是改变程序执行流程的一种技术的统称! iOS中HOOK技术的几种方式1、Method Swizzle 利用OC的Runtime特性,动态改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变的目的。主要用于OC方法。2、fishhook 它是Face...
2018-05-17 16:52:34
663
原创 iOS逆向之自动化重签名
iOS逆向之自动化重签名准备工作非越狱的iPhone手机用PP助手下载: 微信6.6.5(越狱应用)步骤新建工程”自动化签名”,在工程目录下新建APP文件夹放置需要重签名的ipa包在Build Phases中添加脚本 写入如下脚本:# ${SRCROOT} 为工程文件所在的目录TEMP_PATH="${SRCROOT}/Temp"#资源文...
2018-05-17 16:52:03
1075
原创 iOS逆向之利用Xcode重签名
iOS逆向之利用Xcode重签名准备工作非越狱的iPhone手机用PP助手下载: 微信6.6.5(越狱应用)步骤新建工程”Xocde重签名”,选择开发证书,在真机上运行解压微信6.6.5(越狱应用).ipa,在微信-6.6.5(越狱应用)->Payload下,将WeChat.app改名为Xocde重签名.app在Products->Xcode重签名上...
2018-05-17 16:51:05
705
1
原创 iOS逆向之手动重签名App
iOS逆向之手动重签名App准备工作非越狱的iPhone手机用PP助手下载: 微信6.6.5(越狱应用)步骤解压微信-6.6.5(越狱应用).ipa,直接用系统的解压工具就可以,ipa实际上就是zip包;找到Payload文件夹下的Wechat.app在终端中查看微信6.6.5(越狱应用)的签名信息 $codesign -vv -d WeChat.app ...
2018-05-17 16:50:24
513
原创 iOS逆向之App签名原理
iOS App签名原理在学习iOS签名之前,需要对密码学有一定的了解,比如RSA加密、HASH哈希函数 参考:https://www.jianshu.com/p/003288dfb3b7一、简单的签名原理:目的:保证每个App都是经过苹果公司官方认证的背景:因为手机和系统都是苹果公司生产的,所以苹果公司可以在手机上内置公钥,然后在App Store上放置私钥苹果手机:...
2018-05-17 16:49:55
623
原创 iOS逆向之密码学
密码学1.HASH哈希(散列)函数 不可逆(不能用于加密和解密) 一个二进制数据只有一个HASH值2.非对称 RSA 由于是简单的数学计算,所以加密的效率比较低,一般用于加密核心的(小数据) * 公钥加密,私钥解密 * 私钥加密,公钥解密3.对称 * DES * 3DES * AESopenssl1.生成私钥:openssl genrsa -ou...
2018-05-17 16:49:24
185
原创 iOS逆向之工具篇
一、常用工具: 1)Alfred Alfred3.2 Mac 破解文档: http://www.sdifen.com/alfred32.html 常用设置和操作:https://www.jianshu.com/p/e9f3352c785f Alfred 支持iTerm2的脚本:on alfred_script(q) if application "iTerm2" is ...
2018-05-17 16:48:03
262
原创 iOS ipv6审核被拒绝的解决方案(已审核通过)
目前解决IPv6被拒问题只有三种方案(其他任何方案都是这三种延伸而来): ① NAT64+DNS64 中转解决方案——配置简单、稳定有效。 ② IPv6隧道技术解决方案——技术要求高、稳定性一般。 ③ IPv6带宽接入方案——成本高,适合自建服务器客户。2018年3月份因为公司的新产品上架被拒(Performance - 2.1) ,苹果审核人员在IPv6的环境下不能进入我们的APP。折...
2018-05-17 16:46:56
6662
原创 iOS 内存泄漏的检测方式
内存泄漏的检测方式:一、静态检测方法1)手动静态检测 使用XCode分析功能,Product->Analyze2)自动静态检测 在项目的Build setting中,将Analyze During 'Build'设置为YES二、动态检测方法1)Instrument 工具检测 Leaks2) 第三方的内存检测工具,如MLeaksFinder三、析构方法...
2018-05-16 10:51:20
244
原创 2018 iOS最新最全的手机号正则表达式
//判断是否为电话号码- (BOOL)isMobileNumberOnly:(NSString *)mobileNum{ NSString * MOBILE = @"^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$"; NSPredicate *regextestmobile = [...
2018-05-16 10:50:52
829
原创 安装cycript出错:dyld: Library not loaded
安装cycript后,在控制台输入命令$ /opt/cycript_0.9.594$ ./cycript执行后遇到了这个问题:dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib Referenced from...
2018-05-16 10:50:23
490
原创 初识汇编(三)
函数本质SP和FP寄存器sp寄存器在任意时刻会保存我们栈顶的地址.fp寄存器也称为x29寄存器属于通用寄存器,但是在某些时刻我们利用它保存栈底的地址!() 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\stp ARM64里面 对栈的操作是16字节对齐的!!关于内存读写指令 注意:读...
2018-05-16 10:49:39
276
原创 初识汇编(二)
寄存器内部部件之间由总线连接对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制不同的CPU,寄存器的个数、结构是不相同的通用寄存器ARM64拥有有31个64位的通用寄存器 x0 到 x30,这些寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)那么w0 到 w28 这些是32位的. 因为64位CPU可以兼容32位....
2018-05-16 10:49:07
182
原创 初识汇编(一)
汇编语言与机器语言一一对应,每一条机器指令都有与之对应的汇编指令汇编语言可以通过编译得到机器语言,机器语言可以通过反汇编得到汇编语言高级语言可以通过编译得到汇编语言 \ 机器语言,但汇编语言\机器语言几乎不可能还原成高级语言汇编语言的特点可以直接访问、控制各种硬件设备,比如存储器、CPU等,能最大限度地发挥硬件的功能能够不受编译器的限制,对生成的二进制代码进行完全的控制目...
2018-05-16 10:48:29
181
原创 Xcode调用栈时小图标代表什么意思
对底层感兴趣,经常查看调用栈的朋友,肯定发现了调用栈相关方法旁边有很多小图标,那么它们究竟代表什么意思呢?具体如下:
2018-05-16 10:47:57
315
原创 iOS工程中如何去掉第三方的警告
iOS开发中,编译后出现大量的警告提醒是很正常的,特别是当我们引入了一些第三方的类库时动辄就会出现几十个甚至几百个警告,而且我们又不能随意改动否则影响功能可就惨了,,,怎么办,,,那我们按以下教程暴力去除吧,gogogo一)第一种方法1.在xcode的左上找到下图,选择中间感叹号。 2.选中一个警告右键,如下图 3.选择Reveal in Log,查询警告详情出现一大串的内容,...
2018-05-16 10:47:16
1048
原创 iOS-LLDB调试命令(Low Lever Debug)
断点设置断点 $breakpoint set -n XXX set 是子命令 -n 是选项 是–name 的缩写!查看断点列表 $breakpoint list 删除 $breakpoint delete 组号禁用/启用 breakpointdisable禁用breakpointdisable禁用breakpoint disable 禁用 breakpoint enab...
2018-05-16 10:46:43
158
原创 iOS暴力更改状态栏背景颜色
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];statusBar.backgroundColor = [UIColor whiteColor];
2018-05-16 10:45:06
1515
EVC4.0环境下WinCE Opengles教程(英文带源代码).
2013-10-15
VS2005环境下WinCE OpenGL ES教程
2013-10-15
OpenGL ES从入门到精通
2013-10-15
OpenGL ES学习资料
2013-10-15
解析MIF,MID文件的小程序
2013-10-15
OpenGL蓝宝书,红宝书及源代码,常用API
2013-10-15
OpenGL_ES 实例源代码
2013-10-15
VC++6.0常用快捷键及调试快捷键总结
2013-10-15
OpenGL ES 实现俯视
2013-10-15
OpenGL实现3D模型交互式旋转算法
2013-10-15
OpenGL学习源代码 VC6.0
2013-10-15
GPS原理及应用实验报告
2010-06-04
MAPGIS6.7实用教程
2010-06-04
MAPGIS二次开发培训教程
2010-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人