某视频客户端逆向实践

最近看完了《iOS应用逆向工程分析与实战》,当你手里拿着锤子的时候,整个世界都成了钉子,所以迫不及待的想练练手。正好最近在某视频客户端上跟美剧,有时候想缓存下来离线看,但是由于版权原因,很多视频都不能缓存,所以今天逆向实践的主要目标就是能够缓存有版权的视频。

有人可能会问:你怎么就知道一定能够实现这个目标,万一带版权的视频压根儿就没有提供下载地址你怎么缓存啊?问得好,其实在拿到逆向这把锤子之前,我靠着纯体力已经能够下载到追的美剧了。使用Charles抓包工具获取到剧集的信息(关于Charles的使用可以看这里),即使有版权的视频也会有download_url字段,然后将每个下载地址复制到迅雷里面下载。还好有了这段痛苦的经历,让我知道今天逆向的目标是可实现的。

查看更多

Logos

Logos作为Theos开发组件的一部分,通过一组特殊的预处理指令,可以让编写函数钩子(hook)代码变得非常简单和清晰。

Logos提供的语法大大的简化了MobileSubstrate拓展程序(tweaks,能够hook系统中其他方法)的开发,这里所说的“Method hooking”是指通过替换或修改的方式改变其他应用中某些类的某些方法。

Logos是随着Theos发布的,你能够在用Theos创建的项目中直接使用Logos的语法。更多关于Theos的信息,请查看这里

查看更多

Method Swizzling

本文翻译自NSHipster的文章Method Swizzling

在上周associated objects一文中,我们开始探索Objective-C运行时的一些黑魔法。本周我们继续前行,来讨论可能是最受争议的运行时技术:method swizzling。


Method swizzling指的是改变一个已存在的选择器对应的实现的过程,它依赖于Objectvie-C中方法的调用能够在运行时进改变——通过改变类的调度表(dispatch table)中选择器到最终函数间的映射关系。

查看更多

Associated Objects

本文翻译自NSHipster的文章Associated Objects

1
#import <objc/runtime.h>

Objective-C开发者在遇到上面这条“咒语”相关的一些东西时,会不自觉的变的非常谨慎。一个主要原因是:弄乱Objective-C运行时可能会改变整个实现结构,因为所有的代码都是运行在它之上的。

一方面:<objc/runtime.h>中的函数可以给应用或者框架增加强大的新特性,这是通过其他方式不可能做到的。但另一方面:它会改变代码的正常运行逻辑和所有与之交互的东西(通常伴随着可怕的副作用)。

因而,这是我们认为进行这种魔鬼交易最大的恐惧点,下面来看一个NSHipster读者问得最多的一个主题:associated objects。

查看更多