0%

事出起因

前几天,大学同学发给我一个链接,里面是一个微信抢红包插件的介绍。大致的样子在文末给出。大致是买他们的插件可以通过他们的平台绑定微信号,设定自动抢红包并且设定抢红包的延迟(比如 100 ms)什么的。

之前我在研究 iOS 攻防的时候研究过微信的红包插件。但是从原理上来说,是通过动态链接库为微信插入了自己加入的代码(在收到红包类型信息时,调用拆开红包方法)再通过重签名进行打包。从道德上,也是为了研究 iOS 的攻防的一些知识。当我收到同学的链接时,第一个反应是,居然有人卖这个,简直不合情理。

阅读全文 »

问题描述

这几天有注意到一个问题。我在做相册一块的时候,如果用户没有打开相册访问权限,会跳转到系统的设置界面,接着如果改动了权限回到 app,就会发现 app crash 了,并且重新加载了。

大概的步骤如下:

点击设置后代码如下:

阅读全文 »

周末的时候,突然收到了一些邮件以及知乎的私信,告诉我我的博客似乎挂了。

今天查看的时候,发现确实出现了大片的空白。

以下是排查步骤。

1. 用 Chrome 的开发者工具中的 Network 选项查看

阅读全文 »

有的时候,在 Github 新建项目选择开源许可证是不是很困扰?查阅了资料了以后,大篇的文字也让你看的头晕眼花?

阮一峰前辈在博客中给出了Paul Miller绘制图片的中文版,但是感觉略有不同,下面给出我画的开源许可证快速选择图片。

一目了然:

开源许可证快速选择

阅读全文 »

1 class dump

class dump 是一个用于检查保存在 Mach-O 文件中的 objective-c 运行时信息的工具,攻防中最常用、实用的命令行工具。

1.1 class dump 好玩在哪?

class dump 绝对可以满足你的好奇心。你可以通过 class dump :

  1. 查看闭源的应用、frameworks、bundles。
  2. 对比一个 APP 不同版本之间的接口变化。
  3. 对一些私有 frameworks 做些有趣的试验。

1.2 Download

当前版本: 3.5 (64 bit Intel)
需要 Mac OS X 10.8 或更高版本

class-dump-3.5.dmg
class-dump-3.5.tar.gz
class-dump-3.5.tar.bz2

1.3 Use

阅读全文 »

原文地址

点击这里

这几天部门的前辈再用RAC的时候问到一个问题,RACCommand在RAC中具体的作用和起到的功能,到底应该如何应用它。

关于RAC的使用文章非常多,但是大多仅限于介绍和基本的使用方法,很少介绍RAC究竟应该如何优雅的嵌入到项目中。

在查阅资料的时候发现了此篇博文,写的非常细致,所以做了一次搬运工。

另,妹子我的英文属于渣渣系列,所以有什么翻译不当,请一定要指教。

阅读全文 »

简介

Cycript允许开发人员探讨和修改iOS和Mac OS X上运行的应用程序。
Cycript是一个理解Objective-C语法的javascript解释器,它能够挂钩正在运行的进程,能够在> 运行时修改应用的很多东西。

  1. 能够挂钩正在运行的进程,并且找出正被使用的类信息,例如view controllers,内部和第三方库,甚至程序的delegate的名称。
  2. 对于一个特定的类,例如View Controller, App delegate或者任何其他的类,我们能够得到所有被使用的方法名称。
  3. 能够得到所有实例变量的名称和在程序运行的任意时刻实例变量的值。
  4. 能够在运行时修改实例变量的值。
  5. 能够执行Method Swizzling,例如替换一个特定方法的实现。
  6. 可以在运行时调用任意方法,即使这个方法目前并不在应用的实际代码当中。
阅读全文 »

说明

2016年7月15更新,最近试了一下,发现用nc拿不到数据了,拿数据的代码是没有问题的,直接运行可以拿到数据,但是从mac通过IP和端口拿到的.sqlitedb文件是空文件,博主也正在看为什么~大家有兴趣可以一起找一下原因。

简介

本文章基于念茜的iOS攻防系列。
本文将会讲解如何窃取用户的通讯录信息。
同样在越狱手机环境下。

hack

1. 需要一个plist

需要这样一个plist,它看起来是这样:

阅读全文 »

简介

iOS攻防系列大家耳熟能详的是我们iOS女神念茜的系列文章。博主在看了之后也进行了一系列的学习和尝试。念茜的文章写的比较早,有很多文章中提到的东西已经不再适合现在使用,写的也不算详细,很多地方一笔带过,却不是那么好探索。在中间也有很多摸索的过程。
所以本系列文章算是对念茜iOS攻防系列的一个补充,中间细节的地方也会写的更加详尽。

你需要一部越狱手机

首先要做的事,找一部越狱后的iPhone,攻防方面的探索很多需要借助越狱手机的帮助。作为平常的消遣和研究你也应该有一部越狱手机,我的越狱手机是iPhone4,比较古老,但是研究够用了。

前期准备

首先是手机(前面说过了)。其次,越狱手机大家都知道一个app——Cydia,在上面可以下载所有的越狱APP,相当于越狱后的app store。对于iOS攻防,首先需要以下软件:

  1. openSSH
  2. LLVM+Clang

可能还需要的软件:

  1. Cydia Translations
  2. Cydia Substrate
  3. Cydia Installer

这些软件都可以在Cydia下载到,如果你搜索不到,那么你需要添加一些源
在Cydia的软件源中点击『编辑』->『添加』,依次添加以下源

  1. http://yuan.duowan.com - 多玩源
  2. http://apt.thebigboss.org/repofiles/cydia/
阅读全文 »

1. MVVM简介

不过多赘述MVC,用最通俗的方式解说MVVM。

  1. 拆解:
    1. M: Model ,包括数据模型、访问数据库的操作和网络请求等
    2. V: View ,包括了iOS中的 Viewcontroller 组成,负责 UI 的展示,绑定 viewModel 中的属性
    3. VM: ViewModel ,负责从 Model 中获取 View 所需的数据,转换成 View 可以展示的数据,并暴露公开的属性和命令供 View 进行绑定
    4. Binder:这是我最近发现的,在标准MVVM中没有提到的一部分,但是如果使用MVVM + ReactiveCocoa就会自然地写出这一层。这一层主要为了实现响应式编程的功能,实现 ViewViewModel 的同步
阅读全文 »

由于 CFCore Foundation 歧义,更名前缀为 ZLY

最近通过前辈,学着做了一个水波效果工具共享出来,github连接

简介

ZLYWaterWave是一个简单好用的iOS水波效果工具,可以让你的APP更加好看有趣

ZLYWaterWave效果展示

原理简介

ZLYWaterWave的原理很简单,我们用Example里的工程做简介。(这里首先要感谢@hy,我敬爱的前辈,最初是从他这里学习的水波效果原理)

白色图片
红色图片
叠加添加遮盖效果

  1. 首先准备两张图片
  2. 将两张图放在重叠的位置
  3. 将其中一张图片加上波浪形的遮盖
  4. 如果波浪形的遮盖是动态再变化的的,就可以形成动态的波浪
  5. ZLYWaterWave就是为你提供好了动态波浪的Path,你只需要在回调中加入遮盖即可
  6. 如果你还是晕晕的,那就直接看Example吧,相信你瞬间就会明白的
阅读全文 »

官方参考

  1. react-native github
  2. react-native 中文文档
  3. node.js
  4. nvm
  5. watchman
  6. flow

环境搭建

Node.js安装

  1. nvm istall
    • 输入命令curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
    • 如果你希望卸载nvm,你可以输入命令$ npm uninstall -g a_module
  2. 输入命令nvm install node && nvm
  3. 使nvm生效:. ~/.nvm/nvm.sh
  4. 安装Node.jsnvm install node && nvm alias default node
阅读全文 »

前段时间根据产品经理的要求给我们输入密码的部分加了明文/密文切换,中间也遇到了一些颇有意思的问题。其中也有些很难查到资料。

在这里记录下来,也供大家参考,避免大家重复踩坑。

情景描述

明文/密文切换,就是输入密码的时候可以选择明文显示还是**这样的显示。

右侧的按钮可以切换明文、密文模式

阅读全文 »

问题重现

最近在做项目的时候,我们选择了一个可以下载 iClould 图片的三方 Picker——CTAssetsPickerController,这个 Picker 会根据不同系统版本,返回不同类型的图片资源。

iOS8 之前,访问系统照片视频使用的是 AssetsLibrary 框架,iOS8之后有了新的系统框架 PhotoKit,这一框架对 iCloud 选图有很好的支持。

AssetsLibrary 的图片资源类型是 ALAsset,而 PhotoKit 的图片资源类型是 PHAsset。

如果通过 PHAsset 获取图片资源,可以调用以下方法:

1
2
3
4
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(pixelWidth, pixelHeight) contentMode:PHImageContentModeAspectFit options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
// 回调部分

}];
阅读全文 »

1. JSPatch

简介

JSPatch是由国内一位年轻帅气的大牛bang编写的极小的JS引擎文件

这个开源项目(主页Github连接),让你只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法。

我了解这个项目的原因是因为项目的大神率先用了这个Mini引擎解决了我们线上BUG的燃眉之急,当我去学习这个引擎的时候,我觉得我的移动编码观被震撼了,这绝对是有重大意义的项目,所以推荐给所有还不了解人

JSPatch解决了什么问题

JSPatch可以调用一段JS替换OC原生方法。而最关键的是JSPatch调用的JS不仅可以是本地的,还可以是网络请求来的。

试想一下,当你的项目已经上线了,用户反馈给你一堆BUG,作为一个优秀的程序员,你一定会第一时间修正BUG并且在一定修复量之后发布新的版本。但是问题是:你的用户不一定会更新新版本的app。

这里暴露了移动端的一个弊端:不能像服务器端一样实时发布,即使修复了BUG用户却可以不选择更新。

而JSPatch由于可以从网络请求JS替换你原本的代码,你可以在在服务器端设置一个借口获取一个JS文件,当你的项目出现问题是,你可以通过向JS文件中编写代码来实时修复你的BUG。所以JSPatch可以完美的实时修复线上bug。

阅读全文 »

转到移动端开发后居然现在才用到Scheme真是惭愧惭愧。

URL Scheme是什么

相信大家都知道URL。

http://www.apple.com就是一个URL。

而://之前的部分就称为Scheme

(所以,你看,其实并没有什么难的,在这里多插一句给新人的话:不要看到新东西就觉得难,其实很多时候难的就是在于你看到新事物而不敢去研究)

也就是说http://www.apple.com的Scheme就是http。

iOS中的URL Scheme

iOS中的Scheme也是一样的,无非是定义应用自己的Scheme,然后定义一些自己的URL解析,就好像YourApp://OneController?username=xxx&userInput=xxx

有了这些URL Scheme你可以像网页跳转一样通过URL来传递参数、信息。

比如常见的分享功能,从其他应用点击微信分享,会自动跳转到微信APP的朋友圈发表动态页面,并填好相应的动态内容。你可以想象一下其URL Scheme可能是这样的:weixin://dl/moments?content=”今天在学习URL Scheme”&src=”lottyzhou.com”(我只是举个例子)

有一点需要注意的是,和Web开发不同,iOS中并不是所有的页面或者操作都有URL Schemes,这完全是由你主导的的,如果你需要,你就可以自己定义一些,并去解析。

自定义你应用的Scheme

阅读全文 »